Adderley Data Apify Store

Adderley Data / Guides

Workable job board API: the public endpoint, its fields and its rate limit

Workable has two job APIs. The full one, under {subdomain}.workable.com/spi/v3, needs the account's own access token. The one a careers page reads is public: GET https://www.workable.com/api/accounts/{account}?details=true returns every published job, full text included, with no token. This page covers the public endpoint: what comes back, the limits we measured, and what it leaves you to build.

The request

curl -L "https://www.workable.com/api/accounts/careers?details=true"

careers is the account behind Workable's own careers page. Workable documents the endpoint for companies that build their own careers page, in the help centre article Using the Workable API to create a careers page (read 6 October 2026): details=true adds each job's description, and two more public endpoints, /locations and /departments under the same address, list the places and departments of the published jobs. The address answers HTTP 302, a redirect to https://apply.workable.com/api/v1/widget/accounts/{account}?details=true, so let your client follow it, as -L does above.

The account name is the first part of the path on the company's careers page, apply.workable.com/{account}/. Checked against the live endpoint on 25 September 2026:

  • An unknown account answers HTTP 404 with the plain-text body Not Found, not JSON.
  • Short links name no account. The url the endpoint gives each job is apply.workable.com/j/{shortcode}, which cannot tell you whose board it came from. The link on the careers page itself, apply.workable.com/{account}/j/{shortcode}, does.
  • The rate limit. After about eight requests in forty seconds from one address, apply.workable.com answered HTTP 429 with Cloudflare's one-line page error code: 1015 in place of JSON. The help article gives no limit for these endpoints.

What a job entry holds

The response is {"name", "description", "jobs": [...]}: the company's name, its own blurb, and the jobs. Each job entry carries the same 20 keys, in this order: title, shortcode, code, employment_type, telecommuting, department, url, shortlink, application_url, published_on, created_at, country, city, state, education, experience, function, industry, locations and description. That held on 79 entries across three boards on 25 September and on Workable's own board on 6 October. Four of them need care:

  • One job, several entries. A job open in three cities appears three times, with the same shortcode, title and text and one place each: one board we read had 70 entries for 27 jobs. Group by shortcode before you count.
  • Hidden places. Each item in locations has country, countryCode, city, region and hidden, the flag Workable's API reference gives a place the company hides from its careers page. The entry's own country, city and state repeat its place even when that place is hidden, so filter on locations.
  • Remote, and nothing else. telecommuting is true on remote jobs. False means only "not remote": a job that its own page called hybrid read false.
  • No pay field. The public endpoint has no salary key. Where a company states pay, it is in the description text. The token API's job record, as the same help article shows it, does carry a salary object.

published_on is a date without a time, such as 2026-10-05, and created_at is when the job was created inside Workable, which can come before it was published.

Measured on Workable's own careers page

Workable's own board listed one job on Tuesday 6 October 2026, read in one request in 2 seconds (run 7eR8Au0rhjMhVY0bR):

  • a full-time marketing role in London, in the Revenue department, published on 5 October 2026;
  • telecommuting false, so the endpoint says nothing about whether it is on-site or hybrid;
  • pay stated only in its text, as "A salary of £65,000–£85,000", with no period given, so the period stays empty rather than guessed.

One job shows the shape and nothing about spread. The counts in the section above come from the three larger boards read on 25 September.

Where it stops

The endpoint answers "what is this company advertising now", one company per request. Watching companies over time leaves three jobs to you:

  • Pacing. At about eight requests in forty seconds, 500 companies take at least 40 minutes to read once, and a request over the limit gets a Cloudflare page, not data.
  • Grouping and filtering. Entries become jobs by shortcode, and hidden places have to be dropped before anyone filters by city.
  • Change detection. Nothing in an entry says it was edited, so a changed job is found only by comparing it with the last read.

Workable Jobs Scraper handles all three: by default it reads one board at a time, at most ten a minute, and on a 429 it waits as long as Workable asks, or 30 seconds, then asks again from the same address, never from another one. It returns one row per job with only the places the careers page shows, and in incremental mode it returns, and charges for, only jobs that are new, changed, back or gone. Its page has the price and every field. For Workable beside Greenhouse, Lever, Ashby and eleven more systems in one table, use the Career Site Jobs Scraper.

The same reference for other systems

Published 2026-10-06.