Search and filter jobs across all companies you are tracking. q is required; every other parameter is optional and they can be combined. Results are paginated, 10 jobs per page. To pass several values for a list parameter, repeat it (e.g. job_types=FullTime&job_types=Permanent). An invalid request, such as a missing q, returns 400 Bad Request with a message.
https://recuity.ai/api/v1/jobs
Query: keyword and location
Parameter
Type
Required
Description
q
String
Yes
Job search query, 1 to 100 characters
location
String
No
Location (e.g. Amsterdam), up to 50 characters
cc
String
No
ISO2 country code (e.g. GB, US)
distance
Number
No
Kilometres from location, above 0 and capped at 100 (ignored if no location)
Retrieve full details for a specific job, including the complete job description in HTML format. Returns 404 Not Found if no job with that ID is found for your workspace.
https://recuity.ai/api/v1/jobs/{job_id}/details
Path parameters
Parameter
Type
Required
Description
job_id
String
Yes
Unique job identifier from the job search response
Example request
curl -X GET \
"https://recuity.ai/api/v1/jobs/692b28c40d5a1bfeb891e362/details" \
-H "X-API-Key: YOUR_API_KEY"
Full job description in encoded HTML, ready for display in a web UI
job_url
String
Job posting URL
location_names
Array
Array of location names associated with the job
posted_date
String
Job posting date (ISO 8601)
closing_date
String
Application closing date (nullable, ISO 8601)
job_types
Array
Employment types
location_type
String
Onsite, Hybrid, Remote
company_type
String
Company type
job_attributes
Array
Additional job attributes
company_summary
String
Brief summary about the company
industry_sectors
Array
Industry sectors
required_skills
Array
List of required skills
seniority_level
String
Required seniority level
job_function
String
Job function / department
min_required_experience
Number
Minimum years of experience
max_required_experience
Number
Maximum years of experience
required_education
Array
Required education qualifications
certifications
Array
Required certifications
languages
Array
Required languages
min_salary
Number
Minimum salary (nullable)
max_salary
Number
Maximum salary (nullable)
salary_currency
String
Salary currency code
salary_period
String
Salary period (e.g. per-year)
JSONL export
GET/api/v1/jobs/export
Bulk export all tracked jobs as a compressed JSON Lines file. The endpoint returns a pre-signed download URL rather than the data itself.
Search or export? Use job search when you need a filtered slice of jobs on demand: a query, a location, a page of results. Use the export when you want the whole tracked dataset to load into your own database or pipeline, and re-run it periodically with If-Modified-Since so you only download when something changed.
https://recuity.ai/api/v1/jobs/export
Optional header
Header
Type
Required
Description
If-Modified-Since
DateTime
No
Returns 304 if no jobs updated since this time. Format: Fri, 20 Jan 2026 10:00:00 GMT
Example request
curl -X GET \
"https://recuity.ai/api/v1/jobs/export" \
-H "X-API-Key: YOUR_API_KEY" \
-H "If-Modified-Since: Fri, 20 Jan 2026 10:00:00 GMT"
import requests
response = requests.get(
"https://recuity.ai/api/v1/jobs/export",
headers={
"X-API-Key": "YOUR_API_KEY",
"If-Modified-Since": "Fri, 20 Jan 2026 10:00:00 GMT"
}
)
if response.status_code == 304:
# Nothing has changed since If-Modified-Since; there is no body to read.
print("No new jobs")
else:
result = response.json()
download_url = result["url"]
URL expiration timestamp (ISO 8601). Download must complete before this time.
jobs_updated_at
String
Timestamp when the job data was last updated (ISO 8601)
File format
JSON Lines (.jsonln.gz), gzip-compressed. Each line is a complete JSON job object, so process line-by-line rather than loading the file as a JSON array.
HTTP response codes
Code
Description
200 OK
Success. Returns export URL with job data.
304 Not Modified
No jobs modified since the If-Modified-Since timestamp.