Workable Job Listings API – Careers Board Scraper avatar

Workable Job Listings API – Careers Board Scraper

Pricing

Pay per event

Go to Apify Store
Workable Job Listings API – Careers Board Scraper

Workable Job Listings API – Careers Board Scraper

Scrape live job postings from any company's Workable careers board. Clean JSON per job with dedup, so scheduled runs only return newly-posted roles. For recruiters, ATS aggregators and hiring-signal feeds.

Pricing

Pay per event

Rating

0.0

(0)

Developer

K O

K O

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Workable Jobs Scraper – New Postings Feed API

Scrape live job postings from any company's Workable careers board and get one clean JSON record per role — title, location, countries, department, employment type, post/create dates and a direct apply URL. Built-in deduplication means a scheduled run only returns newly-posted jobs, so you can wire it straight into a hiring-signal feed, a niche job board, or a sourcing tool.

Who uses it

Recruiters and sourcers, job-board and ATS aggregators, sales teams tracking a target account's hiring, labor-market analysts, and anyone building a "new roles at companies I follow" alert.

Why this is worth charging for

Workable exposes a public careers widget API, but you still have to discover each company's account slug, pull the board, fetch each posting's detail endpoint separately for the full description, flatten multi-location listings, and diff runs yourself to find what's actually new. This actor does all of that: pass a list of accounts, get a normalized, deduplicated feed you can schedule.

Input

FieldDescription
companiesOne or more Workable account slugs — the slug in apply.workable.com/<slug> (e.g. walter-careers, welcome-jobs).
includeDescriptionFetch each posting's full HTML description, requirements and benefits. Off by default for lean records.
onlyNewSinceLastRunRecommended for schedules — skips jobs already returned by a previous run, so you're only charged for genuinely new postings.
maxItemsStop after this many normalized records.

Output

Each dataset item is one normalized job:

{
"jobId": "22257C584A",
"code": "R-9",
"company": "Walter",
"title": "Accounts Payable Analyst",
"location": "Mexico City, Mexico",
"countries": ["Mexico", "El Salvador"],
"remote": true,
"department": "Finance",
"employmentType": "Full-time",
"publishedOn": "2025-06-20",
"createdAt": "2025-02-25",
"url": "https://apply.workable.com/j/22257C584A",
"applicationUrl": "https://apply.workable.com/j/22257C584A/apply",
"descriptionHtml": null,
"requirementsHtml": null,
"benefitsHtml": null,
"source": "Workable"
}

Pricing (Pay-Per-Event)

  • query — charged once per run for the board poll.
  • job-record — charged per normalized job pushed. This is the primary event.
  • apify-actor-start (Apify-managed) — covers baseline compute per run.

A daily monitor of a handful of companies returns a few new roles for pennies; a full-board pull of a large employer is a larger one-time run you control with maxItems.

Source & reliability

Data comes from Workable's public apply.workable.com careers API. No API key, no proxy needed. Run npm test for the offline self-test covering the normalizer and its edge cases.

FAQ

Where do I find a company's account slug?

Open the company's Workable careers page — the slug is the path in the URL, e.g. apply.workable.com/walter-careerswalter-careers.

Can I get full job descriptions?

Yes — set includeDescription to true and each record includes the HTML description, requirements and benefits (one extra request per job).

How does it avoid charging me for the same job twice?

With onlyNewSinceLastRun on (the default), the actor persists the ids it has already returned and skips them next run, so a schedule only bills for new postings.


SEO keywords: Workable jobs scraper, Workable careers API, job posting scraper, ATS scraper, new jobs feed, hiring signals, recruiting data API, job board aggregator