List Jobs
Returns a page of normalized job listings matching your filters, each with title, location, salary, company, and more (see the schema below). Lists are paginated with opaque cursors rather than page numbers: the response includes pagination.limit, pagination.next_page, and pagination.prev_page. There is no page query parameter.
sort_by as before, and pass the token from the last response's next_page or prev_page back on the following request. The direction is baked into the token itself, not into which name you send it as — cursor, next_page, and prev_page are three interchangeable names for the same query parameter; whichever you use, the API reads whatever token you passed and moves in the direction it encodes.application_url is left out of every job in the response — use GET /jobs/:id/apply to unlock it for a specific job. Every other plan gets it directly, as shown below.published_after (ISO 8601), the API does not apply max_age for the same request. Use published_after for a strict calendar lower bound; use max_age for a rolling window (e.g. 7d).Full copy-paste types (including the FilterApplied union) live on the API types (TypeScript).
Allowed tokens for fields, exclude_fields, and extra_fields: id, title, location, locations, application_url, published, has_remote, remote_type, is_active, expired_at, language, employment_type, salary_min, salary_max, salary_currency, salary_text, experience_level, experience_levels, company, description
Query Parameters
Search & Keywords
titlestringsoftware engineersearchstringsoftware engineersort_bystringrelevanceGeographic Filtering
Pro Tip: Use the Geo Suggest API to find IDs for 100% accuracy.
city_idnumber5391959state_idnumber5332921country_idnumber233locationstringUS,CAremotebooleantrueremote_typestringfully_remoteCompany
company_namestringStripeemployer_idstringa1B2c3, x9Y8z7company_website_urlstringstripe.comdomainstringacme.comField selection (list only)
Default list responses return a summary set of columns (no full description). Use the parameters below to trim or extend the payload. Unknown field names are ignored.
fieldsstringid,title,company,publishedinclude_fieldsstringid,title,companyextra_fieldsstringdescriptionexclude_fieldsstringdescription,companycountbooleantrueCompensation & Seniority
salarystring100000,150000min_salarynumber100000require_salarybooleantrueexperience_levelstringSE,EXemployment_typestringFULL_TIME,CONTRACTFreshness & Pagination
published_afterstring2024-05-01T00:00:00.000Zmax_agestring24h, 7d, 1w, or 7created_max_agestring24h, 7d, 1w, or 7limitnumber50cursorstring(value from prior response)next_pagestring(value from prior response)prev_pagestring(value from prior response)include_expiredbooleantrueResponse Schema
The body includes data (jobs), pagination (see below), and meta.
The Envelope
dataarraypaginationobjectmetaobjecttitle,experience_level:key,value,display_label.salary:key,min,max,display_label.published_after,max_age:key,value,display_label(value is hours since cutoff for max_age).city_id/state_id/country_id:key,kind,name,display_label, plus the matching*_idfield.location(ISO2 codes from the location query param):key,value,display_label(code).- Remote-only filter (from
remote=true): rowkeyisremote_only;valueis alwaystrue. company_name,remote_type:key,value,display_label.
employer_id, company_website_url, domain, created_max_age, include_expired, and count are applied to the query but do not currently produce a filters_applied row.
The Job Object
Primaryidnumbertitlestringlocationstring | nullNullablelocationsarray | nullNullablepublishedstringdescriptionstring | nullNullableapplication_urlstringemployment_typestring | nullNullableexperience_levelstring | nullNullablehas_remotebooleanremote_typestring | nullNullableis_activebooleanexpired_atstring | nullNullablelanguagestring | nullNullablesalary_minnumber | nullNullablesalary_maxnumber | nullNullablesalary_currencystring | nullNullablesalary_textstring | nullNullableexperience_levelsarraycompanyobject | nullNullableemployer_idstringThe Company Object
NestedVerified metadata about the hiring organization, stored on the job object. Not every key is present for every listing—treat optional fields as nullable/missing.
company.namestringcompany.logostring | nullNullablecompany.website_urlstring | nullNullablecompany.descriptionstring | nullNullablecompany.industrystring | nullNullablecompany.employee_countstring | nullNullablecompany.linkedin_urlstring | nullNullablecompany.twitter_urlstring | nullNullablecompany.github_urlstring | nullNullablecompany.facebook_urlstring | nullNullablecompany.instagram_urlstring | nullNullablecompany.youtube_urlstring | nullNullablecompany.teamarrayname: Full name of the team member.title: Job title or role (nullable).linkedin_url: Link to their professional profile (nullable).photo_url: URL to their profile photo (nullable).
The Location Object
Array ItemEach item in the locations[] array is a fully resolved geographic entity.
locations[].kindstring | nullNullablecity_state_country: Fully resolved.city_country: City and country resolved.state_country: State and country resolved, no specific city named.city,state, orcountry: Single level resolved.
locations[].display_labelstring | nullNullablelocations[].city_namestring | nullNullablelocations[].city_idnumber | nullNullablelocations[].state_namestring | nullNullablelocations[].state_idnumber | nullNullablelocations[].state_codestring | nullNullablelocations[].country_namestring | nullNullablelocations[].country_idnumber | nullNullablelocations[].country_codestring | nullNullablelocations[].timezonestring | nullNullablelocations[].is_remotebooleanlocations[].is_primaryboolean