Personio, Workable, Recruitee & Teamtailor Jobs Scraper avatar

Personio, Workable, Recruitee & Teamtailor Jobs Scraper

Pricing

$2.00 / 1,000 job listings

Go to Apify Store
Personio, Workable, Recruitee & Teamtailor Jobs Scraper

Personio, Workable, Recruitee & Teamtailor Jobs Scraper

Collects open jobs from company career sites on Personio, Workable, Recruitee, SmartRecruiters and Teamtailor through their public job feeds.

Pricing

$2.00 / 1,000 job listings

Rating

0.0

(0)

Developer

Swiss Alpine Data

Swiss Alpine Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Security

Limited permissions

Share

EU ATS Jobs Scraper is a Personio jobs scraper, Workable jobs scraper, Recruitee scraper, SmartRecruiters scraper and Teamtailor scraper in one actor. Paste company career pages and get every open job in one flat format, for hiring signals, sales leads, competitor monitoring or a job board.

Collects every open job from company career sites that run on the five applicant tracking systems most used by European companies: Personio, Workable, Recruitee, SmartRecruiters and Teamtailor. One actor, one flat output format, straight from the public job feeds that power the career pages. No browser, no login, no proxy.

What it does

You paste a list of company career pages (or short slugs). The actor recognizes the ATS from the URL, reads the public job feed of that career site, and stores each open position as one flat JSON record: title, company, department, location, remote mode, employment type, seniority, publication date, job link, apply link and the full description as plain text. A bare slug such as thermondo is tried on all five systems and the first one with open jobs wins.

Optional keyword and location filters keep only the jobs you care about, and you pay only for the jobs that pass them.

Why use it

  • One schema for five ATS. Personio sends XML, Teamtailor RSS, the others JSON with different field names. You get the same 18 fields from all of them.
  • European coverage. Most ATS scrapers in the Store target the US systems Greenhouse, Lever and Ashby. Personio is the leading HR platform for German speaking SMEs, Recruitee and Workable are common in the Netherlands, Greece and the UK, Teamtailor in the Nordics, SmartRecruiters at large groups such as Bosch.
  • Fresh data from the source. Career site feeds update the moment a recruiter publishes or closes a job, usually days before the job reaches the big boards.
  • Typical uses: monitor hiring at competitors or target accounts, sales triggers ("company X is hiring 5 engineers in Berlin"), job board aggregation, labor market research, recruiting agency lead lists.

Input

FieldTypeDescription
companieslist of strings, requiredOne company per line. A careers URL on the ATS domain, ats:slug, or a bare slug (tried on all five).
keywordsstringComma separated words. Keeps a job when its title or department contains any of them.
locationsstringComma separated cities or countries. Keeps a job when its location contains any of them.
includeDescriptionbooleanAdds the full job description as plain text. Default true.
maxItemsintegerMaximum number of jobs across all companies. Default 100.

Accepted company formats:

ATSCareers URLShort form
Personiohttps://ottonova.jobs.personio.depersonio:ottonova
Workablehttps://apply.workable.com/bluegroundworkable:blueground
Recruiteehttps://bunq.recruitee.comrecruitee:bunq
SmartRecruitershttps://jobs.smartrecruiters.com/BoschGroupsmartrecruiters:BoschGroup
Teamtailorhttps://polestar.teamtailor.comteamtailor:polestar

Example input:

{
"companies": [
"https://thermondo.jobs.personio.de",
"https://jobs.smartrecruiters.com/BoschGroup",
"polestar"
],
"keywords": "engineer, ingenieur, entwickler",
"locations": "germany, berlin, sweden",
"maxItems": 200
}

Output example

One record per open job. This is a real record from a test run, with the description shortened.

{
"source": "recruitee",
"company_slug": "bunq",
"company_name": "bunq",
"job_id": "2800490",
"title": "Data Scientist Marketing",
"department": "Growth",
"location": "Amsterdam, Noord-Holland, Netherlands",
"city": "Amsterdam",
"region": "Noord-Holland",
"country": "Netherlands",
"remote": "hybrid",
"employment_type": "fulltime_permanent",
"seniority": "experienced",
"published_at": "2026-10-28T13:21:58+00:00",
"url": "https://careers.bunq.com/o/data-scientist-marketing-3",
"apply_url": "https://careers.bunq.com/o/data-scientist-marketing-3/c/new",
"description": "At bunq, we're on a mission to Make Life Easy for our users by creating the most user-centric banking experience out there. ...",
"scraped_at": "2026-10-30T23:15:28.145188+00:00"
}

Field notes:

  • source is the ATS (personio, workable, recruitee, smartrecruiters, teamtailor). company_slug is the career site identifier you can reuse as input.
  • remote is onsite, hybrid, remote, or null when the career site does not say.
  • employment_type and seniority keep the wording of each ATS (for example permanent, full-time on Personio, Full-time on SmartRecruiters).
  • country is a name on most systems and an ISO code on SmartRecruiters. Personio feeds carry only the office name, so country is null there.
  • published_at and scraped_at are ISO 8601 timestamps. Missing values are null, never guessed.

You can download the dataset as JSON, CSV, Excel or HTML, or read it through the Apify API.

Pricing

This Actor uses pay per result. You pay USD 0.002 per job, which is USD 2.00 per 1,000 jobs. There is no charge per run or per company, and jobs removed by your filters are not charged.

JobsPrice
100USD 0.20
1,000USD 2.00
10,000USD 20.00

Tracking 50 companies with about 20 open jobs each every week costs about USD 2 per run, USD 8 per month. Set maxItems to cap the cost of a run.

Limitations

  • Only career sites hosted on the five ATS domains are supported. A company that shows its jobs on its own domain usually still has the ATS address behind it (look for links to jobs.personio.de, recruitee.com, teamtailor.com, workable.com or smartrecruiters.com on its careers page).
  • Teamtailor career sites on a fully custom domain are not detected from that domain. Use teamtailor:slug with the company's Teamtailor slug.
  • SmartRecruiters needs one extra request per job for the description, so large SmartRecruiters companies take about one second per job. Turn off includeDescription for fast overview runs.
  • Keyword and location filters run after the feed is read, so very large companies are still read in full before filtering.

The actor reads only the public job feeds that each ATS publishes for the career sites it hosts, the same data any visitor sees on the careers page. No login, paywall or bot protection is bypassed and no proxies are used. Job ads can contain names and contact details of recruiters. You are responsible for processing the collected data in line with the GDPR and the terms of the respective career sites.

FAQ

How do I find which ATS a company uses? Open the company's careers page and click a job. The address or the apply button usually points to one of the five ATS domains. You can also just enter the company name as a slug and the actor tries all five.

Why does a company return no jobs? Either it has no open jobs right now, or the slug is different from the company name. The log tells you which ATS was tried.

Can I monitor companies daily? Yes. Create a task with your company list and schedule it. Each run returns the currently open jobs, so new job_id values compared to the last run are the new openings.

Does it support Greenhouse, Lever or Ashby? Not in this actor, which focuses on European systems. Tell us in the Issues tab if you need them.

More public data actors by Swiss Alpine Data, all pay per result with no login:

Changelog

0.1 (2026-10-31): Initial release. Personio, Workable, Recruitee, SmartRecruiters and Teamtailor with URL detection, slug probing, keyword and location filters, and plain text descriptions.