# 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.

**Canonical URL:** https://jobspipe.dev/sources/personio

## Coverage

- **Sources covered:** All public Personio careers sites (jobs.personio.com and jobs.personio.de tenants)
- **Freshness:** 24h refresh
- **History retention:** 12 months retention

## Why Personio jobs data is confusing

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.

## Workarounds

### 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.

### 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.

### Use JobsPipe

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

## Fields available on every record

- `id`
- `source`
- `tenant`
- `title`
- `company`
- `location`
- `salary`
- `employment_type`
- `remote`
- `posted_at`
- `expires_at`
- `apply_url`
- `description`

## Sample response

```json
{
  "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>"
}
```

## FAQ

### What is the Personio API?

The Personio API is the tenant-scoped REST surface at developer.personio.de covering a customer's own HR data: employees, absences, attendances, and the Recruiting API for that company's jobs and applications. Credentials are minted per customer inside the Personio admin, so it reads one company's data only. For job postings across many Personio customers, JobsPipe indexes every public Personio careers site into one normalized feed.

### What is the Personio Open API?

Personio's name for its public developer platform - the documented REST endpoints, webhooks, and integration marketplace at developer.personio.de. 'Open' means documented and available to customers and their vendors, not open to anonymous use: every call still authenticates with a Client ID and Secret scoped to one Personio tenant.

### 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. "job_country_code_or": ["DE", "AT", "CH"] in the JSON body of POST /v1/jobs/search restricts to Germany, Austria, Switzerland - any ISO country codes work.

### Does JobsPipe include Personio applicant or candidate data?

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

## Personio Open API

Personio markets its developer platform as the Personio Open API: REST endpoints for employees, absences, attendances, documents, and recruiting, plus webhooks and an integration marketplace, all documented at developer.personio.de. The 'open' refers to public documentation and self-serve credential minting for customers - not anonymous access. Every credential pair (Client ID + Client Secret, issued under Settings > Integrations > API Credentials) is bound to one Personio tenant, and the Recruiting API within it exposes that one company's jobs and applications. What the Open API does not offer is any cross-customer surface: there is no endpoint that returns postings across the 14,000+ companies running on Personio. That aggregation layer - every public Personio careers site, one endpoint, one key - is what JobsPipe provides on top.

## 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.

## Related

- **Product:** https://jobspipe.dev/jobs-api
- **All sources:** https://jobspipe.dev/sources
- **Docs:** https://jobspipe.dev/docs
- **Sign up (free tier):** https://jobspipe.dev/signup

---
Generated from structured data. View the rendered page at https://jobspipe.dev/sources/personio.