Personio Jobs Scraper avatar

Personio Jobs Scraper

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Personio Jobs Scraper

Personio Jobs Scraper

Scrape open jobs from any company's Personio careers site: titles, departments, offices, employment type, seniority, schedule, experience, keywords, pay details and full descriptions in your language. Paste a careers site URL, get clean JSON. No login, no API key, no proxy.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

Anyx Solutions

Anyx Solutions

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Categories

Share

banner

Personio Jobs Scraper

Every open job on any company's Personio careers site — with full descriptions, offices, employment details and pay sections — as clean JSON.

Personio is the HR platform behind the careers sites of tens of thousands of small and mid-sized companies across Germany and Europe, from XITASO and Cloover to ottonova and 1KOMMA5°. This Actor reads any of those careers sites and returns every open job: title, hiring company, department, recruiting category, main office and every additional office, employment type, seniority, schedule, years of experience, occupation, keywords, the creation date, and the full description as HTML, plain text and named sections, plus the pay section whenever the company publishes one. Pick the language you want the descriptions in; jobs the company has not translated come in the site's own language. Paste a careers site URL; there is no login, no API key, and no proxy to configure. Built for job aggregators, recruiting and talent-intelligence teams, salary benchmarking, and hiring-signal tracking across the European SME market.

⚡ Quick start

{
"startUrls": [{ "url": "https://xitaso.jobs.personio.de/" }],
"language": "en",
"maxItems": 5
}

🧩 Input

FieldTypeRequiredDefaultDescription
startUrlsarrayyes—Personio careers site URLs (https://<company>.jobs.personio.de/ or .com) or single job URLs from one (…/job/<id>).
languagestringnoenDescription language: en, de, fr, es, it, nl, pt, pl, cs, sv, da, fi or no. Untranslated jobs come in the site's default language.
maxItemsintegerno—Maximum number of jobs per start URL. The input form starts at 5; leave it empty to get the whole careers site.
proxyConfigurationobjectno{ "useApifyProxy": false }Proxy settings. Personio careers sites need no proxy.

Finding a company's careers site. Every Personio customer has an address of the form https://<company>.jobs.personio.de/ (the same site also answers on .jobs.personio.com). Many companies link to it from the "Careers" or "Jobs" page of their own website; open any job there and look for jobs.personio in the address bar or the apply link. Custom domains are not supported as input, so use the <company>.jobs.personio.de address. A ?language=de (or any other language) on a start URL overrides the Description language for that URL.

📤 Output

Each open job is one dataset row.

Fields

FieldTypeDescription
idnumberPersonio job ID.
titlestringJob title, in the description's language.
companystringHiring company: the legal entity the job is posted for, or the careers site's name when none is given.
companySlugstringThe company's subdomain on jobs.personio.de.
careersSiteUrlstringThe company's careers site on Personio.
urlstringThe job's public page.
applyUrlstringThe job's application form.
departmentstringDepartment name.
recruitingCategorystringThe company's own recruiting category for the job.
officestringMain office.
additionalOfficesarrayOther offices the job is open in.
employmentTypestringEmployment type, such as permanent, fixed_term, intern, working_student or trainee.
senioritystringSeniority, such as entry-level, experienced, executive or student.
schedulestringSchedule: full-time, part-time or full-or-part-time.
yearsOfExperiencestringYears of experience asked for, such as lt-1, 1-2, 2-5, 5-7, 7-10 or 10-15.
occupationstringOccupation, such as software_and_web_development.
occupationCategorystringOccupation category, such as it_software.
keywordsarrayKeywords the company added to the job.
createdAtstringWhen the job was created (ISO 8601, UTC).
salaryTextstringPlain text of the description section about pay ("Salary information", "Gehalt", …), when the job has one.
descriptionHtmlstringFull job description as HTML, each section under an <h2> heading.
descriptionTextstringFull job description as plain text, each section under its heading.
sectionsarrayThe description as the company wrote it: one { heading, html, text } object per section, such as "Your tasks".

💡 Use cases

  • Job aggregation — feed job boards, newsletters and niche listing sites with fresh postings from German and European SMEs.
  • Salary benchmarking — collect the pay ranges companies publish under Germany's and the EU's pay-transparency push.
  • Hiring signals — watch which departments and offices a company is growing, for sales prospecting or investment research.
  • Recruiting intelligence — monitor competitors' open roles, seniority mix and how long they stay open.

❓ FAQ

  • Do I need an API key or a Personio account? No. The Actor reads the same public careers sites any candidate sees.
  • Do I need a proxy? No. It runs without one by default.
  • Why is a description in German when I chose English? Companies translate jobs one by one. A job without an English version comes in the careers site's default language (or, failing that, in English or German), so you get a description whenever the company wrote one. The job's url opens it in the same language.
  • Why is salaryText empty? Personio has no separate salary field, so pay only appears when the company writes it into a section of the description, such as "Salary information" or "Gehalt". salaryText is null when no such section exists; the full description is still in descriptionText.
  • The company's careers page is on its own domain. Custom domains are not supported as input. Use the company's https://<company>.jobs.personio.de/ address; the jobs are the same.
  • Can I scrape many companies at once? Yes. Add one careers site URL per company to startUrls; maxItems applies to each one separately.
  • Why did a run return no jobs? The company name in the URL may be wrong, the company may have no open jobs, or it may have switched its public job listing off; the log says when a careers site is not found. Open an issue if something looks off.

🔗 More scrapers by Anyx

🤝 Anyx Solutions

We build custom scrapers and data-extraction pipelines.

🖼 Image credit

Image credit: personio.com