ATS Jobs Scraper: Workable, Personio, SmartRecruiters & More
Pricing
Pay per event
ATS Jobs Scraper: Workable, Personio, SmartRecruiters & More
Job postings scraper for company career sites on SmartRecruiters, Recruitee, Personio, Teamtailor, Workable and BambooHR via their official public job feeds. One normalized schema: title, location, remote flag, department, posted date, apply URL and full description. Build job boards, track hiring.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Ryan Sofranko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
What does ATS Jobs Scraper do?
Job postings scraper for company career sites on SmartRecruiters, Recruitee, Personio, Teamtailor, Workable and BambooHR via their official public job feeds. One normalized schema: title, location, remote flag, department, posted date, apply URL and full description. Build job boards, track hiring.
📖 Step-by-step tutorial: https://dev.to/scrape-smith/how-to-scrape-job-postings-from-workable-personio-smartrecruiters-and-more-one-clean-feed-25mh
Popular searches this actor answers: jobs scraper, Workable jobs API, Personio XML feed, SmartRecruiters jobs, Recruitee jobs, Teamtailor jobs, BambooHR careers, job board aggregator.
Try it free: the input is prefilled, so just click Start and you get real results in seconds for a fraction of a cent.
What data does it return?
Real rows from a test run with the example input (truncated):
| ats | company | title | location | remote | postedAt |
|---|---|---|---|---|---|
| teamtailor | Polestar | Head of Customer Engagement Benelux | Beesd, Netherlands | False | 2026-10-15T11:14:55.000Z |
| teamtailor | Polestar | Head of Customer Engagement Benelux | Brussels, Belgium | False | 2026-10-15T09:09:19.000Z |
| personio | Personio SE & Co. KG | Staff Software Engineer, Data Platform | Munich; Berlin | False | 2024-11-13T14:10:41+00:00 |
Full JSON for one row:
[{"ats": "teamtailor","companySlug": "polestar","id": "a775edab-0c00-4863-bc99-eba96799d7f8","title": "Head of Customer Engagement Benelux","company": "Polestar","location": "Beesd, Netherlands","city": "Beesd","country": "Netherlands","remote": false,"department": "Customer Experience","postedAt": "2026-10-15T11:14:55.000Z","url": "https://polestar.teamtailor.com/jobs/8551558-head-of-customer-engagement-benelux","description": "Let us describe the challenge we offer We are looking for an experienced Head of Customer Engagement to lead and elevate the customer journey across the Benelux…","scrapedAt": "2026-10-22T15:56:43.703Z"}]
Download results as JSON, CSV, Excel, XML or HTML, call it via the Apify API, or connect it to Zapier, Make, n8n, Google Sheets and AI agents (Apify MCP server).
Use cases
- Build niche job boards from hundreds of company career pages
- Monitor competitors' hiring daily with
onlyNewSince - Sales intelligence: find companies hiring for specific roles
- Recruiting research and labor-market analytics
How to use ATS Jobs Scraper
- Open the actor and keep the prefilled example, or replace it with your own input.
- Click Start and wait for the run to finish.
- Export the dataset or fetch it via API.
Input
| Field | Description |
|---|---|
companies | Companies to scrape, one per line, as ats:slug or a careers URL. ats = smartrecruiters, recruitee, personio, teamtailor, workable or bamboohr. Examples: workable:huggingface, https://bunq.recruitee.com, https://acme.jobs.personio.de, https://polestar.teamtailor.com, https://bitly.bamboohr.com/careers, https://jobs.smartrecruiters.com/Ubisoft2. |
maxJobsPerCompany | Maximum jobs returned per company (each job is one billed row). Example: 50. |
includeDescription | Include the full job description text. Costs an extra request per job on SmartRecruiters and BambooHR (not billed extra, just slower). |
onlyNewSince | For daily monitoring: skip jobs posted before this date (YYYY-MM-DD), where the ATS exposes a posted date. |
keyword | Optional case-insensitive text the job title must contain, e.g. engineer or sales. |
Example input:
{"companies": ["workable:huggingface","teamtailor:polestar"],"maxJobsPerCompany": 20}
Supported ATS & feeds
| ATS | Input example | Official public feed |
|---|---|---|
| SmartRecruiters | smartrecruiters:Ubisoft2 | Posting API api.smartrecruiters.com/v1/companies/{id}/postings |
| Recruitee | recruitee:bunq or https://bunq.recruitee.com | {co}.recruitee.com/api/offers |
| Personio | personio:acme or https://acme.jobs.personio.de | {co}.jobs.personio.de/xml |
| Teamtailor | teamtailor:polestar | {co}.teamtailor.com/jobs.rss |
| Workable | workable:huggingface | apply.workable.com/api/v1/widget/accounts/{co} |
| BambooHR | bamboohr:bitly | {co}.bamboohr.com/careers/list |
All rows share one normalized schema (ats, companySlug, company, id, title, location, city, country, remote, department, employmentType, experienceLevel, postedAt, url, applyUrl, description). Fields an ATS does not expose are null. Companies that fail (wrong slug, feed disabled) return a free error row and are not charged.
Pricing
Pay per event: $0.005 per company feed fetched + $0.001 per job. 1,000 jobs from 20 companies = $1.10. Apify platform usage is included. Charged events: company (per company feed fetched) and job (per job row). Error rows are free. Set a max charge per run to cap cost; the actor stops cleanly when the limit is reached.
| Example job | Approx. cost |
|---|---|
| 20 jobs from 2 companies | $0.03 |
| 1,000 jobs from 20 companies | $1.10 |
FAQ
How do I find a company's slug?
Open its careers page. The slug is in the URL, e.g. apply.workable.com/huggingface or bunq.recruitee.com. You can also paste the URL directly.
Are Greenhouse or Lever supported?
Not in this actor; it covers the six ATS listed.
What if a slug is wrong?
You get a free error row for that company; others continue.
Is it legal to use this data?
The actor only reads public, official endpoints. You are responsible for using the data in line with the source's terms and applicable laws (e.g. GDPR for personal data).
API example
curl -X POST "https://api.apify.com/v2/acts/scrape-smith~multi-ats-jobs-feed/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H 'Content-Type: application/json' -d '{"companies": ["workable:huggingface", "teamtailor:polestar"], "maxJobsPerCompany": 20}'