Personio Jobs Scraper & API
Pricing
from $1.30 / 1,000 jobs
Personio Jobs Scraper & API
Scrape jobs directly from Personio ATS via one fast API. The best source for European SMBs (DACH + Iberia depth) across SaaS, e-commerce, healthcare & fintech. Zero ghost jobs, verified daily — built for job boards, AI agents & hiring research.
Personio Jobs Scraper & API — search 30,000+ live jobs scraped from Personio, Europe's leading HR platform for SMEs, dominant in the DACH region, used by companies like 1Komma5°, Stark, and Nüssli. One normalized JSON schema, verified daily, zero ghost jobs. Open the actor, hit Try for free, and run the default input (queries: ["Software Engineer", "Account Manager"]) — no code or API key required.
What does Personio Jobs Scraper do?
- Searches 30,000+ live Personio jobs across thousands of company boards in one call — no board tokens, no per-company setup
- Filters by work model, employment type, experience level, salary range, skills, companies, and posting date
- Excludes noise with negative keywords — prefix any query token with
-(["Software Engineer", "-staff"]) - Returns de-duplicated, verified listings — duplicates merged by company + canonical title + listing URL, expired jobs removed daily, so no ghost jobs
- Enriches every job with AI-extracted data: typed hard/soft skills, responsibilities, benefits, a 2–3 sentence summary, geocoded locations, USD-normalized salaries, and work-authorization signals (H1B sponsorship, clearance)
- Optionally attaches the full company profile — funding, leadership, ratings, tech stack, H1B history — with one switch
- Exports to JSON, CSV, or Excel, and plugs into schedules, webhooks, Zapier, Make, and the Apify API
Why scrape Personio jobs?
Personio is Europe's leading HR platform for small and mid-sized companies, and it dominates the DACH region — if a German Mittelstand company runs modern hiring software, there's a good chance it's Personio. That makes its boards one of the best windows into German SME hiring anywhere: engineering, operations, sales, and skilled-trades roles posted directly by employers, most of which never reach international job boards. If you're building products or research around the German-speaking labor market, Personio is the source that matters.
Jobo's live Personio index currently holds 30,000+ open roles, with about 84% in Germany and the rest spread across Spain, the UK, and Switzerland. Companies hiring through Personio right now include 1Komma5°, Stark, Nüssli, and neoshare — alongside thousands of smaller European SMEs.
Can I use the official Personio API instead?
Personio's only public jobs surface is a per-company XML feed ({company}.jobs.personio.de/xml) — XML-only, available only when the employer has enabled it, and you must already know each company's subdomain. There's no JSON, no search, no filtering, and no way to look across companies. No ATS offers a public cross-company search API. That's the gap this actor closes: one query across every Personio board Jobo indexes, with fields the official feed doesn't provide — geocoded locations, USD-normalized salaries, and AI-extracted skills.
What data can you extract from Personio?
Every result is a structured job record in Jobo's normalized schema — the same shape across all Jobo actors, so you can mix sources freely. Highlights:
| Field | Description |
|---|---|
title / normalized_title | Raw posting title + canonical title for grouping |
company | Company preview: name, website, logo, summary, industries (+ id for enrichment) |
locations | Geocoded: city, region, country, latitude/longitude |
compensation | {min, max, currency, period}, normalized to annual USD for filtering |
employment_type / workplace_type / experience_level | e.g. "Full-time" / "Remote" / "Mid Level" |
qualifications | AI-extracted must-have & preferred skills (typed hard/soft), education, certifications |
responsibilities / benefits | Bullet lists extracted from the description |
summary / description | 2–3 sentence AI recap + full description, HTML stripped |
listing_url / apply_url | Canonical Personio listing + direct apply link |
is_h1b_sponsor / is_work_auth_required / is_clearance_required | Work-authorization signals |
date_posted / created_at / updated_at | Employer posting date + Jobo index/refresh timestamps |
source | Always "personio" for this actor |
Set include_company_details: true to replace the company preview with the fully enriched profile: funding rounds and investors, leadership, employee ratings, tech stack, headcount and revenue bands, and H1B filing history. The complete field list is on this page's Output schema tab and at docs.jobo.world.
How much does it cost?
This actor uses pay-per-result pricing: you pay a fixed rate per job record returned — the current rate is in the pricing box on this page. There are no separate compute, proxy, or storage charges, and a run never returns more than page_size results, so spend is fully predictable. Apify's free plan includes enough credit to pull thousands of jobs, so you can evaluate the full dataset before paying anything.
How do I scrape Personio jobs?
- Open the actor and click Try for free — you'll need a free Apify account.
- Enter your search on the Input tab: keep the default
queries(["Software Engineer", "Account Manager"]) or add your own titles andlocations. - Narrow with filters (optional): work model, experience level, salary range, skills, or specific companies.
- Click Start. A typical run finishes in under a minute.
- Export your results from the Output tab as JSON, CSV, or Excel — or connect a schedule, webhook, or integration to make it run on autopilot.
⬇️ Input
Every field is optional — an empty input returns the newest Personio jobs. Up to 5 queries are OR-ed together; prefix a token with - to exclude it.
| Parameter | Type | Description |
|---|---|---|
queries | array (≤5) | Job titles or keywords, OR-ed. -token excludes. |
locations | array | Cities, regions, or countries — geocoded server-side. |
work_models | array | remote, hybrid, onsite. |
employment_types | array | full-time, part-time, contract, internship, freelance, temporary. |
experience_levels | array | intern, entry, mid, senior, lead, executive. |
skills_include / skills_exclude | array | Match against AI-extracted skills. |
companies_include / companies_exclude | array | Filter by company name (case-insensitive). |
min_salary_usd / max_salary_usd | integer | Annual USD bounds; jobs without a disclosed salary are excluded when set. |
posted_after / posted_before | string | ISO 8601 (2026-01-01) or relative (7 days ago). |
page / page_size | integer | Page 1–100 × 1–100 results per page (default 50). |
include_company_details | boolean | Attach the full enriched company profile (default false). |
The full input schema with defaults is on this page's Input schema tab.
Remote roles, biggest page
{"queries": ["Software Engineer"],"work_models": ["remote"],"page_size": 100}
Engineering roles in Berlin & München — German or English titles
{"queries": ["Software Engineer", "Softwareentwickler"],"locations": ["Berlin", "München"],"page_size": 100}
⬆️ Output example
Results land in the dataset under two views: Personio Job Listings (one row per job) and Company details (populated when include_company_details is on). Export as JSON, CSV, or Excel. A typical record:
{"id": "01ee8c9b-0e87-45ca-a32f-34955e710995","title": "Software Engineer - Golang (m/f/d)","normalized_title": "Software Engineer","summary": "Develop high-quality backend software and APIs using Golang and gRPC microservices for a connected fitness ecosystem…","company": {"id": "5b02e28a-2912-4735-9510-40d5ef0439c9","name": "EGYM","website": "https://egym.com","logo_url": "https://images.jobo.world/logos/egym.jpg","industries": ["Software"],"details_url": "https://connect.jobo.world/api/companies/5b02e28a-2912-4735-9510-40d5ef0439c9"},"locations": [{"location": "Germany, Munich","city": "Munich","region": "Bavaria","country": "Germany","latitude": 48.1371079,"longitude": 11.5753822}],"employment_type": "Full-time","workplace_type": "Hybrid","experience_level": "Mid Level","qualifications": {"must_have": {"skills": [{ "name": "Golang", "type": "hard" },{ "name": "gRPC", "type": "hard" },{ "name": "Microservices", "type": "hard" }]},"preferred": {"skills": [{ "name": "Java", "type": "hard" }]}},"listing_url": "https://egym.jobs.personio.de/job/2701960","apply_url": "https://egym.jobs.personio.de/job/2701960?apply","source": "personio","date_posted": "2026-07-07T09:09:54Z","description": "…full job description, HTML stripped…"}
What can you expect from a run?
- One run returns one page — up to 100 results per call. Walk
page1→100 to reach 10,000 jobs per query; for full-inventory pulls use ATS Jobs Feed (cursor pagination, 1,000 jobs per batch). - Freshness: every listing is re-verified daily; expired jobs are removed within 24 hours of disappearing from the source board.
- Salaries are normalized to annual USD using current FX rates, so
min_salary_usdworks across currencies. - Geocoding is best-effort — loose strings like
"Worldwide"won't geocode, but the raw location string is always preserved. industriescan be empty for long-tail companies that Jobo's enrichment pipeline hasn't profiled yet.sourceis always"personio"— handy for provenance when you mix datasets from several Jobo actors.
Integrations, API & MCP
Everything on the Apify platform works out of the box: schedules (hourly/daily/weekly runs), webhooks on run completion, and one-click integrations with Zapier, Make, n8n, Slack, Google Sheets, and Google Drive.
Prefer code? Call this actor as a Personio jobs API from Python or JavaScript with the Apify API clients — start a run, wait for it, and page through the dataset in a few lines (ready-made snippets are in the API section of this page). AI agents can run it through the Apify MCP server, which exposes this actor as a tool.
Use cases
| Who | What for |
|---|---|
| Job boards | German and DACH-focused boards fed by Personio's SME inventory |
| AI agents | Career copilots for the German-speaking market, grounded in live openings |
| Recruiters | Sourcing intel on which German SMEs are hiring — roles that never reach international boards |
| HR tech | European market dashboards scoped to Personio's DACH customer base |
| Salary research | Compensation benchmarks from European listings, USD-normalized for comparison |
| Market research | Hiring-velocity tracking across the German Mittelstand |
❓ FAQ
Should I use this actor or ATS Jobs API?
Use this actor if you only need Personio — simpler input, identical output schema. Use ATS Jobs API to search Personio together with Workday, SmartRecruiters, iCIMS, and 70+ other platforms in one call.
How do I download more than 10,000 jobs?
Use ATS Jobs Feed — it streams the full inventory with cursor pagination at 1,000 jobs per batch, built for ETL pipelines.
Are duplicate listings removed?
Yes. Jobo de-duplicates by company + canonical title + listing URL before results are returned, so cross-posted duplicates of the same role are merged.
Can I filter by salary?
Yes — min_salary_usd / max_salary_usd, matched against USD-normalized compensation. Jobs that don't disclose a salary are excluded whenever a salary filter is set.
How fresh is the data?
New Personio jobs are indexed within 24 hours of appearing; every listing is re-verified daily and removed within 24 hours of expiring.
Are Personio listings in German?
Many are — about 84% of live listings are in Germany, and plenty of employers post in German, while international companies and tech roles often post in English, so expect a mixed DE/EN dataset. Search works in either language ("Softwareentwickler" and "Software Engineer" are both valid queries); titles and descriptions keep their original language, while geocoded locations and USD-normalized salaries are language-independent.
Where can I check if the API behind this actor is up?
At jobo.world/status — the live status page for the Jobo Connect API that powers every Jobo actor.
⚖️ Is it legal to scrape Personio job listings?
Yes — this actor only extracts publicly posted job listings, the content employers publish specifically to be found and shared. It does not collect private user data. Note that scraped results can incidentally contain personal data (e.g., a recruiter's name in a job description); personal data is protected by the GDPR and similar regulations, so only process it with a legitimate reason and consult a lawyer if unsure. Read more in Apify's guide to the legality of web scraping.
Personio is a trademark of Personio. This actor is an independent product and is not affiliated with, endorsed by, or sponsored by Personio.
🔗 Related actors
| Actor | Best for |
|---|---|
| ATS Jobs API | Search 75+ ATS platforms in one call |
| ATS Jobs Feed | Bulk export for data pipelines — cursor pagination, 1,000 jobs/batch |
| AI Deep Job Search | Describe your ideal job in plain English, get AI-scored matches |
| Recruitee Jobs Scraper | 50,000+ jobs from Benelux and DACH companies on Recruitee |
| Workable Jobs Scraper | 210,000+ jobs from SMBs worldwide on Workable |
| Crunchbase Company Lookup | Funding, leadership, and tech-stack data for any company |
About Jobo & support
Jobo builds job-data infrastructure: a normalized, daily-verified index of jobs scraped directly from company ATS boards, powering job boards, AI agents, and HR-tech products.
- Questions or bugs? Open a ticket on this actor's Issues tab — issues are answered within hours.
- Website: jobo.world · Enterprise API: jobo.world/enterprise · API status: jobo.world/status
- Email: enrico@jobo.world