Job feed API (v1) · New Jobs
Active jobs
Open postings first indexed within the time window, from company career sites, hiring platforms and public employment services, with filtering, full-text search, date ranges, pagination and field selection.
GET /api/v1/active-jobs
Query parameters
Window
time_framestring · enumrequired1h (hourly polling), 24h (daily, the default), 7d (a week), 6m (every open posting, for a backfill). Counts also accept 1m: everything indexed in 31 days, closed or not. No ingestion delay: a posting is in the window the moment it is indexed. Every window holds only postings their source still lists; roles first posted more than 12 months ago are left out.
Enum values:
1h24h7d6mDefault:
24hPagination
limitinteger · int32Postings per response, 1 to 1000. Default 100.
Default:
100offsetinteger · int32Postings to skip, up to 100,000. Keep adding
limit until a page comes back shorter than limit.Default:
0cursorinteger · int64The last
id you received; returns the next postings by id ascending. Best for backfills; every response also carries it in the X-Last-Id header. Wins over offset.Response
description_formatstring · enumtext or html to include the full description (and requirements). Left out by default because it is large.
Enum values:
texthtmlinclude_page_textbooleantrue: also the complete text read from the original posting page.
Enum values:
truefalseDefault:
falseformatstring · enumjson (an array, the default), jsonl, csv, or md (Markdown for language models;
chars limits text per posting).Enum values:
jsonjsonlcsvmdDefault:
jsonfieldsstring · comma-separatedComma-separated list of the fields to return, e.g.
id,title,url.schemastring · enumThe output layout. Default: the universal job-feed layout (
ai_* names for derived fields, salary / employment_type as the source states them), so code written for other job feeds works unchanged; the values are still derived by rules from the posting. native: this index's own names (no ai_ prefix).Enum values:
fantasticnativeDefault:
fantasticinclude_basic_organization_detailsbooleantrue: the employer's profile inline (industry, headcount, headquarters, legal entity id, open and new postings).
Enum values:
truefalseDefault:
falseinclude_betabooleantrue: also the standard occupation of each posting,
classification_onet (O*NET-SOC 2019), classification_soc (SOC 2018) and classification_isco (ISCO-08), each {id, name}, matched by rules against O*NET's official title lists (English titles; null when no title matches), and locations_derived_structured (each place as lat, lon, locality, county, region, country, country_code, continent, timezone).Enum values:
truefalseDefault:
falseorder_bystring · enumdate_created (default, newest first), date_posted or salary.
Enum values:
date_createddate_postedsalaryDefault:
date_createdinclude_duplicatesbooleantrue: also the same opening found on a second channel.
Enum values:
truefalseDefault:
falseText search
titlestringGoogle-style search of the title:
software engineer (both words), "software engineer" (phrase), python OR rust, -senior (exclude).descriptionstringThe same syntax over the title and the complete description.
locationstringThe same syntax over the location, raw and normalised:
Munich also finds München; "London, England, United Kingdom"; "United States" OR Canada.title_advancedstringBoolean:
& and, | or, ! not, <-> followed by, <N> within N words, 'exact phrase', manag:* prefix, parentheses. E.g. (python | rust) & senior & !staff.description_advancedstringBoolean expression over title and description.
location_advancedstringBoolean expression over the location:
Germany & !(Berlin | Munich).organization_advancedstringBoolean expression over the employer's name.
skillstringComma-separated skills, all required:
Python,SQL.Dates
date_posted_gtestring · date-timePosted on or after (ISO 8601, UTC).
date_posted_ltstring · date-timePosted before.
date_created_gtestring · date-timeFirst indexed on or after: the safe cursor for incremental syncs.
date_created_ltstring · date-timeFirst indexed before.
Source
sourcestringComma-separated sources: greenhouse, lever (or lever.co), ashby, workday, oracle, smartrecruiters, workable, recruitee, personio, bamboohr, teamtailor, breezy, adp, arbeitsagentur, eures, career_site. See Supported sources.
exclude_sourcestringSources to leave out.
source_typestring · enum · comma-separatedats, career_site, public_employment_service.
Enum values:
atscareer_sitepublic_employment_serviceEmployer
organizationstringExact employer names, comma-separated.
exclude_organizationstringEmployers to leave out.
domainstringEmployer domains:
nvidia.com,microsoft.com.exclude_domainstringDomains to leave out.
organization_agencystring · enumonly staffing / placement agencies, or exclude them (direct employers only).
Enum values:
onlyexcludeorganization_industrystringSector, e.g. technology, finance, healthcare.
organization_sizestring · enum · comma-separatedCompany size buckets, comma-separated:
1, 2-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+.Enum values:
12-1011-5051-200201-500501-10001001-50005001-1000010001+organization_headcount_gteintegerAt least this many employees.
organization_headcount_ltintegerFewer than this many employees.
company_countrystringEmployer's home country (ISO code).
Derived
experience_levelstring · enum · comma-separated0-2, 2-5, 5-10, 10+ years (also as
ai_experience_level).Enum values:
0-22-55-1010+work_arrangementstring · enum · comma-separatedOn-site, Hybrid, Remote OK, Remote Solely.
Enum values:
On-siteHybridRemote OKRemote Solelyemployment_typestring · enum · comma-separatedFULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER.
Enum values:
FULL_TIMEPART_TIMECONTRACTORTEMPORARYINTERNVOLUNTEERlanguagestringLanguage the posting is written in: English, German, French, Spanish…
educationstring · enum · comma-separatedhigh school, associate degree, bachelor degree, postgraduate degree.
Enum values:
high schoolassociate degreebachelor degreepostgraduate degreetaxonomiesstringJob function, e.g.
Software Engineering, Data & AI, Sales (also ai_taxonomies_a, function).exclude_taxonomiesstringFunctions to leave out.
visa_sponsorshipstring · enumonly postings that offer sponsorship, or exclude them.
Enum values:
onlyexcludesenioritystring · enum · comma-separatedinternship, entry, mid, senior, lead, manager, director, executive.
Enum values:
internshipentrymidseniorleadmanagerdirectorexecutiveOther
has_salarybooleantrue: only postings that state pay.
Enum values:
truefalseDefault:
falsesalary_mininteger · per yearMinimum yearly pay (hourly, daily, weekly and monthly pay are converted).
currencystringUSD, EUR, GBP…
countrystringISO country codes of the job's location:
US,CA.has_no_locationbooleantrue: only postings without a recognisable place.
Enum values:
truefalseDefault:
falsefull_text_onlybooleantrue: only postings whose complete text is stored.
Enum values:
truefalseDefault:
falseidinteger · comma-separatedPosting ids, comma-separated.
no_collectstringtrue: a search with few results does not trigger an automatic collection.
Response 200 · application/json
Default layout. With schema=native the ai_ prefix is dropped and salary_raw / employment_type_raw hold the source's own text. Employer profile fields (org_industry, org_headcount…) come with include_basic_organization_details=true.
| Field | Type | Description |
|---|---|---|
id | integer | Stable posting id. |
date_posted | string · date-time | When the source says it was posted. |
date_created | string · date-time | When it was first indexed. Monotonic: use it for incremental syncs. |
date_last_seen | string · date-time | When it was last confirmed open. |
title | string | Title as posted. |
organization | string | Employer. |
organization_url | string · uri | null | Employer's website. |
date_valid_through | string | null | Closing date, when the source states one. |
locations | array<Place> | null | Raw location, JobPosting-style. |
location_type | string | null | TELECOMMUTE when remote. |
salary | string | null | Pay as the posting states it. |
employment_type | string | null | Employment type as the source states it. |
url | string · uri | The exact original posting. |
apply_url | string · uri | Where to apply. |
source_type | string · enum | ats, career_site or public_employment_service. |
source | string | Platform or service. |
source_domain | string | Host of the posting URL. |
source_slug | string | null | The employer's board on that platform. |
cities_derived | array<string> | null | Normalised cities. |
counties_derived | array<string> | null | Counties. |
regions_derived | array<string> | null | Regions / states. |
countries_derived | array<string> | null | Countries. |
country_codes_derived | array<string> | null | ISO country codes. |
locations_derived | array<string> | null | "City, Region, Country" in English. |
timezones_derived | array<string> | null | IANA time zones. |
lats_derived | array<number> | null | Latitudes. |
lngs_derived | array<number> | null | Longitudes. |
domain_derived | string | null | Employer domain. |
ai_salary_currency | string | null | ISO currency. |
ai_salary_value | number | null | A single amount. |
ai_salary_min_value | number | null | Lower end of a range. |
ai_salary_max_value | number | null | Upper end. |
ai_salary_unit_text | string · enum | null | HOUR, DAY, WEEK, MONTH, YEAR. |
ai_benefits | array<string> | null | Benefits the posting names. |
ai_experience_level | string · enum | null | 0-2, 2-5, 5-10, 10+. |
years_experience | integer | null | Years asked for. |
seniority | string | null | internship … executive. |
ai_work_arrangement | string · enum | null | On-site, Hybrid, Remote OK, Remote Solely. |
ai_work_arrangement_office_days | integer | null | Office days a week (hybrid), when stated. |
ai_remote_location | array<string> | null | Countries a remote role is open to. |
ai_key_skills | array<string> | null | Skills the posting names. |
ai_core_responsibilities | string | null | The posting's own duties section, verbatim. |
ai_requirements_summary | string | null | The posting's own requirements section, verbatim. |
ai_working_hours | number | null | Hours a week, when stated. |
ai_employment_type | array<string> | null | FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER. |
ai_job_language | string | null | Language of the posting. |
ai_visa_sponsorship | boolean | null | Whether the posting offers sponsorship, when it says. |
ai_keywords | array<string> | null | Title words, function, department and skills. |
ai_taxonomies_a | array<string> | null | Job function. |
ai_education | array<string> | null | Degree level asked for. |
department | string | null | Department. |
apply_effort | string · enum | null | quick or lengthy. |
full_text | boolean | The complete text is stored. |
details | object | null | Every other fact the source gave. |
org_id | integer | Employer id. |
org_slug | string | Slug for /api/company/{slug}. |
org_industry | string | null | Sector. |
org_headcount | integer | null | Employees. |
org_headquarters_country | string | null | HQ country. |
org_headquarters_city | string | null | HQ city. |
org_lei | string | null | Legal Entity Identifier. |
org_open_jobs | integer | Employer's open postings. |
org_new_jobs_7d | integer | New this week. |
org_recruitment_agency_derived | boolean | Staffing / placement agency. |
date_modified | string · date-time | null | When a tracked field changed upstream. |
modified_fields | array<string> | null | Which fields changed. |
description_text | string | Full description (description_format=text). |
description_html | string | Description as HTML (description_format=html). |
requirements_text | string | null | Requirements section. |
page_text | string | null | Full text of the original page (include_page_text). |
locations_derived_structured | array<object> | null | Each place as lat, lon, locality, county, region, country, country_code, continent, timezone (include_beta). |
classification_onet | object | null | O*NET-SOC 2019 occupation {id, name}, e.g. {"id": "15-1252.00", "name": "Software Developers"} (include_beta; rule-matched from the title). |
classification_soc | object | null | SOC 2018 detailed occupation {id, name} (include_beta). |
classification_isco | object | null | ISCO-08 unit group {id, name}, e.g. {"id": "2512", "name": "Software developers"} (include_beta). |
org_size | string | null | Company size bucket: 1, 2-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+ (include_basic_organization_details). |
locations_alt | array | null | Always null (kept for layout compatibility). |
location_requirements | array | null | Always null (kept for layout compatibility). |
organization_logo | string | null | Always null (kept for layout compatibility). |
ai_hiring_manager_name | string | null | Always null: not collected. |
ai_hiring_manager_email_address | string | null | Always null: not collected. |
Errors
400 a parameter is not understood (the message names it) · 404 no such endpoint · 429 slow down · 503 the query would scan too much: add a filter or a shorter window.