Source · Personio

Personio Jobs API.

Personio runs HR for 14,000+ companies across Europe - most aggregators miss it. JobsPipe normalizes every public Personio posting into the same shape as Workday, Greenhouse, and 30+ other sources.

All public Personio careers sites (jobs.personio.com and jobs.personio.de tenants)
24h refresh
12 months retention

Why people are confused about the Personio API

Personio is dominant in Germany, Austria, and Switzerland but most US-focused aggregators index zero Personio jobs - leaving a real EU coverage gap.

Personio uses two careers domains in active rotation: jobs.personio.com (international) and jobs.personio.de (German default). Tenants can land on either.

Personio's own Recruiting API at developer.personio.de requires per-customer API credentials minted inside each company's Personio admin - so aggregation across the Personio universe is not a first-party feature.

Option 1
Scrape jobs.personio.com/<company>

Brittle. Personio renders posting structure differently across plan tiers (Essential, Professional, Enterprise) and across the .com vs .de domains, so a scraper tuned for one tenant breaks on the next.

Option 2
Get Recruiting API credentials per company

Requires a sales conversation per company - each customer needs to mint you a Client ID + Client Secret inside their Personio admin. Doesn't scale past a handful of tenants.

Option 3
Use JobsPipe

Every public Personio tenant under one endpoint. Same JSON shape as Workday, Greenhouse, Lever, BambooHR. Pre-mapped DACH locations. One JobsPipe key.

Personio API documentation

Personio's developer documentation lives at developer.personio.de and covers the Recruiting API (jobs, applications, candidates), the HR API (employees, time-off, payroll), and webhooks for downstream automation. All endpoints are tenant-scoped - the customer's Personio admin mints credentials that see only that customer's data. There is no cross-tenant aggregator endpoint. JobsPipe's documentation at /docs covers the unified JSON schema we return for every public Personio careers site, alongside 30+ other ATSs in the same shape.

Personio API key

Personio API credentials are issued as Client ID + Client Secret pairs inside the customer's Personio admin under Settings > Integrations > API Credentials. Each pair is scoped to a single Personio tenant, and Personio does not mint cross-tenant developer keys or aggregator credentials. JobsPipe doesn't require any Personio credentials. We consume only public-facing jobs.personio.com and jobs.personio.de pages and authenticate every request with one JobsPipe key.

Personio API integration

Single-tenant Personio integration (sync employees, post jobs, configure HR workflows) requires Client ID/Secret minted by that customer. Cross-tenant aggregator integration - what most teams aggregating EU jobs actually need - is JobsPipe: every public Personio tenant under one endpoint, normalized into the same JSON schema as 30+ other ATSs, with no per-customer onboarding.

Sample request

curl "https://api.jobspipe.dev/v1/jobs?source=personio" \
     -H "Authorization: Bearer $JOBSPIPE_KEY" \
     -H "Accept: application/json"

Sample response

{
  "id": "personio:munichre:senior-data-engineer-58291",
  "source": "personio",
  "tenant": "munichre",
  "title": "Senior Data Engineer",
  "company": "Munich Re",
  "location": {
    "country": "DE",
    "region": "Bavaria",
    "city": "Munich",
    "formatted": "Munich, Germany"
  },
  "salary": null,
  "employment_type": "full_time",
  "remote": "hybrid",
  "department": "Engineering",
  "posted_at": "2026-05-08T09:00:00Z",
  "expires_at": null,
  "apply_url": "https://jobs.personio.com/munichre/job/58291",
  "description": "<p>Munich Re seeks a Senior Data Engineer...</p>"
}

Every Personio job record is returned in the same JSON shape as every other JobsPipe source. The full schema is documented in the docs.

Fields in every Personio job record

idsourcetenanttitlecompanylocationsalaryemployment_typeremoteposted_atexpires_atapply_urldescription

FAQ

Does JobsPipe cover both jobs.personio.com and jobs.personio.de?+

Yes. Both domains are indexed, with the canonical posting deduped if a tenant publishes to both.

Are job descriptions in German or English?+

Whatever the company posted them in. JobsPipe preserves the original language and surfaces a language code in the response when detected.

Can I filter to DACH-only postings?+

Yes. ?country=DE,AT,CH restricts to Germany, Austria, Switzerland - any ISO country code or comma-separated list works.

Does JobsPipe include Personio applicant or candidate data?+

No. JobsPipe is jobs-only. Applicant data is private to each Personio customer's Recruiting API.

Try Personio data free - 5,000 requests/month, no credit card.

Get a free API key