ATS Jobs Scraper: Workday, Greenhouse, Lever & Ashby
Get every open job posting from company career pages on Workday, Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee and Workable: title, team, location, remote, salary when published, apply link, clean description. Only-new-jobs mode for daily feeds. Public job-board APIs, pay per job.
Typical uses
- Job boards and aggregators: keep a niche board (AI, climate, fintech, remote) filled with fresh jobs straight from the employers.
- Sales and recruiting intelligence: which target accounts are hiring, for which teams, where — a strong buying signal for B2B sales and agencies.
- Market and talent research: count openings per department, track hiring trends, compare published salary ranges across companies.
- Job seekers and career tools: monitor a list of dream companies for new roles matching your keywords, locations or remote-only. With Only new jobs on, a scheduled run returns (and bills) only jobs it has never delivered.
- Automations and AI agents: feed n8n, Make, Zapier, Google Sheets, Airtable or an MCP client with structured JSON.
Pricing
Pay per use, no subscription, no monthly fee. The price depends on your Apify plan. Apify's free plan includes $5 of usage every month.
| You pay per | Free plan | Starter | Scale | Business |
|---|---|---|---|---|
| Job One open job returned with its details (title, department, locations, remote flag, employment type, salary when published, dates, apply link, description). Companies not found, boards without jobs and jobs removed by your filters are free. | $0.0015 | $0.0012 | $0.001 | $0.0008 |
Run it from your code
Get an API token in the Apify Console (Settings → Integrations), then:
curl -X POST \
"https://api.apify.com/v2/acts/plainrows~ats-job-postings/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"companies": [
"stripe",
"https://jobs.lever.co/spotify",
"https://jobs.ashbyhq.com/ramp"
],
"maxJobsPerCompany": 20
}'
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("plainrows/ats-job-postings").call(run_input={'companies': ['stripe',
'https://jobs.lever.co/spotify',
'https://jobs.ashbyhq.com/ramp'],
'maxJobsPerCompany': 20})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row)
Use it in automations and AI agents
- n8n, Make, Zapier: use the official Apify integration and pick the Actor
plainrows/ats-job-postings. - MCP (Claude, Cursor, other AI agents):
https://mcp.apify.com?tools=plainrows/ats-job-postings
Full documentation, input options and output fields: https://apify.com/plainrows/ats-job-postings