Personio Jobs API - Career Page Scraper, European Employers avatar

Personio Jobs API - Career Page Scraper, European Employers

Pricing

from $2.00 / 1,000 job results

Go to Apify Store
Personio Jobs API - Career Page Scraper, European Employers

Personio Jobs API - Career Page Scraper, European Employers

Personio jobs API and career page scraper. Read live postings from any Personio job board or careers page, or search thousands of known Personio ATS boards in one run. German, Austrian, Swiss and Dutch mid-market that US-built job tools do not reach.

Pricing

from $2.00 / 1,000 job results

Rating

0.0

(0)

Developer

Sulle H

Sulle H

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Personio Jobs Scraper — 5,172 European Career Sites

Personio is what small and mid-sized European companies run their hiring on — heavily German, Austrian, Swiss and Dutch, and almost entirely absent from job tools built around the US market. This Actor reads those boards: one company you name, or a bundled registry of 5,172 live Personio career sites carrying 41,685 open postings.

{ "keywords": ["entwickler", "developer"], "locations": ["berlin"], "maxJobs": 200 }
{ "companies": ["https://sennder.jobs.personio.de"] }

No login, no cookies, no proxies, no API key.

Why this coverage is hard to get elsewhere

Ask most job APIs for German mid-market hiring and you get whatever LinkedIn happened to syndicate. Personio boards live on <company>.jobs.personio.de, one subdomain per employer, with no public directory — the same shape that made Breezy invisible to path-based crawlers.

This registry was built by harvesting subdomains from the Wayback Machine index and validating each against the live endpoint. Entries returned real postings when they were checked, and a companion Actor re-validates the whole list on a schedule.

What you get

FieldDescription
providerAlways personio — the same schema the multi-ATS Actors below emit
company / companySlugEmployer subdomain
jobIdPersonio posting id — stable, so it works as a dedupe key across runs
titleJob title, as published (usually German, often with (m/w/d))
locationOffice name, e.g. Bremen Teerhof
departmentDepartment label
employmentTypeFestanstellung, Praktikum and so on, in the employer's own wording
applyUrlDirect link to the posting
scrapedAtWhen this row was read

Measured across live boards: title, location and employment type are present on 100% of rows, department on 98%.

What Personio does not publish

No description text and no posting date. The search endpoint returns the fields above and nothing more — descriptionText and postedAt are null on every row. Measured on 49 postings across live boards, the description field exists in the payload and is empty on all of them.

Two consequences worth planning for:

  • If you need body text, Greenhouse, Workable, Ashby and Pinpoint publish it. The Career Site Job Feed covers those in this same output schema.
  • Because there is no date, postedWithinDays keeps Personio rows rather than dropping them — their age is unknown, not old. The same rule applies to Workday.

Input

OptionWhat it does
keywordsKeep only titles containing one of these. Case-insensitive.
excludeKeywordsDrop titles containing any of these, e.g. praktikum, werkstudent.
locationsKeep only locations containing one of these.
remoteOnlyKeep postings whose office or schedule looks remote.
postedWithinDaysFreshness filter. Personio rows have no date and are always kept.
companiesSubdomains or board URLs. Leave empty to search all 5,172.
maxBoardsHow many boards to scan, largest-first.
maxJobsHard cap on rows, so a run costs what you expect.

Searching in German pays off here — entwickler, vertrieb, pflege, buchhaltung will match more than their English equivalents on most of these boards.

Finding a company slug

The board lives at <slug>.jobs.personio.de, so the slug is the subdomain. Paste the whole URL if you prefer — the Actor pulls the subdomain out. Some employers use the .com domain instead; both are in the registry.

Or run without companies and read the companySlug column.

Recipes

Cover the German-speaking market properly. One run returns roles from hundreds of Mittelstand employers that no English-language aggregator lists.

Track a shortlist. Ten slugs in companies, run daily, diff the jobId set — new ids are openings, missing ids are roles that closed.

Market research on EU hiring. Departments and offices across the registry show where European mid-market headcount is going.

Pricing

Pay per result — you are charged per job row delivered. A board that fails or returns nothing costs you nothing. Platform usage is included rather than billed on top.

Beyond Personio

Companies move between applicant tracking systems, and most job-data projects need more than one:

  • Career Site Job Feed — the same engine across every platform in this family, in one run, with an identical output schema.
  • New Job Alerts — the same coverage, but each run returns only what appeared since the previous run.

Notes

  • A dead slug never aborts the run. Failures land in a FAILED_BOARDS record in the key-value store, with the reason for each.
  • companySlug:jobId is a stable key, safe for detecting what opened and closed between runs.
  • No login, no proxies, no API key. Personio publishes this endpoint openly. Private boards are invisible to every scraper, including this one.