VOOZH about

URL: https://apify.com/schnellscrapers/workable-jobs-scraper

⇱ Workable Jobs Scraper Β· Apify


Pricing

$0.90 / 1,000 jobs

Go to Apify Store

Workable Jobs Scraper

Pull every active Workable job β€” search 170k+ postings across all Workable customers, or grab every job from one Workable company in one run. Returns titles, locations, departments, employment type, full HTML descriptions, and apply URLs.

Pricing

$0.90 / 1,000 jobs

Rating

0.0

(0)

Developer

πŸ‘ Nate Schnell

Nate Schnell

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

a month ago

Last modified

Share

What does Workable Jobs Scraper do?

Workable Jobs Scraper pulls every active job from the Workable ATS β€” either by searching across all Workable customers (170,000+ active postings on Workable's own meta-search at jobs.workable.com) or by pulling every job from a specific Workable-hosted company (via apply.workable.com/{slug}). Paste a search query, one or many company slugs, or both β€” the actor returns a clean, structured record per posting straight from Workable's public JSON endpoints. No headless browser, no proxy, no rendered HTML to fight with.

Built for talent-intelligence teams, ATS-aggregator job boards, sourcing tools, hiring-velocity dashboards, recruiter prospecting, and anyone who needs Workable job data without writing a paginator or stitching two endpoints by hand.

What data can you extract from Workable?

  • Identity β€” id (composite, stable across runs), uuid (Workable's internal UUID for search-mode records), shortcode, code (employer-set reference)
  • Title β€” title
  • Company β€” companyName, companySlug (apply.workable.com slug), companyId (Workable UUID), companyWebsite
  • Taxonomy β€” department, function, industry, employmentType, experienceLevel, education
  • Workplace β€” workplace (remote / hybrid / on_site), convenience isRemote boolean, language
  • Location β€” primary location (country, countryCode, city, region, fullLocation) plus a locations array for multi-location postings
  • URLs β€” url (public listing page), shortlink, applyUrl, optional linkoutUrl (employer redirect, when present)
  • Timing β€” publishedAt, createdAt, updatedAt
  • Flags β€” isFeatured
  • Description β€” descriptionHtml, requirementsHtml, benefitsHtml (kept separate by default); optional combined descriptionHtml and plain-text descriptionText for embeddings / LLM ingestion
  • Social β€” socialSharingDescription
  • Provenance β€” scrapedAt, source

35 fields per posting, all named and typed in the dataset schema.

How to use Workable Jobs Scraper

  1. Sign in to Apify (create a free account if you don't have one β€” Apify's free tier covers most experiments).
  2. Open the actor and click Try for free.
  3. Pick a mode (or combine both):
    • Search mode β€” set query, location, workplace, employmentType, and/or dayRange. Returns matching jobs across every company on Workable.
    • Per-company mode β€” paste apply.workable.com slugs into companies (e.g. allucent, northramp, same-day-water-heaters). The actor pulls every active job at each slug.
  4. (Optional) Apply filters. Client-side: titleFilter, titleExcludeFilter, departmentFilter, functionFilter, industryFilter, experienceLevels, countryFilter, remoteOnly, postedAfter, descriptionContains.
  5. (Optional) Toggle includeDescription off if you only need titles + metadata (per-company mode then uses a leaner payload, ~10Γ— smaller). Toggle parseDescription on for a plain-text descriptionText field. Toggle combineDescription to stitch description + requirements + benefits into one HTML body.
  6. Click Run. Results stream into the dataset as they're scraped.
  7. Download as JSON, JSONL, CSV, Excel, XML, or fetch via the Apify dataset API.

How much does it cost?

$1 per 1,000 job postings ($0.001 per posting) plus a small $0.005 actor-start fee. Pay only for postings the actor emits to the dataset β€” failed company slugs, filtered-out jobs, and out-of-range dates cost nothing. The actor uses public Workable endpoints directly with no proxy, so there are no proxy charges and no per-CPU-second charges; the per-record price covers the whole compute.

A search run for "remote engineer" capped at 200 records β†’ $0.205 ($0.005 start + 200 Γ— $0.001). A multi-company run of 5 Workable companies averaging 25 jobs each β†’ 125 records β†’ $0.13. Enabling includeDescription (default ON) is already baked into the per-record price.

Apify's $5 monthly free tier covers about 5,000 postings of trial use.

Input

The actor takes no required fields β€” supply either search params (query, location, workplace, employmentType, dayRange) or per-company slugs (companies), or combine them. Client-side filters narrow the output (and the bill, since you pay per emitted record). maxItems, maxItemsPerCompany, and maxItemsPerSearch cap output for cost-bounded test runs.

{
"query":"software engineer",
"workplace":"remote",
"dayRange":14,
"companies":["allucent","northramp"],
"titleExcludeFilter":["senior","principal"],
"countryFilter":["United States","United Kingdom"],
"postedAfter":"2026-04-01",
"includeDescription":true,
"parseDescription":true,
"maxItems":500
}

Output

One record per active Workable posting. Every field is typed in the dataset schema β€” open the Output tab on the actor page for the full column list, then export to JSON / CSV / Excel / XML. Below is a real per-company record (description truncated):

{
"id":"allucent:52D18CB3E4",
"uuid":null,
"shortcode":"52D18CB3E4",
"code":null,
"title":"Associate Director/Director, Pharmacometrician",
"companyName":"Allucent",
"companySlug":"allucent",
"companyId":null,
"companyWebsite":null,
"department":"Product Development Strategy (PDS)",
"function":"Research",
"industry":"Biotechnology",
"employmentType":"Full-time",
"experienceLevel":"Director",
"education":null,
"workplace":"remote",
"isRemote":true,
"language":null,
"location":{
"country":"United States",
"countryCode":null,
"city":null,
"region":null,
"fullLocation":"United States"
},
"locations":[
{"country":"United States","countryCode":"US","city":null,"region":null,"hidden":false}
],
"url":"https://apply.workable.com/j/52D18CB3E4",
"shortlink":"https://apply.workable.com/j/52D18CB3E4",
"applyUrl":"https://apply.workable.com/j/52D18CB3E4/apply",
"linkoutUrl":null,
"publishedAt":"2026-05-06",
"createdAt":"2026-05-04",
"updatedAt":null,
"isFeatured":null,
"descriptionHtml":"<p><strong>Associate Director/Director, Pharmacometrician</strong></p><p>Step into a role where science meets strategy…</p>",
"requirementsHtml":null,
"benefitsHtml":null,
"descriptionText":"Associate Director/Director, Pharmacometrician\n\nStep into a role where science meets strategy…",
"socialSharingDescription":null,
"scrapedAt":"2026-05-22T15:30:00.000Z",
"source":"https://apply.workable.com/api/v1/widget/accounts/allucent?details=true"
}

Search-mode records use the same shape but populate uuid, companyId, requirementsHtml, benefitsHtml, language, isFeatured, socialSharingDescription, and updatedAt (which the per-company widget doesn't expose). The id is wk:<uuid> for search-mode records, <companySlug>:<shortcode> for per-company records β€” both are stable across runs so you can dedupe on id into your warehouse.

Integrations

Use the actor's results in Make, n8n, Zapier, LangChain, LlamaIndex, your own pipelines via the Apify API, or wire up webhooks to fire whenever a run finishes. Schedule daily / hourly pulls with Apify Scheduler and dedupe into your warehouse on the stable id field.

Related actors

Combine any two to cover both ATSes in one warehouse table β€” every actor in this family normalizes to a similar record shape.

FAQ

How does Workable Jobs Scraper work?

It calls two public Workable JSON endpoints directly:

  • Search mode β€” jobs.workable.com/api/v1/jobs?query=…&workplace=… (Workable's own cross-customer meta-search). Paginated via nextPageToken, capped at 20 jobs per page by Workable; the actor paginates automatically.
  • Per-company mode β€” apply.workable.com/api/v1/widget/accounts/{slug}?details=true (the same endpoint Workable's embed widget uses on customers' own career sites). Returns every active job at the company in one response.

No headless browser, no proxy, no scraping fragile HTML. Both endpoints are public, unauthenticated, and respond to standard User-Agent headers.

Can I use Workable Jobs Scraper as an API?

Yes. Start a run by POSTing to the Apify Run Actor endpoint with your input JSON, then read the dataset via GET /v2/datasets/{datasetId}/items. Apify also exposes the actor as a synchronous run with run-sync and as a task if you want to save reusable input presets.

Can I use Workable Jobs Scraper in Python or Node.js?

Yes. With the apify-client package:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("schnellscrapers/workable-jobs-scraper").call(
run_input={"query":"engineer","workplace":"remote","maxItems":200}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["companyName"], item["location"]["fullLocation"])

Is it legal to scrape Workable job listings?

Workable's jobs.workable.com is Workable's own public meta job board β€” they actively encourage indexing and even ship an LLM-friendly /jobs.md documentation endpoint describing the search parameters. apply.workable.com/{slug} is each customer's public hosted careers page. Scraping publicly accessible job postings is generally legal in the US and EU. This actor only fetches public data β€” no logged-in scraping, no captcha-bypass, no PII beyond what employers chose to publish. Respect Workable's terms, rate-limit your runs, and don't reuse scraped data in ways that violate GDPR, CCPA, or your local employment-data regulations.

How do I find a company's Workable slug?

Open the company's careers page. If the URL is https://apply.workable.com/allucent then allucent is the slug. You can also paste a full apply.workable.com URL into the companies field; the actor extracts the slug for you. Note that not every company you see on Workable's meta-search is hosted on apply.workable.com β€” Workable also indexes external careers pages β€” so if a slug returns 0 jobs, the company is likely on a different ATS or routes through their own domain.

Can I search across all Workable customers without picking specific companies?

Yes β€” that's search mode. Set any combination of query, location, workplace, employmentType, and dayRange, and the actor paginates Workable's meta-search (170k+ active postings) until you hit maxItems or run out of results. Combine with titleExcludeFilter and countryFilter to narrow further.

What's the difference between search mode and per-company mode?

  • Search mode is best when you don't know which companies have what you want β€” search broadly and let Workable's index surface the matches. Returns up to ~170k records cross-customer.
  • Per-company mode is best when you have a list of target employers β€” pulls every active job at each (no 20-per-page cap, no search ranking), and exposes a few extra fields the search index doesn't (function, industry, experienceLevel, education, code).
  • You can combine both in a single run; results are deduped by id.

Why is descriptionHtml null for some records?

You disabled includeDescription. Per-company mode then uses Workable's lighter details=false payload (~10Γ— smaller) which omits the description. Search-mode records always include the description regardless of this setting (Workable's search returns it inline). Re-enable includeDescription to populate it.

Can I filter by department, function, or industry?

Yes β€” use departmentFilter, functionFilter, industryFilter. All are case-insensitive substring matches. Note that function and industry are only populated on per-company records (Workable's search index doesn't expose them).

What's the 170,000-job ceiling about?

Workable's jobs.workable.com/api/v1/jobs meta-search currently indexes roughly 170k active postings across all Workable customers. That's the practical upper bound for a "scrape everything" search-mode run. Per-company runs aren't subject to this β€” pull each company directly.

Will Workable rate-limit or block me?

We've seen no rate-limiting or anti-bot challenges in months of operation across hundreds of company slugs and thousands of search pages. Both endpoints respond to plain User-Agent headers without proxy. The actor inserts a small courtesy delay between search pages.

Your feedback

Open an issue on this actor's Issues tab on Apify with bug reports or feature requests β€” additional output fields, multi-keyword search, salary parsing, or AI enrichment are all on the table.

You might also like

Workable.com Scraper

hoholabs/workable-scraper

Search 170,000+ job listings across all companies on Workable.com. No API key required.

Workable Job Scraper

orgupdate/workable-job-scraper

The latest and most advanced Workable Job Scraper. Our new Workable Job Scraper extracts real-time job postings at scale from all over the world. A new research tool built for recruitment, insights and HR.

Workable Jobs Scraper

automation-lab/workable-jobs-scraper

Scrape public Jobs by Workable listings by keyword and location. Export job, company, location, workplace, salary, and description data.

πŸ‘ User avatar

Stas Persiianenko

4

Workable Job Scraper

bytepulselabs/workable-job-scraper

Scrape all Workable job postings. Add one or more company job site URLs and extract job listings, requirements, benefits, and application details. Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other recruitment tools.

πŸ‘ User avatar

BytePulse Labs

40

5.0

Workable.com Scraper

lexis-solutions/workable-com-scraper

Scrape job listings from Workable.comβ€”positions, company details, requirements, benefits, locations, job types, departments, and salaries. Supports keyword queries, date filtering. Ideal for recruiters, HR analytics, and market research.

πŸ‘ User avatar

Lexis Solutions

6

5.0

Workable Jobs Scraper | Company Career Listings

parseforge/workable-jobs-scraper

Extract job postings from any Workable-hosted careers page including title, location, department, employment type, full description, salary, and apply URL. Track open roles across thousands of companies for sourcing, market intelligence, and recruiting analytics workflows.

Workable Jobs Scraper (FreshActors)

freshactors/workable-jobs-scraper

Reliable, always-fresh job postings from any Workable company board. Public JSON, no login, full descriptions in one call. Monitored daily. By FreshActors.

Workable Jobs Scraper - Cheap

scrapestorm/workable-jobs-scraper---cheap

Easily collect job listings from Workable, a leading global recruitment platform. Just enter a company or job search URL to extract key details like job title, department, location, employment type, and description πŸ” Seamlessly integrate with your tools for talent analytics, or HR automation! βš‘πŸ“Š

2

Workable Jobs Scraper

crawlerbros/workable-jobs-scraper

Scrape Workable job boards - search 50,000+ remote and on-site jobs globally, or scrape specific company boards by slug. Extracts title, department, location, description, employment type, workplace type, requirements, benefits, and application URL.