Personio Jobs Scraper: Job Listings, Salaries, Departments
Pricing
from $0.76 / 1,000 job ads
Personio Jobs Scraper: Job Listings, Salaries, Departments
Job ads from any company's Personio careers feed: title, department, office, employment type, schedule, seniority, salary when published, keywords and the full description in the language you choose. Add company names or links, filter by office, department or date, pay per job. No personal data.
Pricing
from $0.76 / 1,000 job ads
Rating
0.0
(0)
Developer
Rowcraft
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Share
Get every open job from the Personio career pages of the companies you choose, as clean, flat JSON, CSV or Excel. List as many companies as you like in one run. The actor reads each company's public Personio job feed, the XML feed Personio offers for showing jobs on websites, not a rendered page, so it is fast and does not break when a careers page changes its design.
For each job you get the title, legal entity, every office, department, employment type, seniority, schedule, years of experience, occupation category, keywords, creation date, the salary range when the employer publishes it, and the full description split into its sections ("Your tasks", "Your profile", "Benefits"…).

What you get
One row per job:
- Job: Personio job ID, title, job page, the company's careers page
- Company: Personio name and legal entity (for groups with several companies on one account)
- Place: main office, other offices, all offices as a list
- Classification: department, recruiting category, employment type, seniority, schedule, years of experience, occupation and occupation category, keywords
- Salary: minimum, maximum, currency and period (year, month, hour), when the employer publishes it
- Dates and language: created, and the language of the delivered text
- Texts: the description as sections (title + text) and as one text; optional HTML
Why this actor
- Text in a language the ad actually has. Personio's feed comes in German unless you ask for another language, and an ad the employer wrote only in Spanish then comes with no text at all. In automatic mode the actor asks for German first, then for the other languages, until every ad has its text, and tells you the language of each row. In our tests a Spanish company's ads had text only in Spanish, a German company wrote all its ads only in English, and one group mixed German, English, French, Spanish and Portuguese ads.
- Salary when it exists. About one Personio ad in eight carries a salary range (108 of 874 ads in our sample); the actor returns it as numbers you can sort and filter, and a filter keeps only jobs with a salary.
- Sections kept apart. Tasks, profile, benefits and the rest come as separate texts, ready to analyse or display.
- .de or .com, found for you. Companies sit on
jobs.personio.deorjobs.personio.com; give the name and the actor finds the right one. - Contact persons removed. E-mail addresses, phone numbers,
mailto:links and the names of contact persons written into the ads are removed. See the privacy section. - Clear results for every company. The run summary lists companies that are not on Personio, those with no open jobs, and job links that are no longer online.
- You stay in control of cost. Pay per job. The run stops cleanly when your maximum charge is reached.
How to use it
- Open the Actor and fill in Companies (the other fields are optional filters).
- Set Maximum job ads to a small number for a first try (the default is a safe start).
- Click Start. The status line shows progress; the run stops cleanly at your limit or at the charge limit you set in the run options.
- Open the Dataset tab and download JSON, CSV, Excel, XML or HTML, or send the rows to Google Sheets, Slack, Make, n8n or Zapier with the Integrations tab.
- To run it on a schedule, use Schedules in Apify Console and turn on Only new rows since the last run below: every run then costs only the new rows, and a webhook URL tells you when something new came in.
Input
| Field | What it does |
|---|---|
companies, lists | Personio names (stark), careers addresses (https://lindalgroup.jobs.personio.com/) or job links (only that job); ready-made lists picked in the form |
language | auto (default) or a language: de, en, es, fr, it, nl, pt, pl |
languageFallback | On (default): an ad without text in your language comes in the language the employer wrote. Off: your language only |
includeDescription, includeHtmlDescription | Ad texts on or off; HTML as well |
keywords, keywordsInDescription | Keep jobs whose title or keywords contain any of these words (optionally the text too) |
offices, departments | Keep jobs in these offices or departments |
employmentTypes, schedules, seniorities | Permanent, internship, working student…; full-time, part-time; entry level, experienced… |
withSalaryOnly | Only jobs with a published salary |
postedAfter | 2026-10-01, yesterday, 7 days, 2 weeks |
maxItems, maxItemsPerCompany | Limits. 0 = no limit. The newest jobs of each company come first |
onlyNew, stateName, notifyUrl, notifyWhenEmpty | Only new rows, notifications: see Automation below |
Finding a company's Personio name: open its careers page; if the address is <name>.jobs.personio.de (or .com), that is the name. You can also paste the address or any job link from it.
Example: full-time engineering jobs with a published salary, from three companies, created in the last month.
{"companies": ["stark", "pmx", "https://lindalgroup.jobs.personio.com/"],"keywords": ["engineer", "ingenieur"],"schedules": ["full-time"],"withSalaryOnly": true,"postedAfter": "30 days"}
Output
28 fields per row. Empty values are null, never missing, so CSV and Excel columns are stable.
| Field | Type | Example |
|---|---|---|
id | string | 2324258 |
company | string | stark |
companyName | string | STARK |
legalEntity | string | SKD SE |
title | string | Job title |
office | string | Munich |
additionalOffices | array | Other offices |
offices | array | All offices |
department | string | Department |
recruitingCategory | string | Recruiting category |
employmentType | string | permanent |
seniority | string | experienced |
schedule | string | full-time |
yearsOfExperience | string | 2-5 |
occupation | string | Occupation |
occupationCategory | string | engineering |
keywords | array | Keywords |
salaryMin | number | Salary from |
salaryMax | number | Salary to |
salaryCurrency | string | EUR |
salaryPeriod | string | year |
createdAt | string | 2026-09-14T08:12:44+00:00 |
language | string | de |
url | string | Job page |
careersPage | string | Careers page |
descriptionSections | array | Description sections (title + text) |
descriptionText | string | Description |
descriptionHtml | string | Description (HTML) |
Example rows
Two real rows from a run (long texts shortened here, complete in the dataset):
[{"id": "2822900","company": "munerio","companyName": "munerio consulting GmbH","legalEntity": "Munerio Consulting GmbH","title": "Area Sales Manager Antriebstechnik (all genders) Nord- und Mitteldeutschland","office": "Hamburg","additionalOffices": ["Berlin, Brandenburg, Sachsen, Sachsen-Anhalt, Mecklenburg-Vorpommern, Thüringen (remote)","Ruhrgebiet"],"offices": ["Hamburg","Berlin, Brandenburg, Sachsen, Sachsen-Anhalt, Mecklenburg-Vorpommern, Thüringen (remote)","Ruhrgebiet"],"department": "Antriebs & Fluidtechnik","recruitingCategory": "Festangestellte","employmentType": "permanent","seniority": "experienced","schedule": "full-time","yearsOfExperience": "2-5","occupation": "field_sales","occupationCategory": "sales_and_business_development","keywords": ["Antriebstechnik","Thüringen","Sales","… 1 more"],"salaryMin": 75000,"salaryMax": 95000,"salaryCurrency": "EUR","salaryPeriod": "year","createdAt": "2026-10-01T09:45:42+00:00","language": "de","url": "https://munerio.jobs.personio.de/job/2822900?language=de","careersPage": "https://munerio.jobs.personio.de/","descriptionSections": [{"title": "Unser Mandant","text": "Für ein international tätiges Technologieunternehmen im Bereich Linear-, Antriebs- und Positioniertechnik suchen wir einen Gebietsverkauf…"},{"title": "Ihre Aufgaben","text": "• Neukundenakquise sowie Betreuung bestehender Kunden im PLZ-Gebiet: 1*, 2* und 4*\n• Ziel ist die technische Beratung und Lösungssuche be…"},{"title": "Ihr Profil","text": "• Vorzugsweise ein abgeschlossenes technisches Studium, eine Weiterbildung zum Techniker oder eine technische Ausbildung mit langjähriger…"},"… 4 more"],"descriptionText": "Unser Mandant\nFür ein international tätiges Technologieunternehmen im Bereich Linear-, Antriebs- und Positioniertechnik suchen wir einen…"},{"id": "2823726","company": "munerio","companyName": "munerio consulting GmbH","legalEntity": "Munerio Consulting GmbH","title": "Konstrukteur:in Antriebstechnik & Elektromotoren (all genders)","office": "Nürnberg","additionalOffices": [],"offices": ["Nürnberg"],"department": "Antriebs & Fluidtechnik","recruitingCategory": "Festangestellte","employmentType": "permanent","seniority": "experienced","schedule": "full-time","yearsOfExperience": "2-5","occupation": "mechanical_engineering","occupationCategory": "engineering","keywords": ["Konstruktion","Elektromotoren","Antriebstechnik","… 2 more"],"salaryMin": 65000,"salaryMax": 75000,"salaryCurrency": "EUR","salaryPeriod": "year","createdAt": "2026-10-01T16:05:35+00:00","language": "de","url": "https://munerio.jobs.personio.de/job/2823726?language=de","careersPage": "https://munerio.jobs.personio.de/","descriptionSections": [{"title": "Unser Mandant","text": "Für unseren Mandanten, einen etablierten mittelständischen Hersteller kundenspezifischer elektrischer Antriebslösungen, suchen wir zum nä…"},{"title": "Ihre Aufgaben","text": "• Sie konstruieren und konfigurieren kundenspezifische Varianten bestehender Elektromotoren und Baugruppen.\n• Sie passen vorhandene Konst…"},{"title": "Ihr Profil","text": "• Sie verfügen über ein abgeschlossenes Studium im Maschinenbau, eine Weiterbildung zum/zur Techniker oder eine vergleichbare technische…"},"… 4 more"],"descriptionText": "Unser Mandant\nFür unseren Mandanten, einen etablierten mittelständischen Hersteller kundenspezifischer elektrischer Antriebslösungen, suc…"}]
Results can be downloaded as JSON, CSV, Excel, XML or HTML from the Dataset tab, or read through the Apify API.

Pricing
Pay per result. You pay for each job ad delivered to your dataset, nothing else: no subscription, no minimum, no charge for rows your filters drop or for the requests behind them.
| Your Apify plan | Price per 1,000 rows | Price per row |
|---|---|---|
| Free plan | $1.00 | $0.001 |
| Starter plan | $0.92 | $0.00092 |
| Scale plan | $0.84 | $0.00084 |
| Business plan and above | $0.76 | $0.00076 |
Example: 1,000 job ads cost $1.00 on the Free plan and $0.76 on the Business plan. The Apify platform usage of a run (compute, storage) is small for this actor — well under one cent per 1,000 rows — and is billed by Apify separately, as for every Actor.
A start event of $0.00005 is charged once per run (Apify default).
Cap your spend: set Maximum total charge in the run options. The actor stops cleanly when the cap is reached and you keep everything delivered until then. The run summary (RUN_SUMMARY in the key-value store) says why a run stopped.
Automation: only new rows, notifications, schedules
Only new rows since the last run. Turn on onlyNew and the actor remembers every job ad it delivered to you (in a key-value store named rowcraft-personio-jobs-scraper-state in your Apify account). The next run with the same stateName skips what you already have and you pay only for new rows. The first run delivers everything that matches. Use a different stateName for each schedule or search so they keep separate memories.
Notification when the run ends. Put a webhook address in notifyUrl and the actor sends one JSON POST with the number of new rows, links to the dataset (JSON and CSV) and the run. It works out of the box with Slack and Discord incoming webhooks (the message is in text and content), with Make, n8n and Zapier catch hooks, and with your own endpoint. By default it is sent only when there is at least one new row; notifyWhenEmpty sends it every time.
Schedules. Create a schedule in Apify Console (hourly, daily, weekly or cron) with onlyNew on. A daily schedule gives you a feed of new job ads for the price of the new rows only.
Integrations. Send the results to Make, n8n, Zapier, Google Sheets, Slack, Google Drive, Airtable or any webhooks from the Integrations tab of the Actor, with no code. Apify also offers native actions for Make, n8n and Zapier.
API, SDKs and AI agents. Every run is available through the Apify API and the official JavaScript and Python clients; the Actor can also be called by AI agents through the Apify MCP server. The example input in the API tab is a working call.
Use cases
- Job boards and aggregators: a clean feed from DACH and European companies that hire through Personio, with salary and sections.
- Recruiting and sales intelligence: who is hiring, for which roles, in which offices, from a list of target companies.
- Market research: salary ranges, working-student and internship offers, seniority mix across companies.
- Monitoring: schedule a daily run with
postedAfter: "yesterday"to get only new jobs.
Ready-made examples, each with the input filled in (open one and press Start, or save it as your own task):
- Get open jobs from German companies on Personio
- Find working student jobs (Werkstudent) in Germany
- Get jobs in Berlin from Personio career pages
What this actor does not do
- Search across all of Personio by keyword: you bring the company names or career-page addresses, or pick a ready-made list (Personio publishes no company list; ours holds the Personio companies we found). Keyword, office and department filters apply to the companies you read.
- Applications, candidates or recruiter contacts: never read.
- Companies that switched their public job feed off: they show as "not found" in the coverage report.
- Career pages on other systems (Workable, Recruitee, Teamtailor, Greenhouse…): see the other Rowcraft actors.
Limits and fair use
- One request per second by default (you can go down to 250 ms). A company takes one request, two when the actor has to try the other domain, plus one per extra language, made only while some ads still have no text. A company whose ads have no text in any language takes up to nine requests.
- Personio has no public list of companies: you bring the company names or addresses.
- The feed is the whole list of a company's published jobs; filters are applied after reading it, and only delivered jobs are charged.
- A company that exists but publishes no jobs is listed in the run summary as an empty board; a name with no feed is listed as not found (also when the company has switched its feed off).
- Personio has no field for remote work; a company that offers it usually names an office "Remote", which the office filter matches.
- Dates are the creation date of the ad in Personio, not a publication date.
- If Personio asks for a pause longer than 2 minutes, the actor stops at once, keeps the jobs already delivered (you pay only for those) and says so in the status message and in the run summary (
stoppedByRateLimit).
Data source
Source: the public job feed on <company>.jobs.personio.de/xml (or .com). Personio's help center describes this feed as the way a company publishes its jobs on its own website; the company switches it on, and it needs no login or credentials. The careers sites' robots.txt allows all paths. The job ads belong to the employers who publish them; each row links to the original ad. This actor is independent and not affiliated with or endorsed by Personio.
Privacy: no personal data
Rowcraft actors are built not to collect personal data:
- Personio's feed has no recruiter or contact fields.
- E-mail addresses and phone numbers written inside the ads are replaced with
[email removed]and[phone removed]. mailto:andtel:links and links to personal LinkedIn profiles are removed from texts and HTML.- Names of contact persons are replaced with
[name removed]when they follow a title or a contact cue, as in "Ihre Ansprechpartnerin: Frau …", "Dein Kontakt …", "Your contact is …" or "please contact …". A name written anywhere else in an ad cannot be told apart from ordinary words reliably; turn off the ad texts if you only need structured data.
You are responsible for using the data in line with the law that applies to you.
Other Rowcraft actors
All Rowcraft actors read official or public sources, deliver flat rows without personal data and support only-new runs and notifications:
- Ashby Jobs Scraper – Job Postings with Salary Ranges — Job postings from Ashby job boards (jobs.ashbyhq.com) by company: title, department, team, locations with country, employment and workplace type, published salary range, full text.
- Broken Link Checker – Find 404s and Dead Links API — Pay per crawled page, not per link: crawl a site within robots.txt and check every link on each page for 404s, 5xx errors, DNS and TLS failures and redirects.
- Career Site Jobs Scraper: Greenhouse, Lever, Ashby, Workday — Job listings from the career pages of the companies you choose on Greenhouse, Lever, Ashby, Workday, Workable, Personio, Recruitee, Teamtailor and Gem, in one run and one format: title, locations, department, salary when published, full text.
- Chrome Web Store Scraper: Users, Ratings & Versions — Reads public Chrome Web Store listing pages with no login, no proxy and no personal data: users, rating, category, version, update date, permissions and company developers.
- Domain Email and DNS Checker API: MX, SPF, DMARC, Providers — Find which email provider, sending services and DNS host each domain uses, from public DNS records only.
- SIRENE France Company Scraper: SIREN, NAF, Revenue, Status — French companies from the official Recherche d'entreprises API (INSEE SIRENE + INPI): SIREN and SIRET, legal form, NAF activity, head-office address, employee band, revenue and net income, labels, creation date and VAT number.
- Gem Jobs Scraper – Job Board Listings from jobs.gem.com — Job listings from Gem job boards (jobs.gem.com) by company: title, department, offices with country, employment type, remote, hybrid or on-site, requisition ID, publication date and full ad text, from the public Gem Job Board API.
- Google Play Apps Scraper: App Details, Installs, Ratings — Public Google Play app details as flat rows: installs, rating, number of ratings, price, version, last update, minimum Android, ads and in-app purchases.
- Greenhouse Jobs Scraper – Job Listings by Company Board — Job listings from Greenhouse job boards by company: title, departments, offices, publication date, full ad text, published pay ranges.
- Himalayas Jobs Scraper: Remote Jobs API with Salaries — Remote jobs from Himalayas through its public jobs API: title, company, salary range, seniority, categories, the countries and time zones open to candidates, full description and job link.
- KRS Poland Companies Scraper: Register Data, PKD, Status — Polish companies from the official KRS register API of the Ministry of Justice: name, KRS, NIP and REGON numbers, legal form, status, address, PKD activity codes, share capital, branches and registration dates.
- LEI Records Scraper: Legal Entity Identifier Lookup API — Legal Entity Identifier (LEI) records from the Global LEI Index, read through the public GLEIF API: legal name, legal form, register number, addresses, status, renewal date and parent companies.
- Lever Jobs Scraper – Job Postings from jobs.lever.co — Job postings from Lever career pages (jobs.lever.co) by company: title, team, department, location, commitment, workplace type, salary range when published, description, requirements and benefits.
- Norway Company Register Scraper: Brønnøysund Business Data — Norwegian companies from the Central Coordinating Register for Legal Entities (Brønnøysund, NLOD open data): organisation number, legal form, industry, employees, share capital, addresses, website, VAT and bankruptcy status.
- Platsbanken Scraper: Sweden Jobs, Employers, Org Numbers — Every job ad on Platsbanken (Arbetsförmedlingen) from the official JobTech API: headline, employer and organisation number, occupation codes, municipality, coordinates, salary type, deadline and full text.
- Recruitee Jobs Scraper – Job Listings by Company Career Site — Job listings from Recruitee career sites by company: title, department, locations with country, employment type, remote flag, published salary and full text, one request per company.
- Robots.txt and AI Crawler Access Checker API — Check which AI and search crawlers a website lets in: GPTBot, ClaudeBot, PerplexityBot, Google-Extended and more, read from robots.txt by the RFC 9309 rules.
- RSS Feed Finder and Reader – Blog and News Article API — Find the RSS, Atom and JSON feeds of any website and read their newest articles, from a domain name alone.
- SEO Audit Tool: Titles, Meta Tags, Headings and Links API — Audit the on-page SEO of any list of pages or websites: titles, meta descriptions, headings, canonicals, indexing, links, images and structured data, with a score and the issues found per page.
- Shopify Products Scraper: Store Catalog Export to JSON, CSV — Products from any Shopify store's public catalog: title, vendor, type, tags, description, variants with price, compare-at price, SKU and stock, images, options, store currency.
- Sitemap URL Extractor: Every Page with Last-Modified Dates — Get every page a site lists in its sitemaps, with last-modified dates, from robots.txt through sitemap indexes and .gz files.
- SSL Certificate and Security Headers Checker API — Check the TLS certificate and the HTTP security headers of every domain in one run, with an A+ to F grade and the exact issues to fix.
- Store Products Scraper – Shopify, WooCommerce, VTEX — Export the product catalogue of any Shopify, WooCommerce or VTEX store from its public catalogue endpoint: title, brand, prices, discounts, stock, categories, images and links, one row per product, the same columns on every platform.
- Structured Data Extractor: JSON-LD, Schema.org, Open Graph — Pull the schema.org JSON-LD, Microdata, RDFa and Open Graph of any page list into flat rows: types, product price, availability, ratings, organization, breadcrumbs, with validation issues.
- Teamtailor Jobs Scraper – Career Site Jobs by Company — Job listings from Teamtailor career sites by company: title, department, role, locations with city and country, remote or hybrid status, publication date and full ad text, from the official job feed.
- TED Tenders Scraper: EU Public Procurement Notices API — EU public procurement notices from TED (Tenders Electronic Daily), the official EU tenders portal, through its public Search API: title, buyer, country, CPV codes, values, deadlines, lots and document links.
- UK Companies House Scraper: Company Search & Profiles API — UK companies from the official Companies House API with your free key: search by name, status, type, SIC code, date or location, or look up company numbers.
- UK Tenders Scraper: Find a Tender + Contracts Finder API — UK public procurement notices from Find a Tender and Contracts Finder, the official UK government portals, through their open OCDS APIs: title, buyer, region, CPV codes, values, deadlines, notice type and links.
- Bulk URL Status and Redirect Chain Checker API — Check the status code, redirect chain, canonical and indexing signals of every URL in a list, with the final destination and a loop flag.
- VTEX Products Scraper – Public Catalog Export — Export the catalogue of any VTEX store (Auchan, Chedraui and thousands of retailers in Europe and Latin America) from its public search endpoint: title, brand, EAN, prices, list prices, stock, categories, specifications and images, one row per product.
- Website Tech Stack Detector – Technology Lookup API — Find the technologies behind a list of websites: CMS, e-commerce platform, analytics, tag managers, ad pixels, consent tools, chat, CDN and payments, from one polite home-page request per domain.
- WooCommerce Products Scraper – Store API Export — Export every product of a WooCommerce store through its public Store API: title, SKU, prices and sale prices, stock, categories, tags, attributes, ratings, images and links, one row per product.
- Workable Jobs Scraper: Job Listings from Career Pages — Job listings from any company's Workable career page: title, department, location, remote or on-site, employment type, description, requirements, benefits and salary when published.
- Workday Jobs Scraper – Jobs from myworkdayjobs.com Sites — Job listings from Workday career sites (myworkdayjobs.com) by company: title, locations, country, posting date, time type, requisition ID and the full description.
FAQ
Is this web scraping? It reads the public XML feed that Personio provides for each company's jobs, not the rendered pages. No login, cookies or API key.
Why do some rows have no description? The employer published the ad without text in any of the languages the actor tries, or you turned the language fallback off. The run summary counts these rows.
Why is the salary empty on most jobs? Most employers do not publish a range in Personio. When they do, the actor returns it.
Can I search all of Personio by keyword? No. The actor reads the feeds of the companies you list or of a ready-made list.
Can I read many companies without typing them? Yes. Pick one or more Ready-made company lists in the input form (Germany, DACH, Europe, remote jobs, every Personio company we know…) and the actor reads the Personio companies in them. The lists hold companies we found on the public job feeds, grouped by the countries of their open jobs; sizes are shown in the form. The coverage report says which list brought each company.
A company shows as "not found". Check the name in its careers address, or the company may have switched its job feed off.
How much does it cost? $1.00 per 1,000 job ads on the Free plan, less on paid plans (see Pricing). You pay only for rows delivered to your dataset; set a maximum total charge in the run options to cap a run.
Can I pay only for new job ads? Yes. Turn on Only new rows since the last run: the actor remembers what it delivered to you and later runs with the same state name deliver (and charge) only the new rows.
How do I get the results into Slack, Google Sheets, Make, n8n or Zapier? Use the Integrations tab of the Actor for the data, and the notifyUrl field for a message when a run ends (Slack and Discord webhooks work directly; catch hooks of Make, n8n and Zapier too).
Can I call it from code or from an AI agent? Yes: through the Apify API, the JavaScript and Python clients, and the Apify MCP server. The API tab shows a working example with the input of this Actor.
Is it legal to use this data? The actor reads the official API described in the Data source section and delivers company and job data without personal data. The licence of the source is described above. How you use the data is your responsibility under the law that applies to you.
Does it collect personal data? No. Contact persons, e-mails and phone numbers are removed and fields about people are never requested. See the Privacy section.
The run finished with 0 rows. Did I pay? No: with no rows delivered nothing is charged apart from the start event. Check the run summary (RUN_SUMMARY) for warnings, widen the filters, or run with Only new rows off if everything matching was already delivered to you.
Support and reviews
Problems, missing fields, questions: open an issue on the Issues tab of this Actor. We answer within one working day and fix confirmed bugs in the next release; the changelog lists every change.
If this Actor saved you time, a short review on its page helps other users find it and helps us keep improving it.