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

XING Jobs Scraper

Scrape XING jobs in Germany, Austria and Switzerland. Company, employment type, career level, posted date, apply URL and salary. $0.51 per 1,000 jobs.

5 from 1 review on Apify 454 runs on Apify $0.00051 per job ($0.51 / 1,000)
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.

Pricing

$0.00051 per job = $0.51 per 1,000

You are charged forWhenPrice
Job returnedCharged once per genuine XING job posting: title, company, full address, employment type, career level, remote/hybrid/on-site flag, exact posted date, apply URL, and the salary when XING publishes one. Sample rows, diagnostics and empty runs are never charged.$0.00051

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-08, and they are what you are actually charged.

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
locationA city in the DACH area, for example "Berlin", "Wien" or "Zürich". Leave empty to search all of XING. A country name ("Deutschland", "Österreich", "Schweiz") also works, but note what XING does with it: XING's own location filter only resolves places, so it accepts a country name and then ignores it, returning its whole Germany + Austria + Switzerland ranking. This actor therefore keeps only the postings XING itself labels with that country - see "Keep only jobs in the country you named" below. A city is far more precise, so prefer one where you can.string
radiusSearch radius around the location, in kilometres. Only used when a location is set. XING applies this to cities only; it has no meaning for a country.integer
restrictToCountryApplies only when "Location" names a country. XING ignores a country in its location box and returns postings from all of Germany, Austria and Switzerland, so with this on the actor drops the ones whose XING-reported country is not the one you asked for. Skipped postings are never charged, and the run keeps reading until it has the number you asked for. Turn this off if you want everything XING returns - for example if you are happy to see Austrian and Swiss postings in a German search. A city location is never filtered either way, so a cross-border search like "Basel" with a 50 km radius always keeps its German results.boolean
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.

1 ready-to-run use cases

XING Jobs: Remote DevOps Roles in Germany, Weekly

This week's remote DevOps postings from XING with company, city, contract type, apply link and the salary range where XING shows one.

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 or salary. Exact posted dates, apply URLs, pay marked published or estimated. $0.80 per 1,000.

Ready to run — no setup

LinkedIn Company Employees Scraper iconJob Market Scrapers

LinkedIn Company Employees Scraper

Find a company's employees on LinkedIn, no login. Give a company URL or name. Get name, headline, job title, location and profile URL. $1.80 per 1,000.

1 use cases

Indeed Jobs Scraper iconJob Market Scrapers

Indeed Jobs Scraper

Scrape Indeed jobs by keyword and location in 11 countries. Get company, salary, benefits, remote flag, employer rating and apply URL. $4.00 per 1,000.

16 use cases

Glassdoor Company Reviews Scraper iconJob Market Scrapers

Glassdoor Company Reviews Scraper

Scrape Glassdoor reviews: pros, cons, six sub-ratings, recommend rate and CEO approval. First page per company without login. $2.50 per 1,000.

20 use cases

StepStone Jobs Scraper iconJob Market Scrapers

StepStone Jobs Scraper

Scrape StepStone jobs in DE, AT, UK, NL and BE by keyword and location. Get company, salary, posted date, remote flag and links. $3.00 per 1,000 jobs.

4 use cases

Remotive Jobs Scraper iconJob Market Scrapers

Remotive Jobs Scraper

Scrape remote jobs from Remotive by keyword or category: company, region, salary, tags and plain-text descriptions. $2.00 per 1,000 jobs.

3 use cases

See all Job Market Scrapers →

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.

InputJob keywords, or XING search and posting URLs
OutputOne row per job posting
CeilingAbout 1,000 postings per search, up to 10,000 per run across several searches
Account neededNone
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
}
FieldDefaultWhat it is
searchQueriesnoneOne or more searches, German or English. Each is walked separately.
locationnoneA DACH city such as Berlin, Wien or Zürich. Leave it out to search all of XING.
radiusnoneKilometres around the city, 1 to 200. Cities only.
restrictToCountrytrueApplies 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.
remoteOptionanyremote, hybrid or onsite.
employmentTypeanyfull-time, part-time, contractor, intern, temporary, seasonal, voluntary.
careerLevelanystudent, entry-level, experienced, manager, director, executive.
postedWithinanyday, week or month. Every row also carries its exact date, so you can cut it again later.
salaryMinnoneYearly EUR floor. XING applies it to the figure it holds, which is often its own estimate.
startUrlsnonePaste XING URLs instead of building a search. A single posting works, and so does a search page.
includeDescriptionfalseAdds 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.
resultLanguagedeLanguage of XING's own labels. The posting text stays in whatever language the employer wrote.
maxItems50Stop after this many postings, 1 to 10,000.
proxyConfigurationApify defaultLeave 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"
}
FieldWhat it is
jobIdStable across runs, and the same shape whether the row came from a search or a pasted posting URL. Use it to dedupe.
applyUrl, appliesOffXingWhere an application actually goes. Often the employer's own site rather than XING.
salaryMin, salaryMax, salaryMedian, salaryIsEstimateNull when XING shows no salary. salaryIsEstimate is true when the figure is XING's estimate rather than the employer's.
workplaceType, isRemote, isHybrid, isOnsiteThe same fact as a label and as three booleans, so filtering is easy either way.
employmentType, careerLevel, industry, disciplineXING's own labels, in the language you set.
postedAt, refreshedAt, activeUntilWhen it went up, when it was last refreshed, and when it stops. activeUntil is the one for pruning an old dataset.
descriptionHtml, descriptionTextOnly with includeDescription on, and null on the many postings XING holds no body text for.
isPaidListing, isTopJobWhether the employer paid for the listing and whether XING promoted it.
searchQuery, searchLocation, page, positionThe 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.

RowHow to spot itCharged
A postingjobId is setyes
The sample row_sample is trueno
A diagnosticerrorCode is setno
CodeWhat it means
BAD_URLNot a XING job or search address.
JOB_NOT_FOUNDThat posting is gone. Listings expire, and activeUntil is why.
NO_RESULTSThe search ran and XING had nothing for it.
NO_RESULTS_IN_COUNTRYXING returned postings, but none carried the country you asked for. Widen it, or turn restrictToCountry off.
GEO_RESTRICTEDXING would not serve the full posting for that request.
HTTP_ERRORXING answered badly. Usually worth one re-run.

▶️ How to run it

1. Open XING Jobs Scraper and click Try for free. 2. Put your terms into Job keywords, one per line. German terms find more than English ones on XING. 3. Set Location to a city, and a Radius if you want the surrounding area. 4. Set Maximum postings. Fifty is a sensible first run. 5. 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: salaryMedian with salaryIsEstimate kept 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

descriptionText is 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 activeUntil tells you when.

🧭 Which jobs scraper do you need?

If you wantUse
XING postings across Germany, Austria and SwitzerlandThis one
StepStone postings in DE, AT, UK, NL and BEStepStone Jobs Scraper
French job listingsHelloWork Jobs Scraper
Startup roles from WellfoundWellfound 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.