JazzHR job board API: the keyed API, the public career page and what each holds
JazzHR documents one API, under api.resumatorapi.com/v1, and it needs the key from the company's own JazzHR account. A company's public career page, {company}.applytojob.com/apply, has no JSON or XML feed of its own: it is HTML, with a block of structured data on each posting's page. This page covers both, as we measured them.
The documented API
JazzHR's interactive reference at resumatorapi.com/v1 (read 12 October 2026) says the key "can be found in the Integrations section of your JazzHR account", and the reference sends it as an apikey query parameter. Each call returns at most 100 results; for more, append /page/2 and so on to the address until a page comes back empty.
curl "https://api.resumatorapi.com/v1/jobs/status/open?apikey={key}"
- Filters go in the path.
GET /jobstakes any number of them:title,department,city,state,status(open, on hold, approved, needs approval, drafting and more),from_open_dateandto_open_date,confidential,private,recruiter,hiring_leadandboard_code.GET /jobs/{job_id}returns one job. - Without a key it answers HTTP 401 with
{"error":"apikey not set"}. That response carriedx-ratelimit-limit: 15with a reset about a minute ahead (12 October 2026); the reference states no limit, so treat that number as observed, not promised. - Whose view it is. The key reads the account itself: drafts, jobs on hold, private and confidential jobs, recruiters and hiring leads, alongside applicants and their files. It is the way to read your own account, not a feed of another company's openings.
The public career page
curl "https://{company}.applytojob.com/apply"
The page lists every open posting on the board in one response, without paging: the largest of 49 boards we read on 25 September listed 412. Each entry gives the title, a link of the form https://{company}.applytojob.com/apply/{id}/{Slug}, the location, and the department when the posting has one. Checked against the live site on 25 September and 12 October 2026:
- An unknown subdomain answers HTTP 302, a redirect to JazzHR's page for job seekers, not a 404.
- A closed account answers HTTP 200 with a page titled "JazzHR - Inactive Career Page". JazzHR's own subdomain,
jazzhr, answered that on 12 October. - A posting the board no longer has answers HTTP 410 with "Hiring for this position has been put on hold at this time."
- Two layouts. 48 of the 49 boards used the current layout and one an older one, with different markup for the same facts, so a parser needs both.
The location is JazzHR's own rendering of the posting's place: "Wichita, KS" with no country printed for the United States, "Rome, Italy", "Mexico" or "Remote". Posting ids are case-sensitive, 10 characters on current postings and 6 on older ones.
What a posting's page adds
The list has no date, no employment type and no pay. The posting's own page has the employment type in words ("Full Time", "Part Time", "Internship", "Contracted" and others), the text, and a schema.org block of structured data:
- A JobPosting block gave a date on 118 of the 125 posting pages measured below; on 25 September, 17 of 30 pages across ten boards carried one, and the rest only the company's Organization block. It gives
datePostedas a date without a time,employmentType, the address's locality, region and postcode, and sometimesbaseSalary: on 15 of the 125, and 2 of the 30. validThroughis not a closing date. It was exactly 90 days afterdatePostedon all 17 blocks read in September and on all 10 we read directly in October, so it is JazzHR's window for search engines, not a date the company set.- The application form follows the text on every posting page: name, email, phone, resume and screening questions. A jobs table needs none of it.
Measured on a public board
The board in the Actor's example input listed 125 postings on Monday 12 October 2026. Because the date, the type and the pay live on each posting's page, a full read is the list plus one page per posting: 126 requests, every one answered at the first attempt, in 1 minute 14 seconds at the default pace (run Xce3P1BfcxvEFJN8E).
| Fact | Postings with it | Notes |
|---|---|---|
| Location | 125 of 125 | 52 different places, 79 in Wisconsin; 5 not a city: "Remote" twice, "United States", "(Multiple states)" and a state alone |
| Department | 17 of 125 | On the list itself |
| Employment type | 125 of 125 | From the posting page: full-time 116, part-time 4, full- or part-time 2, temporary 2, internship 1 |
| Date posted | 118 of 125 | From the JobPosting block: 68 in September, 33 so far in October, the oldest 21 July 2026 |
| Postcode | 30 of 125 | From the JobPosting block's address |
| Pay | 33 of 125 | 15 in the JobPosting block, 18 stated only in the text |
Where it stops
- It is HTML. Two layouts, no feed, and nothing JazzHR promises to keep stable for readers outside the account.
- Every posting costs a request. The facts a table needs are on the posting pages, so a board of 412 postings is 413 requests on every full read.
- Nothing says what changed. The list carries no date, so a changed posting is found only by comparing it with the last read.
JazzHR Jobs Scraper reads the career page and each posting's page in either layout, at 4 requests at a time and 90 a minute by default, and never reads the application form. In incremental mode it compares each posting's title, place and department on the list with the last run; an unchanged posting is skipped, costs no page request and is not charged. The price of that saving: an edit only to a posting's type, date, pay or text is not reported as a change. Its page has the price and every field. For JazzHR 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
- Lever job board API: the Postings API on its two hosts, measured
- Recruitee job board API: the offers endpoint, its fields and the 2027 token deadline
- 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.