Workable logo

Job boards & ATS · Live on Apify

Workable jobs scraper for career pages and job search

Add Workable companies, or search Workable jobs by keyword and place. You get one clean row per job. On a schedule, get only new, changed and removed jobs.

About $0.90 for 1,000 jobs$0.0009 per job + $0.002 per run. Apify bills you, not us.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

source_typecompany
source_inputcostello-medical
titleAccounts Assistant

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: costello-medical in Companies on Workable. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Workable Jobs Monitor & Scraper collects public jobs from company career pages on Workable (apply.workable.com/<company>) and from the Workable job search (jobs.workable.com). It returns one clean row per job, and on a schedule it can return only new, changed and removed jobs.

  • Company career pages. Add a company name or its career page URL. The Actor returns every published job of that company with title, locations, department, employment type, experience, industry, posting date, links and the full job description split into description, requirements and benefits. This uses 2 requests per company, even for companies with hundreds of jobs.
  • Workable job search. Add keywords and/or a location. The Actor goes through the search results page by page (20 jobs per page) and returns each job with company, location, workplace type and description.

Good for

  • Watch the career pages of competitors, clients or target accounts and get new jobs every day.
  • Build a job board or a job alert from Workable companies and keywords.
  • Collect hiring signals (department, location, seniority) for sales or market research.

Not a good fit

  • Only public, published jobs. No applicant data, no private postings.
  • Companies with their own career site and no apply.workable.com/<company> page are not supported.
  • Salary is published by only some employers. You get it only with Add salary and exact workplace type on, and only for company pages. The search does not return salary.
  • Workable limits how many requests one IP address can make per day. Large runs can stop early with a clear partial status (see Pricing and limits).
  • Up to 5,000 jobs per run.

Who uses it

Sales teams

Watch target accounts and use new jobs as signals.

Job board owners

Build a job board or alert from Workable jobs.

Competitor watchers

Get new jobs from rival career pages each day.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Start fee$0.002Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more.
Job row$0.0009One Workable job, or one new/changed/removed job in monitoring mode, saved to the Dataset.

Examples

  • One job: about $0.0029.
  • 1,000 jobs: about $0.90.
  • Every day 100 jobs, for 30 days: about $2.76 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 5,500 jobs.

Prices checked on 24 October 2026. See the current price on Apify.

Questions

Do I need a Workable API key?

No. The tool reads public career pages and the public job search.

Why is the salary empty?

Salary needs details on, and only company pages have it. Search has no salary.

How many jobs can one run return?

Up to 5,000 jobs. Workable also limits requests per day.

What does partial mean?

A limit stopped the run early. The saved rows are still correct.

How fresh is the data?

Each run reads Workable at run time. scraped_at shows when each row was made.

Can I get all jobs from Workable?

No. One run returns up to 5,000 jobs, and Workable limits requests per day. Use companies, keywords, locations and postedWithin to focus on the jobs you need.

Are duplicates removed?

Yes. A company added twice is read once, and a job that appears on two search pages is returned once. The same job found by two different keywords appears once per search.

Details

Step by step on Apify
  1. Open the Input tab.
  2. In Companies on Workable (companies) keep the prefilled costello-medical or add your own company name or URL.
  3. Keep the other settings as they are. By default the Actor returns all current jobs (mode: all).
  4. Click Start.
  5. Open the Output tab. The table shows one row per job with title, company, location and job URL.
Use cases
TaskInputYou getKey fieldsNext step
Track hiring at known companiescompanies + mode: changes on a schedulenew / changed / removed jobchange_type, title, location, urlSend new rows to Slack, email or a sheet
Find jobs by keyword and placesearchKeywords + searchLocationjobtitle, company_title, workplace_type, date_postedJob board, alert, CRM
Hiring signals for salescompaniesjobdepartment, experience, function, locationsLead scoring
Salary research (where published)companies + includeDetails: truejobsalary_min, salary_max, salary_currency, salary_periodSpreadsheet
Tips for better results
  • Use the account name from apply.workable.com/name, or paste the link.
  • Company pages are cheap: 2 requests per company, even with many jobs.
  • Use posted within to limit search results to fresh jobs.
