Request a tool
All toolsGuidesMCP serverRequest a toolPlatformsCategories
XING Jobs Scraper icon

XING Jobs Scraper

Scrape XING jobs in Germany, Austria and Switzerland by keyword, city, remote or hybrid.

38 runs on Apify
Run this in the cloudRun on Apify →

Job Market Scrapers

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust searchQueries, location, radius (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Inputs

FieldWhat it doesType
searchQueriesOne or more job searches, exactly as you would type them into XING. German or English both work. Each keyword is walked separately, so ["Softwareentwickler", "Data Analyst"] runs two searches.array
locationCity, region or country in the DACH area, for example "Berlin", "Wien" or "Zürich". Leave empty to search all of XING.string
radiusSearch radius around the location, in kilometres. Only used when a location is set.integer
remoteOptionRestrict to fully remote, hybrid (home office part of the week) or on-site postings.string
employmentTypeRestrict to one contract type. The labels in brackets are XING's own German wording.string
careerLevelRestrict to XING's seniority band for the role.string
postedWithinOnly postings XING refreshed inside this window. Every row also carries the exact posted date, so you can filter afterwards too.string
salaryMinOnly postings at or above this yearly salary. XING applies this to the figure it holds for the posting, which is often its own estimate rather than an employer-published number.integer
startUrlsPaste XING URLs instead of building a search. Works with a single posting (https://www.xing.com/jobs/berlin-data-analyst-155853218) and with a search page (https://www.xing.com/jobs/search?keywords=data%20analyst&location=Berlin).array
includeDescriptionAdds the complete posting text as HTML and as plain text. It comes from the same request, so this costs no extra time and no extra charge - it only makes the rows larger.boolean
resultLanguageLanguage for XING's own labels (employment type, career level, industry). The posting text itself is always in whatever language the employer wrote it.string
maxItemsStop after this many postings. XING serves at most ~1,000 results per individual search, so use several keywords or locations to go beyond that.integer

What you get

A structured dataset — each result includes fields like:

titlecompanyNamecitycountryCodeworkplaceTypeemploymentTypecareerLevelsalaryTextsalaryIsEstimatepostedAtjobUrljobId

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Job Market Scrapers

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

ZipRecruiter Scraper iconJob Market Scrapers

ZipRecruiter Scraper

Scrape ZipRecruiter jobs by keyword, city, remote, employment type, salary or posting age.

Ready to run — no setup

LinkedIn Company Employees Scraper iconJob Market Scrapers

LinkedIn Company Employees Scraper

Scrape LinkedIn company employees without a login or cookies. Company URL or name in; employee name, headline, job title, location and profile URL out.

Ready to run — no setup

Indeed Jobs Scraper iconJob Market Scrapers

Indeed Jobs Scraper

Scrape Indeed jobs by keyword and location across 11 countries. Get title, company, salary, remote flag, posted date, and apply URL as structured data.

16 use cases

Glassdoor Company Reviews Scraper iconJob Market Scrapers

Glassdoor Company Reviews Scraper

Scrape Glassdoor company reviews and ratings by company name or URL. Get pros, cons, recommend rate and CEO approval as rows for analysis.

20 use cases

StepStone Jobs Scraper iconJob Market Scrapers

StepStone Jobs Scraper

Scrape StepStone jobs across Germany, Austria, UK, NL and Belgium by keyword and location. Get company, salary, posted date, remote flag and apply links.

4 use cases

Remotive Jobs Scraper iconJob Market Scrapers

Remotive Jobs Scraper

Scrape remote jobs from Remotive by keyword and category. Get title, company, location, salary, tags and clean descriptions. No login or key.

3 use cases

See all Job Market Scrapers →

XING Jobs Scraper API — Germany, Austria & Switzerland

Pulls job postings off XING (xing.com), the professional network used across the German-speaking market. Give it a keyword, a city, or a XING search URL. You get structured rows back: title, company, full address, employment type, career level, remote/hybrid/on-site, the exact timestamp the posting went live, the apply link, and the salary when XING has one.

No login. No cookies to paste. No browser, so a 300-posting run finishes in about 28 seconds.

---

What one row looks like

Real output from a live run:

{
  "jobId": "156657850.09f9ef",
  "title": "Founding Software Engineer (m/w/d)",
  "companyName": "Mathe Buddy",
  "jobUrl": "https://www.xing.com/jobs/geislingen-steige-founding-software-engineer-156657850",
  "applyUrl": "https://api.relaxx.center/r/c6d0f2b4e7af4f719e3c9e635ed1c626?pid=2616477",
  "city": "Geislingen an der Steige",
  "region": "Baden-Württemberg",
  "zipCode": "73312",
  "street": "Bahnhofstraße 27",
  "country": "Deutschland",
  "countryCode": "DE",
  "employmentType": "Vollzeit",
  "careerLevel": "Mit Berufserfahrung",
  "industry": "Schulen, Kindergärten",
  "discipline": "IT und Softwareentwicklung",
  "remoteOptions": ["NON_REMOTE"],
  "workplaceType": "On-site",
  "isRemote": false,
  "isHybrid": false,
  "isOnsite": true,
  "salaryMin": 70000,
  "salaryMax": 95000,
  "salaryCurrency": "EUR",
  "salaryIsEstimate": false,
  "postedAt": "2026-07-23T16:18:26Z",
  "refreshedAt": "2026-08-07T16:18:26Z",
  "activeUntil": "2026-09-21T16:18:28Z",
  "postingLanguage": "de"
}

Two more from the same runs:

  • Softwareentwickler:in (m/w/d) — agmadata GmbH — Garrel — Vollzeit — EUR 50,000–75,000 (employer

figure) — on-site — posted 2026-07-30

  • Java Web-/ Softwareentwickler (m/w/d) — Statistisches Landesamt Rheinland-Pfalz — Bad Ems —

Vollzeit — EUR 45,500–54,500 (XING estimate) — hybrid — posted 2026-07-27

---

Field coverage — measured, not promised

Across 365 unique postings from six live runs:

FieldPresent
title, companyName, jobUrl, city, countryCode100%
employmentType, careerLevel, industry, discipline100%
postedAt, refreshedAt, activeUntil100%
workplaceType / remoteOptions100%
region95%
companyLogo89%
companySize, companyUrl~68%
applyUrl63%
jobCode58%
zipCode36%
street26%

About salary — read this before you rely on it

XING publishes three different things, and this actor keeps them apart:

WhatsalaryIsEstimate
A salary the employer publishedfalse
XING's own estimate for that roletrue
Nothing at allnull

The split moves with the search, a lot. Across 365 German-heavy postings it was 15% employer-published, 73% XING estimate, 12% blank. On a mixed DE/AT/CH sample of 296 it was 26% / 52% / 22%. On 164 Vienna postings it was 10% / 28% / 62% — Austrian ads carry far less salary data than German ones. So: roughly one posting in five carries a real employer number, most of the rest carry XING's guess, and in Austria most carry nothing.

A XING scraper that puts a salary on nearly every row is handing you the estimate without saying so. Check salaryIsEstimate before you show a figure to anyone.

---

How to use it

By keyword and city

{
  "searchQueries": ["Softwareentwickler", "Data Analyst"],
  "location": "Berlin",
  "radius": 30,
  "remoteOption": "hybrid",
  "postedWithin": "week",
  "maxItems": 200
}

By pasted URL — a whole search page, or a single posting:

{
  "startUrls": [
    { "url": "https://www.xing.com/jobs/search?keywords=data%20analyst&location=Berlin" },
    { "url": "https://www.xing.com/jobs/berlin-senior-software-engineer-155853218" }
  ]
}

With the posting text — set includeDescription: true. It arrives in the same request, so it costs no extra time and no extra charge. You get descriptionHtml and descriptionText. Measured coverage: about 1 posting in 4 carries text XING holds itself. The other three quarters are ads XING syndicates from an employer's own site, and XING does not store the body — for those, applyUrl is the link to the full ad.

---

Filters

InputWhat it does
location + radiusCity or region, plus a radius in km
remoteOptionremote, hybrid or onsite
employmentTypeVollzeit, Teilzeit, Selbstständig, Studierende, Aushilfe, Saisonarbeit, Ehrenamt
careerLevelStudent through executive
postedWithinLast 24 hours / week / month — this is XING's own refresh window, so a posting first published in June can appear in "last week" if the employer bumped it. postedAt always holds the true first-published timestamp
salaryMinMinimum yearly salary in EUR
resultLanguagede or en for XING's own labels

---

What this does not do

  • It does not go past ~1,000 postings per individual search. That is XING's ceiling, not one we

added — asking XING for result number 1,000 returns an error. Split the work across several keywords or cities; each search gets its own 1,000-row budget.

  • It does not return the full text for every posting. See the note above: roughly a quarter.
  • It does not return recruiter or applicant contact details. XING does not publish them.
  • It does not scrape XING member profiles or company pages. Jobs only.
  • It does not log in, so postings XING shows only to signed-in members are not in the output.
  • It does not invent a salary. No figure from XING means null, not a guess.
  • It is not a live feed. It reads what XING shows at the moment you run it.

---

Cost

Pay per event, whole price on the table:

EventPrice
Actor start$0.001 per run
Job returned$0.51 per 1,000 postings

100 postings ≈ $0.052. 1,000 postings ≈ $0.51.

Nothing is charged for a run that returns no postings, for the sample row an empty run emits, or for a request that fails. Those rows are marked _sample or _diagnostic and carry charged: false.

---

FAQ

Is there an official XING jobs API? XING retired its public developer API for outside developers years ago. This actor talks to the same public, logged-out endpoint that xing.com's own job search page uses, so there is no key and no account to manage.

Do I need a XING account or cookies? No. Nothing signs in and nothing is kept between runs.

Which countries does XING cover? Germany, Austria and Switzerland, with the odd posting from a neighbour like Luxembourg. The mix in your output follows your search — a plain German keyword run came back 95% German, while adding "location": "Wien" returned mostly Austrian postings. XING is not a useful source outside the DACH region.

Are postings in German or English? Mostly German — 345 of 365 in our runs. postingLanguage tells you per posting. XING's own labels (employmentType, careerLevel, industry) follow the resultLanguage setting.

How accurate is the posted date? It is XING's own timestamp, to the second, in ISO 8601 — not a parsed "vor 3 Tagen". postedAt is when the posting first went live, refreshedAt is the last time it was bumped, and activeUntil is when XING will take it down.

Can I tell remote jobs from hybrid ones? Yes. workplaceType is Remote, Hybrid or On-site, backed by isRemote / isHybrid / isOnsite booleans and the raw remoteOptions array from XING. Present on 100% of rows. In our runs: 48% on-site, 39% hybrid, 13% remote.

Does every job have a salary? No — see the salary section. About one in five carries an employer-published figure; most of the rest carry XING's own estimate, flagged by salaryIsEstimate.

Can I get the full job description? For about a quarter of postings, yes — set includeDescription: true. For the rest, XING only holds a link to the employer's ad, which you get as applyUrl.

How do I get more than 1,000 results? Run several keywords, or the same keyword against several cities. Each search has its own ceiling.

What happens if XING blocks the run? Nothing is charged. The dataset gets a row marked _diagnostic with an errorCode and a plain explanation.

Can I schedule it? Yes — it is a normal Apify actor. Pair a Schedule with postedWithin: "day" for a daily feed of fresh DACH postings.

Can I use my own proxies? Yes, via proxyConfiguration. You should not need to: XING serves a reduced job board to some countries, and the actor already routes through addresses that get the full board.

---

Output fields

jobId, globalId, title, jobUrl, applyUrl, companyName, companyId, companyUrl, companyLogo, companySize, city, region, zipCode, street, country, countryCode, locations, employmentType, careerLevel, industry, discipline, remoteOptions, workplaceType, isRemote, isHybrid, isOnsite, salaryMin, salaryMax, salaryMedian, salaryCurrency, salaryIsEstimate, salaryText, postedAt, refreshedAt, activeUntil, isPaidListing, isTopJob, appliesOffXing, jobCode, keywords, postingLanguage, descriptionHtml, descriptionText, searchQuery, searchLocation, page, position, scrapedAt.