Careers Page Job Scraper & New Job Alerts (6 ATS)
Pricing
Pay per usage
Careers Page Job Scraper & New Job Alerts (6 ATS)
Scrape open jobs from company careers pages on Greenhouse, Lever, Ashby, Workable, SmartRecruiters and Recruitee. One normalized feed with salary, remote, location and department, plus new-job detection between runs. No login, no proxies.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Heronpage Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Careers Page Job Scraper & New Job Alerts: Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee
Get every open job from any company's careers page in one clean, normalized dataset, and get only the new jobs on every scheduled run. Works with the six most popular applicant tracking systems (ATS): Greenhouse, Lever, Ashby, Workable, SmartRecruiters and Recruitee. Paste careers-page URLs (or just company names), press Start, done.
- ✅ 6 ATS in one actor: no need to juggle a separate Greenhouse scraper, Lever scraper and Ashby scraper
- 🔔 New-job detection built in: schedule it daily and get only postings that appeared since the last run (plus, optionally, jobs that closed)
- 💰 Salary ranges where the ATS publishes them (Ashby, Lever, Recruitee), plus remote / hybrid / on-site, location, department, employment type
- 🧭 Auto-detects the ATS: type
figmaornotionand the actor finds the right job board - 🔎 Filters: title keywords, excluded keywords, location / country, department, remote only, posted within N days
- 🧾 Pay only for what you get: per company checked and per job returned, with no monthly rental
- 🔐 No login, no cookies, no proxies. It uses only the official public job-board APIs that the ATS vendors publish for careers pages.
What can I use it for?
| Use case | How |
|---|---|
| Job alerts for specific companies | Add your dream employers, turn on Only new jobs, schedule daily, and connect email, Slack or Google Sheets via Apify integrations |
| Recruiting & sales intelligence | See who is hiring for what (e.g. "data engineer" in "Poland") and spot hiring surges as buying signals |
| Job boards & niche aggregators | Feed a remote-only / AI-only / EU-only job board with fresh, de-duplicated postings |
| Market & salary research | Pull thousands of postings with structured salary ranges, departments and locations |
| Competitor monitoring | Track which teams your competitors are growing and which roles they close |
| AI agents & LLM pipelines | Clean descriptionText per job, ready for embeddings or classification |
How to use it
- Add companies. Paste careers-page URLs, one per line:
https://boards.greenhouse.io/stripeorhttps://job-boards.greenhouse.io/figmahttps://jobs.lever.co/spotify(EU Lever:https://jobs.eu.lever.co/...)https://jobs.ashbyhq.com/linearhttps://apply.workable.com/huggingfacehttps://careers.smartrecruiters.com/BoschGrouphttps://channable.recruitee.com- or the short form
greenhouse:stripe,lever:spotify,ashby:linear,workable:huggingface,smartrecruiters:BoschGroup,recruitee:channable - or just a company slug like
notion. The actor tries all six ATSs, picks the board with the most jobs and remembers the result. - or the company's own careers page, like
https://www.notion.com/careers. The actor scans the page for an embedded or linked Greenhouse, Lever, Ashby, Workable, SmartRecruiters or Recruitee board and uses it. Pages with no supported board are skipped (never a crashed run) and listed asunsupportedin theRUN_SUMMARYrecord, with a hint for what to try instead. - Leave the list empty and the actor runs a small demo list (Stripe, Spotify, Linear, Channable) so you can see the output format.
- Optional filters: title keywords, location keywords, remote only, and more.
- For alerts: turn on Only new jobs since last run, give the watch-list a Monitor ID, and schedule the actor (Apify Console → Schedules). Turn off Count jobs as new on the first run if you want the first run to be a silent baseline.
- Export as JSON, CSV, Excel or HTML, or push to Google Sheets, Slack, email, Zapier, Make or n8n via Apify integrations and webhooks.
Input example
{"companies": ["https://boards.greenhouse.io/stripe","https://jobs.lever.co/spotify","https://jobs.ashbyhq.com/openai","https://apply.workable.com/huggingface","smartrecruiters:BoschGroup","recruitee:channable","notion"],"onlyNewJobs": true,"monitorId": "my-dream-companies","titleKeywords": ["engineer", "data"],"locationKeywords": ["Remote", "Poland", "Europe"],"includeDescription": true}
Output example
Each job is one dataset item with the same fields for every ATS:
{"id": "ashby:ramp:34413f8d-26bf-4bbc-8ade-eb309a0e2245","ats": "ashby","companySlug": "ramp","companyName": "Ramp","jobId": "34413f8d-26bf-4bbc-8ade-eb309a0e2245","title": "Security Engineer, Cloud","department": "Engineering","team": "Backend","location": "New York, NY (HQ)","locations": ["New York, NY (HQ)", "Remote (Canada)", "Remote (US)", "Miami, FL"],"country": "USA","isRemote": true,"workplaceType": "hybrid","employmentType": "FullTime","salaryMin": 211400,"salaryMax": 290600,"salaryCurrency": "USD","salaryPeriod": "year","salaryText": "$211.4K – $290.6K • Offers Equity","url": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245","applyUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application","publishedAt": "2026-04-07T17:12:35.753000Z","updatedAt": null,"descriptionHtml": "<h1><strong>About Ramp</strong></h1><p>…","descriptionText": "ABOUT RAMP\n\nRamp is building the smart infrastructure for …","isNew": true,"firstSeenAt": "2026-10-24T13:18:30Z","status": "active","scrapedAt": "2026-10-24T13:18:30Z"}
With Also output removed jobs on, closed postings are returned as {"status": "removed", "removedAt": "…", "firstSeenAt": "…"}.
A run summary (boards checked, jobs found, new and removed per company, errors) is saved to the key-value store as RUN_SUMMARY.
Fields by ATS
| Field | Greenhouse | Lever | Ashby | Workable | SmartRecruiters | Recruitee |
|---|---|---|---|---|---|---|
| Title, URL, apply URL, published date | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Department / team | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Location(s), country | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Remote / workplace type | from location text | ✅ | ✅ | ✅ | ✅ | ✅ |
| Employment type | – | ✅ | ✅ | ✅ | ✅ | ✅ |
| Structured salary | – | when published | ✅ | – | – | when published |
| Full description | ✅ | ✅ | ✅ | ✅ | optional (1 extra request per job) | ✅ |
How much does it cost?
Pay-per-event pricing means you only pay for results:
- $0.002 per company board checked
- $0.001 per job in the output: 1,000 jobs cost $1
Examples:
- Daily alerts for 50 companies, ~10 new jobs a day: 50 × 30 × $0.002 + 300 × $0.001 ≈ $3.30 / month
- One-off export of 10,000 jobs from 40 companies: 40 × $0.002 + 10,000 × $0.001 ≈ $10.08
Apify's free plan includes monthly credit, which is enough to try this actor on dozens of companies. You can cap spending per run with Max cost per run; the actor stops cleanly when the cap is reached.
Is it legal? How does it get the data?
The actor calls only the public, unauthenticated job-board APIs that each ATS documents for companies to build their own careers pages: the Greenhouse Job Board API, Lever Postings API, Ashby Job Posting API, Workable careers API, SmartRecruiters Posting API (public postings only) and Recruitee Careers Site API. It does not log in, use cookies, bypass any protection, or touch candidate or personal data. Job postings are content the employers publish for everyone to read. Requests are throttled per ATS (for example one request per second to Lever, honoring its crawl-delay, and a slower pace for Workable) and back off automatically on HTTP 429.
You are responsible for using the data in line with applicable law and the terms of the sites you use it on. Do not use it to spam applicants or employers.
Tips & limits
- Finding the right URL: open the company's careers page and click a job. The link usually reveals the ATS (
greenhouse.io,lever.co,ashbyhq.com,workable.com,smartrecruiters.com,recruitee.com). Companies that host their own careers site on top of one of these ATSs can still be added with theats:slugform. - Huge employers (thousands of postings on SmartRecruiters): use Max jobs per company for quick samples. When the list is cut, removed-job detection is skipped for that company, so you never get false "removed" items.
- Separate watch-lists need separate Monitor IDs, so their "new since last run" memories don't mix.
- Recruitee has announced that from 10 February 2027 its careers API will require a token issued by each company. Recruitee boards may stop working for third parties from that date. Other ATSs are unaffected.
- Not supported (yet): Workday, Personio, Teamtailor, BambooHR, iCIMS. Open an issue if you need one. Entries on these are skipped with a clear note in the run's status message and
RUN_SUMMARY; the rest of the list still runs. - Forgiving input: a single text field of companies (one per line or comma-separated), keyword fields given as text, numbers given as strings, and
startUrls-style{ "url": ... }objects are all accepted. Anything that had to be corrected is listed underinputNotesinRUN_SUMMARY.
FAQ
Can I get alerts by email or Slack? Yes. Schedule the actor with Only new jobs on, then add an Apify integration (Slack, email, Google Sheets, Zapier, Make, n8n) or a webhook on "run succeeded".
Why are some jobs listed twice with the same title? Companies often post the same role separately per city or team. Each posting has its own jobId and URL.
Can I use it via API or from an AI agent? Yes. Call it via the Apify API, the Python or JavaScript client, or the Apify MCP server.
Something broke? Open an issue on the Issues tab with the company URL. Fixes are usually shipped within a few days.