Workable Jobs Scraper (FreshActors)
Pricing
from $20.00 / 1,000 company jobs fetcheds
Workable Jobs Scraper (FreshActors)
Reliable, always-fresh job postings from any Workable company board. Public JSON, no login, full descriptions in one call. Monitored daily. By FreshActors.
Pricing
from $20.00 / 1,000 company jobs fetcheds
Rating
0.0
(0)
Developer
Martin Čech
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 minutes ago
Last modified
Categories
Share
Workable Jobs Scraper — Every Company Board as Clean JSON (No API Key)
Scrape Workable ATS job postings from any company's public board into clean, structured JSON — title, full description, location, department, employment type, remote/hybrid flag, and apply URL. No account, no login, no API key. Point it at a list of Workable companies and get a normalized jobs feed back.
✅ Last verified working: 2026-06-02. Monitored by an automated daily canary. When Workable changes its board API, we patch fast and log it in the changelog below — so your hiring-data pipeline doesn't silently break.
Why this Workable scraper
Most job scrapers go stale and break the moment an ATS tweaks a response — and the worst ones silently return nothing instead of erroring. When the feed behind your sourcing tool or dashboard quietly dies, you find out from your boss, not your logs. This one is built to stay working:
- Whole board in one request. Workable's public widget API returns every open role for a company — including the full job description — in a single call. That keeps runs fast, cheap, and reliable (one HTTP request per company, no per-job round-trips).
- One normalized schema. Every posting comes back as the same stable job record as our Greenhouse & Lever scraper, so you can query Workable companies the same way you query the rest of your ATS coverage — no special-case parsing.
- Per-company isolation + retries. A dead, renamed, or private board is skipped and logged — it never crashes the whole run. Transient errors retry with backoff.
- Stable, versioned output (
_schemaVersionon every record) — fields don't silently disappear between runs. - Monitored daily. A canary scrapes a known live board every day and writes a pass/fail status; that "last verified working" date is real, not decorative.
The moat here isn't a trick — it's operational reliability. This scraper is maintained to keep working, which is the one thing a hiring-data pipeline actually needs.
What data you get
Each row is one normalized job posting. Fields Workable doesn't provide come back as null rather than disappearing, so your downstream schema stays predictable.
| Field | Type | Description |
|---|---|---|
_type | string | Always job. |
_schemaVersion | string | Output schema version. |
_source | string | Always workable. |
company | string | Workable shortcode / company slug. |
jobId | string | Workable posting shortcode (unique per role). |
title | string | Job title. |
department | string | null | Department. |
team | string | null | Function (e.g. "Engineering", "Sales"). |
location | string | null | Primary location (city, country). |
allLocations | string[] | null | All listed locations. |
workplaceType | string | null | remote where the role is telecommuting. |
commitment | string | null | Employment type (full-time, contract, …) where set. |
country | string | null | Country. |
url | string | Public posting URL. |
applyUrl | string | null | Direct apply URL. |
postedAt | string | null | Publish date. |
descriptionText | string | null | Full description text (when includeDescription is on). |
_scrapedAt | string | ISO timestamp this record was fetched. |
Use cases
- Sales intelligence / hiring-signal tracking. Watch which companies are hiring for which roles — a leading indicator of growth, new initiatives, and budget. Feed
department,team,location, andpostedAtinto your lead-scoring or intent model. Searching for a Workable jobs API to power hiring-intent data? This is the structured feed. - Recruiting & talent sourcing. Aggregate live openings across dozens of target employers into one table; filter by
workplaceType: remoteorcommitmentwithout writing a Workable-specific adapter. - Job boards & aggregators. Building a niche board and need to scrape Workable jobs into a uniform feed? Point the actor at your company list and ingest normalized records on a schedule.
- Labor-market & VC research. Track headcount-growth signals across a portfolio.
postedAtgives you a clean time series of when roles open across companies — no manual board-watching.
Input
| Field | Type | Required | Notes |
|---|---|---|---|
companies | string[] | ✅ | Workable shortcodes (pearltalent) or board URLs (https://apply.workable.com/pearltalent/). One per row. The shortcode is the slug in the company's apply.workable.com careers URL. |
includeDescription | boolean | — | Include the full description text per posting. Default true. |
maxJobsPerCompany | integer | — | Cap per company (1–5000). Default 1000. |
{"companies": ["pearltalent", "https://apply.workable.com/walletconnect/"],"includeDescription": true,"maxJobsPerCompany": 1000}
Output sample
{"_type": "job","_schemaVersion": "1.0","_source": "workable","company": "walletconnect","jobId": "2EB3D29E9B","title": "Product Manager - Merchant Experience","department": "Product","team": null,"location": "United Kingdom","allLocations": ["United Kingdom", "Portugal"],"workplaceType": "remote","commitment": null,"country": "United Kingdom","url": "https://apply.workable.com/j/2EB3D29E9B","applyUrl": "https://apply.workable.com/j/2EB3D29E9B/apply","postedAt": "2026-04-27","updatedAt": null,"descriptionText": "About the role...","_scrapedAt": "2026-06-02T16:40:46.908Z"}
Use with AI agents (MCP)
This scraper is callable as a tool by AI agents via the Apify MCP server — so assistants like Claude, Cursor, and VS Code can run it and use the structured results mid-conversation, with no glue code.
Simplest path: in a recent Claude Desktop, add the hosted server https://mcp.apify.com under Settings → Connectors and authorize with OAuth. For any config-file client:
{"mcpServers": {"apify": {"command": "npx","args": ["-y", "@apify/actors-mcp-server"],"env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }}}}
Then ask in plain language, e.g. "List the open jobs at pearltalent and walletconnect from their Workable boards with titles, locations, and apply links." — the agent calls freshactors/workable-jobs-scraper with the right input and reads back the JSON. Full setup: Apify MCP docs.
Pricing
Pay-per-event — no subscription. You pay only for the boards you fetch and the postings you receive:
| Event | Price (USD) | When it fires |
|---|---|---|
| Company jobs fetched | $0.02 | Once per company board successfully fetched (with ≥1 open job). |
| Job posting fetched | $0.0005 | Once per job posting returned. |
Worked example — "how much do 100 results cost?" Scrape 5 companies for 100 postings total:
- Boards: 5 × $0.02 = $0.10
- Postings: 100 × $0.0005 = $0.05
- Total: $0.15 for 100 normalized jobs across 5 companies.
Because one request returns the whole board with descriptions, runs are fast and cheap. (Apify platform usage is billed separately per their standard rates.)
FAQ
Is scraping Workable jobs legal? This actor reads public, non-personal job-posting data from companies' own public Workable boards — the same data their careers pages serve to any visitor. No login, no personal data. Use responsibly and in line with applicable terms and laws.
Do I need an API key? No. There's no Workable API key, account, or login. You provide a list of company shortcodes or board URLs and the actor reads their public JSON boards.
How do I find a company's Workable shortcode?
It's the slug in their careers URL — apply.workable.com/**pearltalent**/. You can paste either the bare shortcode or the full URL.
Does it include full job descriptions?
Yes — includeDescription defaults to true, and each posting includes descriptionText. One request returns the whole board with descriptions inline; turn it off for leaner, faster output.
Can I scrape many companies at once?
Yes — pass as many shortcodes/URLs in companies as you need. Each board is fetched in isolation; a dead or private board is skipped rather than failing the run. Use maxJobsPerCompany (1–5000) to cap per-company volume.
What if a company has no open roles? The board is fetched and returns an empty result for that company — no jobs, no charge for that company. Your run continues.
How often is the data updated? It's live — every run fetches the companies' current public boards in real time. The actor itself is monitored by a daily canary so parsing stays correct as Workable's board API evolves.
Other FreshActors tools
| FreshActors actor | What it scrapes |
|---|---|
| Greenhouse & Lever Jobs Scraper | Greenhouse + Lever — normalized job postings |
| App Store Scraper | Apple App Store — app details, search, reviews |
| Google Play Scraper | Google Play — app details + reviews |
| Shopify App Store Scraper | Shopify App Store — app details, reviews, discovery |
| Redfin Scraper | Redfin — US real-estate listings |
Reliability
Staying fresh is the whole point of FreshActors. A scheduled daily canary scrapes a known Workable board, validates the normalized schema, and alerts the moment a parse changes. When Workable shifts its board API, we patch the same day and record it in the changelog below. Every record is stamped with _schemaVersion and _scrapedAt so you always know what shape you're consuming and when it was fetched.
Changelog
- 2026-06-02 — v1.0 launch. Per-company Workable boards, full descriptions in one call, normalized schema, per-company isolation, daily canary monitoring.
Legal note: Reads public, non-personal job-posting data from companies' own public Workable boards (the same data their careers pages serve). No login, no personal data. Use responsibly and in line with applicable terms and laws.
Found a problem? Open an issue on the actor — issues are answered fast.