XING Jobs Scraper API - Germany, Austria, Switzerland
Pricing
from $0.51 / 1,000 job returneds
XING Jobs Scraper API - Germany, Austria, Switzerland
Scrape jobs from XING in Germany, Austria and Switzerland. Each row has the company, employment type, career level and the apply link. It says if the job is remote, hybrid or on-site. You get the posted time, and the salary when XING shows one. Estimated salaries are flagged. $0.51 per 1,000 jobs.
Pricing
from $0.51 / 1,000 job returneds
Rating
5.0
(1)
Developer
Dami's Studio
Maintained by CommunityActor stats
2
Bookmarked
42
Total users
22
Monthly active users
a day ago
Last modified
Categories
Share
XING Jobs Scraper: job postings across Germany, Austria and Switzerland
Type the keywords you would type into XING and you get one row per posting. Title, company, city, employment type, career level, whether it is remote, hybrid or on-site, when it went up, when it expires, and the link that actually applies.
One thing to get right before your first run. XING's location box resolves places, not countries, so
typing "Deutschland" does not filter anything: XING hands back its whole Germany, Austria and
Switzerland ranking. This actor then keeps only the postings XING itself labels German, which is
what restrictToCountry does, and the ones it drops are not charged.
Salaries are the other half of the honest version. XING publishes a figure on some postings and
estimates one on others, so read salaryIsEstimate before you put a number in front of anyone.
| Input | Job keywords, or XING search and posting URLs |
| Output | One row per job posting |
| Ceiling | About 1,000 postings per search, up to 10,000 per run across several searches |
| Account needed | None |
| Price | $0.51 per 1,000 postings, which is $0.00051 each, flat on every plan |
💼 What XING Jobs Scraper does
It runs the search you describe, walks the results page by page, and writes a row for each posting with everything XING attaches to it: the company and its page, company size, the full address down to the postcode, XING's own industry and discipline labels, the seniority band, and the keywords XING tagged the posting with.
Filters are XING's own, applied during the search rather than by throwing rows away afterwards: workplace type, contract type, career level, how recently it was posted, and a salary floor.
Several keywords in one run are walked as separate searches, which is how you get past the roughly 1,000 results XING serves for any single one.
applyUrl is worth knowing about. Plenty of XING postings hand the application off to the company's
own careers site or a job board, and that is the address you get, with appliesOffXing telling you
when it happened.
📥 What you give it
{"searchQueries": ["Softwareentwickler", "Data Analyst"],"location": "Berlin","radius": 30,"remoteOption": "hybrid","postedWithin": "week","maxItems": 200}
| Field | Default | What it is |
|---|---|---|
searchQueries | none | One or more searches, German or English. Each is walked separately. |
location | none | A DACH city such as Berlin, Wien or Zürich. Leave it out to search all of XING. |
radius | none | Kilometres around the city, 1 to 200. Cities only. |
restrictToCountry | true | Applies when the location names a country. Keeps only the postings XING labels with that country. Dropped postings are not charged and do not count against maxItems. |
remoteOption | any | remote, hybrid or onsite. |
employmentType | any | full-time, part-time, contractor, intern, temporary, seasonal, voluntary. |
careerLevel | any | student, entry-level, experienced, manager, director, executive. |
postedWithin | any | day, week or month. Every row also carries its exact date, so you can cut it again later. |
salaryMin | none | Yearly EUR floor. XING applies it to the figure it holds, which is often its own estimate. |
startUrls | none | Paste XING URLs instead of building a search. A single posting works, and so does a search page. |
includeDescription | false | Adds the posting body as HTML and as plain text. It rides along with the same request, so it costs no extra time and no extra charge. |
resultLanguage | de | Language of XING's own labels. The posting text stays in whatever language the employer wrote. |
maxItems | 50 | Stop after this many postings, 1 to 10,000. |
proxyConfiguration | Apify default | Leave it alone unless you have your own servers and a reason to use them. |
📤 What you get back
A real row from a real run, with the company logo URL cut short so the block stays readable:
{"jobId": "156920182.fbd9ee","globalId": "surn:x-xing:jobs:posting:156920182.fbd9ee","title": "Duales Studium Informatik (B.Sc.) am Campus oder virtuell","jobUrl": "https://www.xing.com/jobs/berlin-duales-studium-informatik-sc-campus-virtuell-156920182","applyUrl": "https://www.jobexport.de/job/2468930.html?exp=233&cid=2184630&utm_source=xing.com","companyName": "IU Internationale Hochschule","companyId": "316795.7d3755","companyUrl": "https://www.xing.com/pages/iuinternationalehochschule","companyLogo": "https://www.xing.com/imagecache/public/scaled_original_image/eyJ1dWlk...","companySize": "1.001-5.000 Mitarbeitende","city": "Berlin","region": "Land Berlin","zipCode": "10115","street": null,"country": "Deutschland","countryCode": "DE","locations": ["Berlin, Land Berlin, DE"],"employmentType": "Vollzeit","careerLevel": "Student·in / Praktikant·in","industry": "Fach- und Hochschulen","discipline": "IT und Softwareentwicklung","remoteOptions": ["PARTLY_REMOTE"],"workplaceType": "Hybrid","isRemote": false,"isHybrid": true,"isOnsite": false,"salaryMin": null,"salaryMax": null,"salaryMedian": null,"salaryCurrency": null,"salaryIsEstimate": null,"salaryText": null,"postedAt": "2026-09-16T12:33:41Z","refreshedAt": "2026-09-16T12:33:41Z","activeUntil": "2026-10-02T07:01:39Z","isPaidListing": true,"isTopJob": false,"appliesOffXing": false,"jobCode": "2468930-1","keywords": ["engineering", "informatik", "softwareentwickler", "englischkenntnisse", "mathe"],"postingLanguage": "de","descriptionHtml": null,"descriptionText": null,"searchQuery": "Softwareentwickler","searchLocation": "Berlin","page": 1,"position": 1,"scrapedAt": "2026-09-21T13:01:05.101Z"}
| Field | What it is |
|---|---|
jobId | Stable across runs, and the same shape whether the row came from a search or a pasted posting URL. Use it to dedupe. |
applyUrl, appliesOffXing | Where an application actually goes. Often the employer's own site rather than XING. |
salaryMin, salaryMax, salaryMedian, salaryIsEstimate | Null when XING shows no salary. salaryIsEstimate is true when the figure is XING's estimate rather than the employer's. |
workplaceType, isRemote, isHybrid, isOnsite | The same fact as a label and as three booleans, so filtering is easy either way. |
employmentType, careerLevel, industry, discipline | XING's own labels, in the language you set. |
postedAt, refreshedAt, activeUntil | When it went up, when it was last refreshed, and when it stops. activeUntil is the one for pruning an old dataset. |
descriptionHtml, descriptionText | Only with includeDescription on, and null on the many postings XING holds no body text for. |
isPaidListing, isTopJob | Whether the employer paid for the listing and whether XING promoted it. |
searchQuery, searchLocation, page, position | The search that produced the row and where it ranked, copied onto it. |
🧾 Reading the output
Job rows carry a jobId. Anything without one is a note, and notes are never charged.
| Row | How to spot it | Charged |
|---|---|---|
| A posting | jobId is set | yes |
| The sample row | _sample is true | no |
| A diagnostic | errorCode is set | no |
| Code | What it means |
|---|---|
BAD_URL | Not a XING job or search address. |
JOB_NOT_FOUND | That posting is gone. Listings expire, and activeUntil is why. |
NO_RESULTS | The search ran and XING had nothing for it. |
NO_RESULTS_IN_COUNTRY | XING returned postings, but none carried the country you asked for. Widen it, or turn restrictToCountry off. |
GEO_RESTRICTED | XING would not serve the full posting for that request. |
HTTP_ERROR | XING answered badly. Usually worth one re-run. |
▶️ How to run it
- Open XING Jobs Scraper and click Try for free.
- Put your terms into Job keywords, one per line. German terms find more than English ones on XING.
- Set Location to a city, and a Radius if you want the surrounding area.
- Set Maximum postings. Fifty is a sensible first run.
- Click Start, then download the dataset as JSON, CSV or Excel, or read it from the API.
💰 How much does it cost?
$0.51 per 1,000 postings, which is $0.00051 each. Flat on every Apify plan, no volume tiers.
You pay per posting row. Nothing else in the dataset is billed: not the sample row, not a diagnostic, and not a posting the country filter dropped. Turning on the full description costs nothing extra, because it arrives with the same request.
A thousand postings is about fifty cents.
💡 What people use it for
- A daily pull of new DACH postings for a handful of roles, deduped on
jobId. - Recruiters watching which companies are hiring in a city, and at what seniority.
- Salary work:
salaryMedianwithsalaryIsEstimatekept beside it, so estimates and published figures never get mixed. - Feeding a job board or a newsletter with fresh listings that carry a working apply link.
- Market research on remote and hybrid share by industry, which the three booleans make easy.
🚧 What it does not do
- Germany, Austria and Switzerland only. XING is a DACH site.
- About 1,000 postings per search. Use several keywords or cities to go past it.
- Descriptions are not on every posting. XING holds body text for some and not others, and
descriptionTextis null on the rest. - A country name in the location is not a filter at XING. It is handled here instead, and naming
a country anywhere in the location, including
Basel, Schweiz, turns that filter on. Use the bare city if you want cross-border results. - No candidate or recruiter contact details. Public postings only, nothing behind a sign-in.
- Salaries are often XING's estimate, not the employer's number.
- A row is a snapshot. Postings expire, and
activeUntiltells you when.
🧭 Which jobs scraper do you need?
| If you want | Use |
|---|---|
| XING postings across Germany, Austria and Switzerland | This one |
| StepStone postings in DE, AT, UK, NL and BE | StepStone Jobs Scraper |
| French job listings | HelloWork Jobs Scraper |
| Startup roles from Wellfound | Wellfound Jobs Scraper |
❓ Questions people ask
Do I need a XING account? No. Nothing to paste, nothing that expires.
German or English keywords? Both work, and German finds more. Softwareentwickler and
Software Developer return different sets, so run the pair.
Why is the salary empty on most rows? XING only shows one where it has it. Where it does, check
salaryIsEstimate before quoting the figure.
Can I paste a single job link? Yes, into XING URLs. Search pages work there too, so you can build the search in your browser and paste the address.
How do I get more than 1,000 results? Split the search. Several keywords, or the same keyword
across several cities, each with its own searchQuery on the row.
Is scraping job postings legal? These are public pages. Postings often name a contact person, which is personal data under GDPR, so have a reason for holding it. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page. Send the keywords, the location and the run ID. If a
diagnostic row landed, its errorCode usually names the reason already.