Jobs API endpoint
Lists a company's public Personio board feed in the shared Job shape with detail inline, optionally filtered by department, location, or remote. The company is the Personio subdomain from its careers URL https://{company}.jobs.personio.de/.
/jobs/personio/feedQuery parameters:
company (required) — the Personio subdomain from its careers URL https://{company}.jobs.personio.de/ (e.g. getquin).department (optional) — filter: department contains (case-insensitive).location (optional) — filter: location contains (case-insensitive).remote (optional, bool) — filter by remote; accepts true or false.Returns provider, company, count, total, and jobs[] (each: provider, id, title, company, department, location, remote, employment_type, url, apply_url, posted_at, description_html, description_text, compensation, compensation_min, compensation_max, compensation_currency, compensation_period) plus source_url. A moved or unknown tenant (Personio redirects it to its marketing site) returns an upstream 503, never an empty board. Personio has no structured compensation field; the compensation_* fields are populated only when the description states an explicit pay figure near a salary/compensation keyword (many postings state no figure at all, in which case they stay empty).
| Field | Filled in, of 9 checked | Values in the sample |
|---|---|---|
| provider | 9 | |
| id | 9 | |
| title | 9 | |
| company | 9 | |
| department | 9 | |
| location | 9 | |
| employment_type | 9 | |
| url | 9 | getquin.jobs.personio.de |
| apply_url | 9 | getquin.jobs.personio.de |
| posted_at | 9 | 2022-03-28 to 2026-09-22 |
| description_html | 8 | median 2,872 characters |
| description_text | 8 | median 2,670 characters |
| remote | 1 | true in 1 of 1 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| company | string | Yes | Personio subdomain (careers URL) | getquin | |
| department | string | No | Filter: department contains | ||
| location | string | No | Filter: location contains | ||
| remote | boolean | No | Filter by remote (true or false) | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/jobs/personio/feed?company=getquin&remote=true" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"provider": "personio",
"company": "getquin",
"count": 8,
"total": 8,
"jobs": [
{
"provider": "personio",
"id": "2334688",
"title": "Business Development Manager (f/m/d)",
"company": "getquin",
"department": "Business Development",
"location": "Berlin",
"remote": false,
"employment_type": "full-time",
"url": "https://getquin.jobs.personio.de/job/2334688",
"apply_url": "https://getquin.jobs.personio.de/job/2334688",
"posted_at": "2025-09-12T18:32:55Z",
"description_html": "<h3>Was wir tun</h3>\n<p>…</p>",
"description_text": "…"
}
],
"source_url": "https://getquin.jobs.personio.de/xml"
}
}Request schema
No body schema
Response schema
#/definitions/jobs.boardResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | jobs.BoardResponse | No | ||||
| data.company | string | No | Company or board name the postings belong to. | |||
| data.count | integer | No | Number of jobs returned in this response. | |||
| data.jobs | array | No | Job postings on the board, one item per posting. Job record, 32 fields: ai_tools_mentioned, apply_url, benefits_mentioned, company, company_logo_url, compensation, compensation_currency, compensation_max, compensation_min, compensation_period, department, description_html and 20 more. Described under iCIMS Single Job API. | |||
| data.provider | string | No | Applicant tracking system the board was read from, for example `greenhouse` or `lever`. | |||
| data.source_url | string | No | URL the data was read from. | |||
| data.total | integer | No | Total number of open postings on the board, when the provider reports it. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/jobs/personio/feed?company=getquin&remote=true" \
-H "x-api-key: $CRAWLORA_API_KEY"