Skip to content

Search Parameters

Every GET "search" endpoint in the PCRecruiter API (for example, GET /candidatesV2, GET /companiesV2, GET /positionsV2) accepts the same set of query-string parameters for filtering, paging, sorting, and shaping the response. This page documents them once; individual endpoint pages link here rather than repeating the table.

For the query syntax itself (operators such as eq, co, sw, logical AND/OR, grouping, and escaping), see Search References.

Parameter Reference

ParameterTypeRequiredDefaultDescription
QuerystringNo(none — returns all records)A filter expression using the relational and logical operators described in Search References. Example: status eq candidate AND title sw sales. When omitted, the endpoint returns all records the session is permitted to see.
PageintegerNo1The page of results to return. The first page is 1 (paging is one-based). Used together with ResultsPerPage to page through large result sets.
ResultsPerPageintegerNo25The number of records to return per page. The default is 25 and the maximum is 500 — a request for more than 500 is silently clamped to 500, so build paging loops against that ceiling.
OrderstringNo(server default order)Field(s) to sort the results by. Append ASC or DESC to set direction (ascending is the default if omitted), e.g. Order=DateEntered DESC. Specify multiple sort fields as a comma-separated list, e.g. Order=LastName ASC,DateEntered DESC.
GroupBystringNo(none)Collapse the result set to one record per group. Uses a byfirst clause to choose which record survives each group: GroupBy=<groupField> byfirst <orderField> ASC|DESC. The response shape is unchanged (the same record list, just deduplicated) — no grouping metadata is added. Example: GroupBy=CandidateId byfirst AppointmentDate DESC returns one row per candidate, keeping the row with the latest AppointmentDate.
FieldsstringNo(endpoint's standard field set)Comma-separated list of fields to return, replacing the default set. Use this when you want an explicit, minimal payload. Example: Fields=CandidateId,FirstName,LastName,EmailAddress.

Paging Through Results

Each search response includes a TotalRecords field at the root of the body alongside the Results array — the total number of records matching the query across all pages, not just the current page. Divide it by ResultsPerPage to compute the page count up front, rather than fetching until you get a short page.

json
{
  "TotalRecords": 247,
  "Results": [ /* up to ResultsPerPage records */ ]
}

The count lives in the response body as TotalRecords; there is no X-Total-Count (or equivalent) response header.

You can still page by incrementing Page until a response returns fewer than ResultsPerPage records (or an empty result set):

bash
# Page 1
GET /candidatesV2?query=status eq candidate&Page=1&ResultsPerPage=100

# Page 2
GET /candidatesV2?query=status eq candidate&Page=2&ResultsPerPage=100

Worked Example

Return the second page of 50 candidates whose title contains "engineer", sorted by the date they were entered (newest first), returning only the listed fields:

bash
curl -X GET "https://www2.pcrecruiter.net/rest/api/candidatesV2?query=Title%20co%20engineer&Order=DateEntered%20DESC&Page=2&ResultsPerPage=50&Fields=CandidateId,FirstName,LastName,Title,DateEntered" \
  -H "Authorization: Bearer {SessionId}" \
  -H "Accept: application/json"

URL-encode your query

Spaces and special characters in the Query value must be URL-encoded (a space becomes %20). Parentheses used for grouping only need encoding where your HTTP client requires it.