Recruitee job board API: the offers endpoint, its fields and the 2027 token deadline
Every Recruitee careers site, {company}.recruitee.com, is backed by Recruitee's Careers Site API: GET https://{company}.recruitee.com/api/offers/ returns each published offer, its text and its pay in one response. Recruitee documents it for companies that build their own careers page. On 12 October 2026 it still answered without a key, but Recruitee's reference sets 10 February 2027 as the date calls without a token stop working. This page covers what comes back, what we measured, and what the deadline changes.
The request
curl "https://jobs.recruitee.com/api/offers/"
jobs is the Recruitee name behind the careers site of Tellent, the company that makes Recruitee (its documentation calls the product Tellent Recruitee). The reference at docs.recruitee.com (read 12 October 2026) says the endpoint "returns a collection of published company jobs" and documents two query parameters, department and tag, each a name to filter by, and no paging: the whole board is one response. /api/offers/{id} returns one offer, wrapped as {"offer": {…}}. Checked against the live endpoint on 12 October 2026:
- Unknown names and ids answer HTTP 404 with
{"error":"Not Found"}, for a company name nobody uses and for an offer id the board does not have. - The filter works on the name as written.
?department=1.%20R%26Dreturned the 6 of Tellent's 13 offers filed under "1. R&D". - The name is not the domain. Tellent's offers link to
careers.tellent.com, while the API answers atjobs.recruitee.com. A company's own careers domain does not reliably lead back to its Recruitee name: of two custom domains we read on 24 September, one served/api/offers/and the other answered 404. - Trial accounts. A big brand's name can belong to someone's trial account that holds only Recruitee's template offer, titled "Senior Marketer (Sample)" and tagged
Sample(seen on two such names on 25 September). Drop those before you count.
What an offer holds
Every offer carries the same 56 keys: all 13 on Tellent's board on 12 October, and 38 offers across three boards on 24 September. The ones a jobs table needs, and their habits:
- Pay is structured.
salaryis{"min", "max", "currency", "period"}, with the amounts as strings, such as"96000". All four null, or"0"and"0", mean no pay is stated. We have seenmonthandyearlive, and Recruitee's own example useshour. - Three arrangement flags.
remote,hybridandon_siteare separate booleans and more than one can be true. On Tellent's board: hybrid only 5, remote and hybrid 5, remote only 1, hybrid and on-site 1, all three 1. - Places.
city,state_name,postal_code,country_codeandcountrydescribe the first place;locationslists every place, each with the company's own label inname. Whenremoteis true,locationreadsRemote jobwhile the other fields still name an office. Labels are not places: Tellent files "Poland (Remote)" under Poznań and "Remote" under Amsterdam, so three of its offers list the same city twice under two labels. - Dates.
published_at,updated_at,created_atandclose_atare written as2026-10-05 13:25:03 UTC.close_atwas null on every offer we have read: the 13 on 12 October and the 38 on 24 September. - Text.
descriptionandrequirementsare HTML. A company can put everything in the first:requirementswas empty on all 13 of Tellent's offers. - Employment type is a code,
employment_type_code:fulltime_permanentandfulltime_fixed_termon Tellent's board,fulltimeandinternshipon others.
The rest is the application form's settings (options_*, open_questions), images, social sharing copy and mailbox_email, an address that forwards applications to the hiring team. A jobs table has no use for any of it.
The token from 10 February 2027
Recruitee's authentication page (read 12 October 2026, last updated about two months earlier) gives 10 February 2027 as the "deadline for introducing the token to calls" and says calls without it will answer HTTP 401. The token goes in a header, X-Careers-Sites-Token. A user inside the company's own Recruitee account creates it, under Settings, Apps and plugins, Careers API tokens, and it covers that one account. The page also says the XML offer feed and the jobs widget are not covered by the token; the feed's own documentation describes it as generated per job board, for Recruitee's job board partners.
For a company reading its own offers onto its own site, that is a header to add. For anyone reading many companies' boards, it means one token per company, each from someone inside that company. Until the deadline the endpoint answers as described on this page; we measured that on 12 October 2026, and our daily checks read a Recruitee board every morning.
Measured on Tellent's own careers site
Tellent's board listed 13 offers on Monday 12 October 2026, read in one request in 3 seconds, at the first attempt (run OK0cFVVT16h3sKfXz):
| Fact | Offers with it | Notes |
|---|---|---|
| Pay range | 13 of 13 | All yearly and in euros, from €39,000–€45,000 to €96,000–€105,000 |
| Country | 13 of 13 | The Netherlands 10, Poland 2, Germany 1, by first place |
| More than one place | 7 of 13 | Up to four places on one offer |
| Work arrangement | 13 of 13 | 12 tick hybrid, 7 remote, 2 on-site |
| Employment type | 13 of 13 | Full-time fixed-term 9, full-time permanent 4 |
updated_at after published_at | 11 of 13 | Published between 23 July and 6 October 2026 |
Pay on every offer is Tellent's doing: the field can be empty, in the forms listed above.
Where it stops
Until February the endpoint is about as easy as a job board source gets: one request per company, text and pay included. Watching companies over time still leaves work:
- Change detection. Recruitee does not document what moves
updated_at, so a change to a field or to the text is found most safely by comparing them with the last read. - Cleaning. Sample offers on trial accounts, repeated places, and the arrangement flags, which need a rule when more than one is true.
- The deadline. From 10 February 2027 a board is readable only with that company's token, by Recruitee's own account of it.
Recruitee Jobs Scraper reads the endpoint as it answers today: one request per board, Recruitee's sample offers dropped, every place kept, and pay taken from the structured field. In incremental mode it compares each offer's fields and text with the last run and returns, and charges for, only offers that are new, changed, back or gone; it does not rely on updated_at. The token deadline applies to it as to anyone else. Its page has the price and every field. For Recruitee beside fourteen other systems in one table, see the measured run of the Career Site Jobs Scraper.
The same reference for other systems
- Ashby job board API: endpoint, fields and pay data, measured
- Breezy HR job board API: the public JSON feed, the keyed API and where the text lives
- Greenhouse job board API: endpoints, fields and limits, measured
- JazzHR job board API: the keyed API, the public career page and what each holds
- Lever job board API: the Postings API on its two hosts, measured
- Rippling job board API: the public list, the job record and pay by tier
- Workable job board API: the public endpoint, its fields and its rate limit
- Workday job board API: the careers-page JSON, its paging and its 2,000 cap
Published 2026-10-12.