Getting your API key
Each publisher website requires a unique API key, which you can obtain from your Publisher account.
Querying the API
Authentication
Basic authentication is used to access this API. This means you will need to add an Authorization header to each request for access. The basic auth user name is your API key, and the basic auth password is an empty string.
The format of the Authorization header is:
Authorization: Basic {credentials}
where '{credentials}' is the Base64-encoded string of the API key followed by colon.
Endpoint and parameters
The API endpoint is https://search.api.careerjet.net/v4/query and exposes the below HTTP GET parameters.
| Parameter name | Values | Comments |
|---|---|---|
locale_code |
[language_code]_[COUNTRY_CODE] |
The value must match the list of supported locale codes. Defaults to en_GB if not specified. |
keywords |
string |
a list of one or more URL-encoded search terms |
location |
string |
the search location; when not specified, indicates country-wide search |
contract_type |
|
the contract type |
work_hours |
|
working hours |
fragment_size |
integer |
the job excerpt size in characters, defaulting to 120 |
sort |
|
determines the sort order, defaulting to 'relevance' |
offset |
integer |
from 1 to 999, defaulting to 0 |
page |
integer |
from 1 to 10 |
page_size |
integer |
from 1 to 100, defaulting to 20 |
radius |
integer |
defaulting to 5 km/miles depending on location |
user_ip |
string |
required: the IP address of the user whose action(s) triggered the API call |
user_agent |
string |
required: the user agent string of the user whose action(s) triggered the API call |
Response types
Success
A successful request will result in a HTTP 200 JSON response, whose overall structure is the following:
{
"type": 'JOBS',
"hits": 62,
"message": "62 matching jobs found",
"pages": 4,
"response_time": 0.322,
"jobs" [List of jobs: see below]
}
Error responses
Improper requests will result in various HTTP error status code and a minimal response body indicating the error type and details, if any. Below is an overview of the potential errors encountered:
| HTTP Code | Message | Comments |
|---|---|---|
400 |
Unsupported locale code |
The provided locale code is not supported. |
403 |
Missing param user_ip or user_agent |
The request did not include the user_ip or user_agent parameters. |
Location mode
Not strictly an error, but a situation that will prevent any actual search from happening. Location mode is triggered as described below:
| Message | Comments |
|---|---|
no matching location found |
No location could be found matching the provided location parameter. |
Example
{
"type": "LOCATIONS",
"locations": [],
"message": "no matching location found",
"response_time": 0.11
}
| Message | Comments |
|---|---|
multiple locations found |
Several locations matched the provided location parameter. You can then opt to pick one from the provided list locations. |
Example
{
"type": "LOCATIONS",
"locations": ["choice 1", "choice 2", "choice 3"],
"message": "multiple locations found",
"response_time": 0.11
}
Job structure
Each job is structured as follows:
{
'title': 'Python Developer',
'company': 'BBC',
'date': 'Wed,15 Nov 2025 19:13:43 GMT',
'description': 'Job description excerpt',
'locations': 'London',
'salary': 'GBP 30000 - 33000 per year',
'salary_currency_code': 'KYD',
'salary_max': xx.yy,
'salary_min': xx.yy,
'salary_type': 'Y',
'site': 'domain.com',
'url': 'https://jobviewtrack.com/v2/unique link'
}
Where salary_type can be:
Y: yearlyM: monthlyW: weeklyD: dailyH: hourly