Limits and good to know
  • 5,000 jobs per run (maxJobsTotal). A tested run returned 5,000 rows in about 6.5 minutes
  • Workable daily request limits. Workable limits how many search pages and job-detail requests one IP address can make per day. When the limit is reached, Workable asks to wait about 24 hours. The Actor then stops asking for that kind of data, saves everything found so far and marks the source partial with the reason. In a test run this happened after about 400 search pages (about 8,000 search jobs). Company pages without includeDetails use only 2 requests per company and are rarely affected
  • Default memory 512 MB and timeout 30 minutes are enough for 5,000 rows

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "id": "266B371E9C",
  "source_type": "company",
  "source_input": "costello-medical",
  "title": "Accounts Assistant",
  "state": "published",
  "date_posted": "2026-09-23T00:00:00.000Z",
  "url": "https://apply.workable.com/costello-medical/j/266B371E9C/",
  "application_url": "https://apply.workable.com/costello-medical/j/266B371E9C/apply/",
  "company_title": "Costello Medical",
  "company_url": "https://apply.workable.com/costello-medical/",
  "location": "Boston, Massachusetts, United States",
  "location_country_code": "US",
  "locations": ["Boston, Massachusetts, United States"],
  "workplace_type": null,
  "employment_type": "Full-time",
  "department": "Operations",
  "experience": "Entry level",
  "industry": "Pharmaceuticals",
  "function": "Finance",
  "salary_min": null,
  "description_text": "Role Summary\n\n- Responsibilities: By stepping into the Accounts Assistant role at Costello Medical, you will support …",
  "requirements": "About You\n\nWe are looking for an enthusiastic and ambitious individual …",
  "benefits": "About Costello Medical\n\nCostello Medical is a rapidly growing global healthcare agency …",
  "change_type": null,
  "content_hash": "…"
}

Use it from code

Actor ID: cliqtomedia/workable-jobs-monitor-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/workable-jobs-monitor-scraper").call(run_input={
    "companies": [
        "costello-medical"
    ],
    "postedWithin": "any"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~workable-jobs-monitor-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"companies": ["costello-medical"], "postedWithin": "any"}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/workable-jobs-monitor-scraper")
result = tool.invoke({"run_input": {"companies": ["costello-medical"], "postedWithin": "any"}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (40)
FieldType
idstring
source_typestring
source_inputstring
titlestring
statestring
languagestring
date_postedstring
date_updatedstring
urlstring
application_urlstring
shortcodestring
company_slugstring
company_idstring
company_titlestring
company_websitestring
company_urlstring
company_imagestring
locationstring
location_citystring
location_subregionstring
location_countrystring
location_country_codestring
locationsarray
workplace_typestring
employment_typestring
departmentstring
experiencestring
industrystring
functionstring
educationstring
salary_minnumber
salary_maxnumber
salary_currencystring
salary_periodstring
is_featuredboolean
social_sharing_descriptionstring
description_htmlstring
description_textstring
requirementsstring
requirements_htmlstring
Input settings (15)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Companies on Workablecompaniesarray["costello-medical"]
Search keywords (jobs.workable.com)searchKeywordsarray
Search locationsearchLocationstring
Posted withinpostedWithinstring"any"
Workplace typeworkplaceTypesarray
Job title must containtitleKeywordsarray
Job title must not containexcludeTitleKeywordsarray
Location must containlocationKeywordsarray
Department must containdepartmentKeywordsarray
Add salary and exact workplace type (companies)includeDetailsbooleanfalse
Modemodestring"all"
Monitor namemonitorStateKeystring
Also return unchanged jobsincludeUnchangedbooleanfalse
Max jobs per company or searchmaxJobsPerSourceinteger1000
Max jobs per runmaxJobsTotalinteger5000

Use cases with this tool

Each guide shows all the steps and the other tools.

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure