Skip to content

List workers

GET
/v1/workers
curl --request GET \
--url 'https://api2.recruso.co.uk/v1/workers?pageNumber=1&pageSize=25&name=baker&email=alice.baker%40example.co.uk&workerNumber=10432&branchId=4&workerStatusTypeId=3&sortColumn=surname&sortOrder=asc' \
--header 'Authorization: <Authorization>'

Returns a paged list of the workers in your own agency. Sent without filters it lists them all; with filters it is how you find a worker — by name, email address, worker number, branch or current status. Filters combine, so a worker must match every one you send.

Each entry is a summary rather than the full record: who the worker is, how they are engaged — branch, cost centre, worker type, status, rating and transport — and how to reach them. Call GetWorkerById for one worker’s complete details; tax, bank and compliance details never appear in this list.

name matches case-insensitively on any part of the forename, surname or known-as name, or of the full name, so john smi finds John Smith. email is a case-insensitive match on the whole address: part of an address matches nothing. workerNumber and branchId are exact matches. workerStatusTypeId matches the worker’s current status, as an id from the worker status types vocabulary; an id that does not exist returns 400.

Workers who have left and workers engaged through a subcontractor are included. A worker whose record has been GDPR-deleted never appears, and neither does a worker registered against a branch the Recruso user behind your API app cannot access — even when branchId names that branch.

Results are paged: 25 per page by default, capped at 100. pageNumber below 1 is treated as 1. Sort with sortColumn (surname, forename, workernumber, createdon or modifiedon) and sortOrder (asc or desc); an unrecognised column sorts by surname.

Access. Requires a client-credentials access token. Tokens issued through the interactive user login are rejected.

pageNumber

Page number, 1-based. Defaults to 1; anything below 1 is treated as 1.

integer format: int32
Example
1

Page number, 1-based. Defaults to 1; anything below 1 is treated as 1.

pageSize

Number of workers per page. Defaults to 25, capped at 100.

integer format: int32
Example
25

Number of workers per page. Defaults to 25, capped at 100.

name

Case-insensitive partial match on the forename, the surname, the known-as name or the full name, so “john smi” finds John Smith.

string
nullable
Example
baker

Case-insensitive partial match on the forename, the surname, the known-as name or the full name, so “john smi” finds John Smith.

email

Case-insensitive match on the whole email address. Part of an address matches nothing.

string
nullable
Example
alice.baker@example.co.uk

Case-insensitive match on the whole email address. Part of an address matches nothing.

workerNumber

Exact match on your agency’s worker number.

integer format: int32
nullable
Example
10432

Exact match on your agency’s worker number.

branchId

Exact match on the branch the worker is registered against.

integer format: int16
nullable
Example
4

Exact match on the branch the worker is registered against.

workerStatusTypeId

The worker’s current status, as an id from the platform Worker status types vocabulary. An id that does not exist returns 400.

integer format: int16
nullable
Example
3

The worker’s current status, as an id from the platform Worker status types vocabulary. An id that does not exist returns 400.

sortColumn

Column to sort by: surname, forename, workernumber, createdon or modifiedon. Defaults to surname, and an unrecognised value falls back to surname rather than failing.

string
nullable
Example
surname

Column to sort by: surname, forename, workernumber, createdon or modifiedon. Defaults to surname, and an unrecognised value falls back to surname rather than failing.

sortOrder

Sort direction: asc (the default) or desc.

string
nullable
Example
asc

Sort direction: asc (the default) or desc.

OK

Media typeapplication/json
object
data
Array<object>

One worker in a list: who they are, how they are engaged and how to reach them. Call GetWorkerById for the full record — this summary never carries tax, bank or compliance details.

object
workerId

The worker’s surrogate identifier. Use this on subsequent worker endpoints.

integer format: int32
workerNumber

The worker’s human-facing reference, allocated from your agency’s own worker number sequence at creation.

integer format: int32
forename

The worker’s first name.

string
surname

The worker’s family name.

string
knownAs

What the worker prefers to be called, when it differs from their forename.

string
nullable
birthDate

The worker’s date of birth.

string format: date
branchId

The branch the worker is registered against.

integer format: int16
costCentreId

The cost centre the worker is booked against.

integer format: int16
nullable
workerTypeId

The worker’s engagement type, as an id from the platform Worker types vocabulary.

integer format: int16
nullable
workerStatusTypeId

The worker’s current status, as an id from the platform Worker status types vocabulary. Null for a worker who has never been given one.

integer format: int16
nullable
workerRating

The worker’s rating, on a 1-10 scale.

integer format: int16
nullable
transportId

How the worker travels to work.

integer format: int16
nullable
town

The town or city of the worker’s home address.

string
nullable
county

The county of the worker’s home address.

string
nullable
postalCode

The postcode of the worker’s home address.

string
nullable
mobile

The worker’s mobile number.

string
nullable
email

The worker’s email address.

string
nullable
createdOn

When the worker was created, in UK local time.

string format: date-time
nullable
modifiedOn

When the worker’s details were last updated, in UK local time. Null until they have been.

string format: date-time
nullable
pageNumber
integer format: int32
pageSize
integer format: int32
totalCount
integer format: int32
pageCount
integer format: int32
nextPage
string
nullable
previousPage
string
nullable
Example
{
"data": [
{
"workerId": 4821,
"workerNumber": 10432,
"forename": "Alice",
"surname": "Baker",
"knownAs": "Ali",
"birthDate": "1990-04-12",
"branchId": 4,
"costCentreId": 3,
"workerTypeId": 1,
"workerStatusTypeId": 3,
"workerRating": 8,
"transportId": 2,
"town": "Manchester",
"county": "Greater Manchester",
"postalCode": "M1 1AA",
"mobile": "07700 900123",
"email": "alice.baker@example.co.uk",
"createdOn": "2026-08-14T09:41:02",
"modifiedOn": "2026-09-02T15:08:47"
}
]
}

Bad Request

Media typeapplication/problem+json
object
type
string
nullable
title
string
nullable
status
integer format: int32
nullable
detail
string
nullable
instance
string
nullable
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Unauthorized

Media typeapplication/problem+json
object
type
string
nullable
title
string
nullable
status
integer format: int32
nullable
detail
string
nullable
instance
string
nullable
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}

Forbidden

Media typeapplication/problem+json
object
type
string
nullable
title
string
nullable
status
integer format: int32
nullable
detail
string
nullable
instance
string
nullable
Examplegenerated
{
"type": "example",
"title": "example",
"status": 1,
"detail": "example",
"instance": "example"
}