Personio Jobs Scraper & API avatar

Personio Jobs Scraper & API

Pricing

from $1.30 / 1,000 jobs

Go to Apify Store
Personio Jobs Scraper & API

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.

Pricing

from $1.30 / 1,000 jobs

Rating

0.0

(0)

Developer

Enrico

Enrico

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

2

Monthly active users

a day ago

Last modified

Categories

Share

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.

Service Status

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:

FieldDescription
title / normalized_titleRaw posting title + canonical title for grouping
companyCompany preview: name, website, logo, summary, industries (+ id for enrichment)
locationsGeocoded: city, region, country, latitude/longitude
compensation{min, max, currency, period}, normalized to annual USD for filtering
employment_type / workplace_type / experience_levele.g. "Full-time" / "Remote" / "Mid Level"
qualificationsAI-extracted must-have & preferred skills (typed hard/soft), education, certifications
responsibilities / benefitsBullet lists extracted from the description
summary / description2–3 sentence AI recap + full description, HTML stripped
listing_url / apply_urlCanonical Personio listing + direct apply link
is_h1b_sponsor / is_work_auth_required / is_clearance_requiredWork-authorization signals
date_posted / created_at / updated_atEmployer posting date + Jobo index/refresh timestamps
sourceAlways "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?

  1. Open the actor and click Try for free — you'll need a free Apify account.
  2. Enter your search on the Input tab: keep the default queries (["Software Engineer", "Account Manager"]) or add your own titles and locations.
  3. Narrow with filters (optional): work model, experience level, salary range, skills, or specific companies.
  4. Click Start. A typical run finishes in under a minute.
  5. 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.

ParameterTypeDescription
queriesarray (≤5)Job titles or keywords, OR-ed. -token excludes.
locationsarrayCities, regions, or countries — geocoded server-side.
work_modelsarrayremote, hybrid, onsite.
employment_typesarrayfull-time, part-time, contract, internship, freelance, temporary.
experience_levelsarrayintern, entry, mid, senior, lead, executive.
skills_include / skills_excludearrayMatch against AI-extracted skills.
companies_include / companies_excludearrayFilter by company name (case-insensitive).
min_salary_usd / max_salary_usdintegerAnnual USD bounds; jobs without a disclosed salary are excluded when set.
posted_after / posted_beforestringISO 8601 (2026-01-01) or relative (7 days ago).
page / page_sizeintegerPage 1–100 × 1–100 results per page (default 50).
include_company_detailsbooleanAttach 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 page 1→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_usd works across currencies.
  • Geocoding is best-effort — loose strings like "Worldwide" won't geocode, but the raw location string is always preserved.
  • industries can be empty for long-tail companies that Jobo's enrichment pipeline hasn't profiled yet.
  • source is 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

WhoWhat for
Job boardsGerman and DACH-focused boards fed by Personio's SME inventory
AI agentsCareer copilots for the German-speaking market, grounded in live openings
RecruitersSourcing intel on which German SMEs are hiring — roles that never reach international boards
HR techEuropean market dashboards scoped to Personio's DACH customer base
Salary researchCompensation benchmarks from European listings, USD-normalized for comparison
Market researchHiring-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.

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.

ActorBest for
ATS Jobs APISearch 75+ ATS platforms in one call
ATS Jobs FeedBulk export for data pipelines — cursor pagination, 1,000 jobs/batch
AI Deep Job SearchDescribe your ideal job in plain English, get AI-scored matches
Recruitee Jobs Scraper50,000+ jobs from Benelux and DACH companies on Recruitee
Workable Jobs Scraper210,000+ jobs from SMBs worldwide on Workable
Crunchbase Company LookupFunding, 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.