Workable Jobs Scraper
Pricing
from $0.02 / 1,000 job results
Workable Jobs Scraper
Scrape public Workable career boards by company slug or URL. Export job titles, locations, departments, workplace type, remote flags, dates, URLs, and optional descriptions.
Pricing
from $0.02 / 1,000 job results
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
Export public Workable career-board jobs by company slug or URL, including job titles, locations, departments, workplace type, remote flags, posting dates, job URLs, application URLs, and optional descriptions.
Use this Actor when you need a repeatable CSV, JSON, Excel, API, or AI-agent export of Workable-hosted job boards for recruiting intelligence, hiring-signal monitoring, sales research, or job-market analysis.
What Does Workable Jobs Scraper Do?
Workable Jobs Scraper turns public Workable career pages into structured job listing rows.
- Scrape by company slug: use
recurlyfromhttps://apply.workable.com/recurly/. - Scrape by URL: paste Workable company career pages,
apply.workable.comjob links, or currentjobs.workable.com/viewjob pages. - Filter jobs: use keyword, location, department, work type, and remote filters.
- Collect job details: export titles, locations, departments, workplace labels, remote flags, posting dates, job URLs, and Workable IDs.
- Optionally include descriptions: fetch job detail data for description, requirements, and benefits HTML.
Ready-to-run examples
- Export current Recurly Workable jobs
- Scrape a Workable start URL
- Find Recurly engineering jobs
- Find Recurly marketing jobs
- Find Recurly analytics jobs
- Include software-engineer descriptions
- View all public examples
Input Example
{"companySlugs": ["recurly"],"query": "engineer","maxItems": 20,"includeDescription": false}
You can also paste Workable URLs:
{"startUrls": [{"url": "https://apply.workable.com/recurly/"}],"maxItems": 20}
Individual current Workable job pages are accepted too:
{"startUrls": [{"url": "https://jobs.workable.com/view/dHWbxHXmt9g9mfaewTC2eX/full-stack-engineer"}],"maxItems": 1,"includeDescription": true}
Output Example
{"companySlug": "recurly","jobTitle": "Senior Software Engineer, Platform Engineering","location": "Broomfield, Colorado, United States","departments": [],"workplace": "hybrid","remote": false,"publishedAt": "2026-08-01","url": "https://apply.workable.com/recurly/j/55F8A87FA4/","jobId": 5999351,"sourceJobId": "5999351","shortcode": "55F8A87FA4","city": "Broomfield","region": "Colorado","country": "United States","workType": "Full-time","applicationUrl": "https://apply.workable.com/recurly/j/55F8A87FA4/apply/","sourceType": "company_board","descriptionHtml": null}
Who Is It For?
| User | Use case |
|---|---|
| Recruiters | Monitor Workable-hosted boards for new roles and remote openings. |
| Sales teams | Find companies actively hiring by department, role, or region. |
| Market researchers | Track hiring activity across company lists and job categories. |
| Job-board operators | Export public Workable listings into a normalized dataset. |
| AI agents | Run Workable board checks through Apify API or MCP and summarize hiring signals. |
Input settings
| Setting | JSON key | Type / default | Description |
|---|---|---|---|
| Company slugs | companySlugs | array, default ["recurly"] | Workable company slugs from apply.workable.com URLs, for example recurly from https://apply.workable.com/recurly/. |
| Start URLs | startUrls | array, default [{"url":"https://apply.workable.com/recurly/"}] | Public company boards or individual job URLs from apply.workable.com and jobs.workable.com/view. |
| Search query | query | string | Optional case-insensitive keyword filter applied to each title and description. |
| Locations | locations | array | Optional location filters, for example London, United States, or Remote. |
| Departments | departments | array | Optional department filters, for example Engineering, Product, or Sales. |
| Work types | workTypes | array | Optional Workable job type or workplace filters, for example full, hybrid, or remote. |
| Remote only | remote | boolean | Set to true to keep only jobs marked as remote, or false to keep only non-remote jobs. Leave empty for both. |
| Maximum jobs | maxItems | integer, default 20 | Maximum number of job listings to save across all company boards. |
| Include job descriptions | includeDescription | boolean, default false | Include public description, requirements, and benefits HTML; an individual detail request is made only when the company feed does not contain it. |
| Maximum run time | maxRunSeconds | integer, 60β270 | Optional safety budget. The Actor stops before starting unsafe late requests and records pending company boards for recovery. |
Output fields
| JSON key | Label | Type | Description |
|---|---|---|---|
companySlug | Company slug | string | Company-board slug or normalized company name for a direct Jobs by Workable posting. |
companyName | Company name | string / null | Company display name when available. |
jobTitle | Job title | string | Public posting title. |
location | Location | string / null | Combined city, region, and country. |
departments | Departments | array | Employer-supplied departments or teams. |
workplace | Workplace | string / null | Remote, hybrid, or on-site workplace mode. |
remote | Remote | boolean | Whether Workable marks the role as fully remote. |
publishedAt | Published | string / null | Workable publication timestamp or date. |
url | Job URL | string | Canonical public job page. |
jobId | Job ID | integer / string | Numeric company-board ID or UUID for a Jobs by Workable posting. |
sourceJobId | Source job ID | string | Stable string representation of the source identifier. |
shortcode | Shortcode | string | Company-board shortcode or Jobs by Workable token. |
city | City | string / null | Output field for city. |
region | Region | string / null | Output field for region. |
country | Country | string / null | Output field for country. |
countryCode | CountryCode | string / null | Output field for countrycode. |
workType | WorkType | string / null | Output field for worktype. |
applicationUrl | ApplicationUrl | string | Output field for applicationurl. |
employmentType | EmploymentType | string / null | Output field for employmenttype. |
language | Language | string / null | Output field for language. |
descriptionHtml | DescriptionHtml | string / null | Output field for descriptionhtml. |
requirementsHtml | RequirementsHtml | string / null | Output field for requirementshtml. |
benefitsHtml | BenefitsHtml | string / null | Output field for benefitshtml. |
sourceType | Source type | string | company_board, company_job, or jobs_workable_job. |
sourceUrl | Source URL | string / null | Public Workable URL used for the result. |
raw | Raw | object | Output field for raw. |
Pricing
This Actor uses pay-per-event pricing. The start event is charged once after input validation, and the item event is charged only for each job row saved to the dataset. Invalid inputs and failed source items are not charged as results. See the live Pricing tab for current rates and discounts.
Tips For Better Results
- Use company slugs for clean inputs: they are shorter and less fragile than copied URLs.
- Start with a small
maxItems: confirm the board and filters before scheduling large runs. - Use
includeDescriptiononly when needed: it adds larger HTML fields and may require detail requests when a board feed omits them. - Leave filters empty for full board exports: filters can exclude roles if company naming differs.
- Check board availability: not every company uses Workable or keeps old postings public.
- Use multiple boards safely: an unavailable board is recorded in the run summary while the Actor continues with other valid boards.
API usage
Run Workable Jobs Scraper from your own code with the Apify API.
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const input = {"companySlugs": ["recurly"],"maxItems": 10,"includeDescription": false};const run = await client.actor('fetch_cat/workable-jobs-scraper').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("fetch_cat/workable-jobs-scraper").call(run_input={"companySlugs": ["recurly"],"maxItems": 10,"includeDescription": False})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~workable-jobs-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"companySlugs":["recurly"],"maxItems":10,"includeDescription":false}'
Use with AI agents via MCP
Workable Jobs Scraper can be used by AI assistants through the hosted Apify MCP server.
Claude Code setup
$claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/workable-jobs-scraper"
Claude Desktop, Cursor, or VS Code JSON config
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=fetch_cat/workable-jobs-scraper"}}}
Example prompts
- "Run Workable Jobs Scraper with this input JSON and summarize the dataset."
- "Export the latest Workable Jobs Scraper results to a table I can review."
- "Schedule this Actor for monitoring and tell me what changed between runs."
Limits And Notes
- The Actor extracts public Workable career-board data; it does not access private applicant systems.
- Filters are applied locally to the public job title, description, location, department, employment type, and workplace fields that Workable exposes.
- Descriptions, requirements, and benefits are only included when
includeDescriptionis enabled and available. - Closed, removed, or unsupported job URLs fail with an actionable source warning instead of silently producing an empty successful run.
- The Actor uses public Workable job-board endpoints and bounded retries. It does not require a Workable API key.
RUN_SUMMARYandPENDING_WORKin the default key-value store record board-level warnings and unfinished boards when a run is cut short.
FAQ
Can I scrape multiple Workable companies in one run?
Yes. Add multiple values to companySlugs or multiple URLs to startUrls.
Can I export Workable jobs to CSV or Excel?
Yes. Export the Apify dataset as CSV, Excel, JSON, XML, or RSS after the run.
Why did I get zero jobs?
Check that the company slug exists on apply.workable.com, remove strict filters, and try a small run without query, locations, or departments.
Why are descriptions missing?
Set includeDescription to true. Some boards or jobs still may not expose all detail fields.
Is this a Workable API alternative?
It can be used as an API-style export for public Workable career boards through Apify API, datasets, schedules, webhooks, and MCP.
Related actors
- Ashby Jobs Scraper
- ATS Jobs Scraper for 6 ATS Sources
- Built In Jobs Scraper
- Dice Jobs Scraper
- Freelancer Jobs Scraper
Support
Report bugs, wrong output, blocked runs, or missing fields from the Actor page. Include the Apify run ID or run URL, your input JSON, what you expected, what the Actor returned, and one reproducible public URL so the issue can be tested quickly.
Privacy and data handling
This Actor runs with Apify limited permissions and only processes data needed for the documented run. It uses job-search inputs and public job-posting results to produce the output dataset and sends requests to public Workable Jobs pages/endpoints; results are stored in Apify run storage for your account. FetchCat does not use your inputs or outputs for advertising, does not use them for model training, and does not retain them outside the Apify run except for transient support debugging when you explicitly share run details. You are responsible for using the Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs.