XING Jobs Scraper: Germany, Austria and Switzerland avatar

XING Jobs Scraper: Germany, Austria and Switzerland

Pricing

from $0.40 / 1,000 jobs

Go to Apify Store
XING Jobs Scraper: Germany, Austria and Switzerland

XING Jobs Scraper: Germany, Austria and Switzerland

Scrape XING jobs in Germany, Austria and Switzerland by keyword and city: title, company with size and industry, location, salary (posted or XING estimate), employment type, career level, remote option, dates, apply link and optional full description. No login.

Pricing

from $0.40 / 1,000 jobs

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

400 XING jobs from Berlin and Munich in 22 seconds

From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.

Why choose this actor?

  • The DACH job market's own network, read the way its search page reads it. XING lists jobs from Germany, Austria and Switzerland. Our final test run returned 400 of 400 jobs (software engineers and project managers in Berlin and Munich) in 22 seconds, all 24 calls answered on the first try.
  • A salary range on most jobs, and you can tell whose number it is. XING shows the employer's own salary when there is one and its own estimate otherwise. 89% of our test jobs had a range in numbers; salary_source says employer (16%) or xing_estimate (73%), and estimates carry XING's median too.
  • No login, no cookies, nothing to set up, and you only pay for jobs you receive. A search with no results, a job already delivered for another keyword or on another page in the same run and, with onlyNewJobs, a job an earlier run already gave you are never charged.

Run it on Apify

Part of The Mine Works Jobs and hiring family: Foundit Monster India Jobs, Hirist Jobs Scraper, India Jobs MCP, Naukri Jobs Scraper, Shine.com Jobs Scraper, Internshala Scraper.

Try it in one minute

Paste this into the input (JSON view) and press Start. It returns 20 software engineer jobs in Berlin in a few seconds:

{
"keywords": ["software engineer"],
"locations": ["Berlin"],
"maxJobs": 20
}

keywords takes job titles or skills, one per line, in German or English as you would type them on XING (Projektmanager, Controller, Pflegefachkraft, data scientist). locations takes cities (Berlin, München, Wien, Zürich); each keyword is searched in each location. Leave locations empty to search everywhere, or keywords empty for every job in a city.

On Apify's free plan every run returns the first 10 results as a preview, so you can check the data and the fields before you pay. A paid Apify plan returns every result: https://apify.com/pricing?fpr=ymnoit

Copy to your AI assistant

themineworks/xing-jobs-scraper on Apify. Scrapes job listings from XING in Germany, Austria and Switzerland, one row per job with title, company with size and industry, city, region and country, salary range with its source (employer or XING estimate), employment type, career level, field of work, remote option, posted and expiry dates, apply link and job link, with an optional full description. Call ApifyClient("TOKEN").actor("themineworks/xing-jobs-scraper").call(run_input={"keywords": ["Controller"], "locations": ["Wien", "Zürich"], "maxJobs": 100}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: none (default keywords ["software engineer"], anywhere). Optional: keywords (list; empty list = every job in the locations), locations (list of cities; empty = anywhere), radiusKm (0 to 200), employmentTypes (list of "full_time", "part_time", "freelance", "student", "seasonal", "temporary", "volunteer"), careerLevels (list of "student_intern", "entry_level", "professional", "manager", "executive", "senior_executive"), remoteOptions (list of "full_remote", "partly_remote", "non_remote"), postedWithin ("any" default, "24h", "week", "month"), salaryMin and salaryMax (EUR a year), maxJobs (default 100, 20 to 1000 per search), includeDescription (default false), onlyNewJobs (default false). Full spec: GET https://api.apify.com/v2/acts/themineworks~xing-jobs-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral

Key features

  • 48 fields per job, 2 more with descriptions: XING job id, title, company with XING page, size, industry and logo, city, postcode, street, region and country, employment type, career level, field of work and industry, remote option, salary text with minimum, maximum, median, currency, period and source, posted, refreshed and expiry dates, how to apply with the apply link or email, paid and top job flags, ad language, XING's keywords and its short summary of the job, the employer's job code and the job link.
  • Full description at no extra request: switch on includeDescription and the complete description, as plain text and as HTML, comes in the same call as the job. A run with descriptions makes exactly as many calls as one without.
  • XING's own filters: employment type, career level, remote option, posted or refreshed in the last 24 hours, week or month, a yearly salary range, and a radius around each city.
  • From 20 to 1,000 jobs per search, 20 per call, the most XING serves for one search. Each keyword in each city is its own search; three run at a time.
  • No double charging: a job found by two keywords, in two cities or on two pages is delivered and charged once. Deep pages of a large search repeat some jobs; those are skipped.
  • Only new jobs on a schedule: with onlyNewJobs, a daily run returns and charges only jobs it has not delivered before.

How to use it

Basic: one keyword in one city

{
"keywords": ["Projektmanager"],
"locations": ["München"],
"maxJobs": 100
}

Several keywords in several cities

Each keyword runs in each city: this input is 4 searches of up to 100 jobs, 400 jobs in all (our final test run, 22 seconds):

{
"keywords": ["software engineer", "Projektmanager"],
"locations": ["Berlin", "München"],
"maxJobs": 100
}

Job: Austria and Switzerland with full descriptions

Cities decide the country. Descriptions come in the same call, so this costs no extra requests (100 jobs in 10.5 seconds in our test):

{
"keywords": ["Controller"],
"locations": ["Wien", "Zürich"],
"includeDescription": true,
"maxJobs": 50
}

Job: daily new job alerts

Jobs posted or refreshed in the last 24 hours, only those not delivered before. Save it as a task and add a daily schedule (Console > Schedules). In our test a second run of a data scientist search skipped the 20 jobs it had already delivered and returned 20 others.

{
"keywords": ["data scientist"],
"locations": ["Hamburg"],
"postedWithin": "24h",
"onlyNewJobs": true,
"maxJobs": 100
}

Job: senior roles above a salary line

Manager and executive jobs whose yearly range, posted or estimated by XING, reaches 90,000 EUR. Sort the rows by salary_max and keep salary_source in view to know whose figure it is:

{
"keywords": ["Head of Sales", "Vertriebsleiter"],
"careerLevels": ["manager", "executive"],
"salaryMin": 90000,
"maxJobs": 300
}

Job: remote jobs for a job board

Fully remote and hybrid jobs with the full description and the apply link:

{
"keywords": ["frontend developer", "UX designer"],
"remoteOptions": ["full_remote", "partly_remote"],
"employmentTypes": ["full_time"],
"includeDescription": true,
"maxJobs": 200
}

Job: who is hiring in a city

Leave keywords empty and give a city, then count rows by company, company_size or discipline:

{
"keywords": [],
"locations": ["Stuttgart"],
"radiusKm": 30,
"postedWithin": "month",
"maxJobs": 1000
}

Input parameters

ParameterTypeDefaultWhat it does
keywordsarray of strings["software engineer"]Job titles or skills, one per line. Each is its own search in every location. An empty list returns every job in the locations.
locationsarray of stringsemptyCities, one per line, such as Berlin, Wien, Zürich. Each is its own search. Empty means anywhere.
radiusKmintegerXING's defaultDistance around each city, 0 to 200 km. Ignored without a location.
employmentTypesarrayanyAny of full_time, part_time, freelance, student, seasonal, temporary, volunteer.
careerLevelsarrayanyAny of student_intern, entry_level, professional, manager, executive, senior_executive.
remoteOptionsarrayanyAny of full_remote, partly_remote, non_remote.
postedWithinstringany24h, week or month: jobs posted or refreshed in that period.
salaryMinintegernoneYearly amount in EUR; keeps jobs whose salary range, posted or estimated, reaches it.
salaryMaxintegernoneYearly amount in EUR; keeps jobs whose salary range starts at or below it.
maxJobsinteger100Upper limit per search (one keyword in one location), 20 to 1,000. XING serves the first 1,000 results of a search.
includeDescriptionbooleanfalseAdds description and description_html. Same number of calls, larger download.
onlyNewJobsbooleanfalseSkips jobs an earlier run of this actor in your account already delivered. For schedules.

What data do you get?

One row per job. A job found by two keywords, in two cities or on two pages is delivered once.

The job: job_id, title, employment_type, career_level, discipline, industry, remote_option, is_remote, language, job_keywords, summary_intro, summary_responsibilities, summary_qualifications, job_code, job_url.

The company: company, company_id, company_url (its XING page), company_size, company_industry, company_logo_url.

Where: location, postal_code, street, region, country, country_code, locations (every city when there are several).

Pay: salary_text, salary_min, salary_max, salary_median (estimates), salary_currency (EUR or CHF), salary_period, salary_source (employer or xing_estimate).

Dates and applying: posted_at, refreshed_at, expires_at, application_type (external_site, email, xing or xing_message), apply_url, apply_email, redirects_to_external_site, is_paid_listing, is_top_job.

With includeDescription: description (plain text) and description_html.

The search: search_keyword, search_location, search_rank, scraped_at.

How full the fields were in our final test runs (400 jobs in Berlin and Munich; 100 jobs with descriptions in Vienna and Zurich):

FieldFilledWhy not always
job_id, title, company, location, region, country, employment_type, career_level, discipline, industry, remote_option, posted_at, expires_at, application_type, job_url100%
salary_text, salary_min, salary_max, salary_source89%XING shows no range for some jobs (73% of Vienna and Zurich jobs had one).
salary_median73%Only on XING estimates.
company_id, company_industry79% to 80%Only when the company has a XING page.
company_size, company_url68% to 69%Same, and only when the page states a size.
apply_url65%The rest apply on XING itself.
job_code55%Only when the employer gives one.
summary_intro, summary_responsibilities, summary_qualifications43%Only on jobs XING has summarised.
postal_code, street30%, 18%Only when the employer gives the workplace address.
description, description_html100% of 100With includeDescription on.

Stable fields for automations

These fields were present in every row of our test runs and their names will not change:

FieldMeaning
job_idXING job id, the number at the end of the job link
titleJob title
companyHiring company as shown
locationCity of the job
country_codeDE, AT, CH and so on
employment_typeFor example Full-time
career_levelFor example Professional/Experienced
disciplineField of work
remote_optionfull_remote, partly_remote or non_remote
posted_atWhen the job went live, ISO 8601 UTC
expires_atWhen the job goes offline, ISO 8601 UTC
application_typeHow to apply
job_urlJob page on XING
search_rankPosition of the job in its search
scraped_atWhen the job was read, ISO 8601 UTC

Output examples

Real rows from our test runs on 6 October 2026; long texts and lists are trimmed.

A project manager job in Berlin with the employer's own salary range:

{
"job_id": "157180952",
"title": "PMO /Strategischer Projektmanager (m/w/d)",
"company": "Mercuri Urval GmbH",
"company_id": "29657",
"company_url": "https://www.xing.com/pages/mercuriurval",
"company_size": "501-1,000 employees",
"company_industry": "Consulting",
"location": "Berlin",
"region": "Land Berlin",
"country": "Germany",
"country_code": "DE",
"employment_type": "Full-time",
"career_level": "Manager/Supervisor",
"discipline": "Project management",
"industry": "Consulting",
"remote_option": "non_remote",
"is_remote": false,
"salary_text": "EUR 80,000 to 120,000 per year",
"salary_min": 80000,
"salary_max": 120000,
"salary_currency": "EUR",
"salary_period": "year",
"salary_source": "employer",
"posted_at": "2026-08-12T16:30:24Z",
"refreshed_at": "2026-09-26T16:30:24Z",
"expires_at": "2026-10-11T16:30:42Z",
"application_type": "external_site",
"apply_url": "https://www.mercuriurval.com/de-de/Opportunity/?jobadid=76515&refno=DE-24934&utm_source=xing.com",
"is_paid_listing": true,
"language": "de",
"summary_responsibilities": [
"Übernahme klassischer PMO-Aufgaben im Transformationsumfeld.",
"Steuerung komplexer Transformations- und Integrationsinitiativen.",
"Erstellung und Steuerung von Projektplänen."
],
"job_code": "DE-24934",
"job_url": "https://www.xing.com/jobs/berlin-pmo-strategischer-projektmanager-157180952",
"search_keyword": "Projektmanager",
"search_location": "Berlin",
"search_rank": 1,
"scraped_at": "2026-10-05T21:52:35.479Z"
}

A controller job in Zurich with XING's salary estimate in CHF:

{
"job_id": "158272845",
"title": "Controller (m/w/d)",
"company": "ROCKEN AG",
"company_size": "51-200 employees",
"company_industry": "HR services and consulting",
"location": "Zürich",
"postal_code": "8001",
"region": "Kanton Zürich",
"country": "Switzerland",
"country_code": "CH",
"employment_type": "Full-time",
"career_level": "Professional/Experienced",
"discipline": "Finance, accounting & controlling",
"remote_option": "non_remote",
"salary_text": "CHF 89,500 to 104,500 per year (XING estimate)",
"salary_min": 89500,
"salary_max": 104500,
"salary_median": 101000,
"salary_currency": "CHF",
"salary_period": "year",
"salary_source": "xing_estimate",
"posted_at": "2026-10-02T00:15:32Z",
"expires_at": "2026-11-01T00:37:51Z",
"application_type": "external_site",
"apply_url": "https://rocken.jobs/application/l9DQEOXMD4V_controller-mwd?utm_source=xing&utm_medium=cpc&utm_campaign=sponsored",
"job_url": "https://www.xing.com/jobs/zuerich-controller-158272845",
"search_keyword": "Controller",
"search_location": "Zürich",
"search_rank": 2
}

A controller job in Vienna with includeDescription on (the description is trimmed here; the row holds all of it, as text and as HTML):

{
"job_id": "158110674",
"title": "Controller:in (m/w/d)",
"company": "Michael Page Austria",
"company_size": "5,001-10,000 employees",
"location": "Wien",
"region": "Bundesland Wien",
"country": "Austria",
"country_code": "AT",
"employment_type": "Full-time",
"career_level": "Professional/Experienced",
"salary_text": "EUR 58,000 to 66,000 per year",
"salary_min": 58000,
"salary_max": 66000,
"salary_source": "employer",
"posted_at": "2026-09-24T08:09:07Z",
"application_type": "external_site",
"job_url": "https://www.xing.com/jobs/wien-controller-158110674",
"summary_intro": "Eine familiengeführte Unternehmensgruppe sucht einen Controller in Wien. Das Unternehmen ist in den Bereichen Gastronomie, Lebensmittel und Handel tätig.",
"description": "Intro\n\nDigitalisierung mit Substanz\n\nGestalten statt nur berichten\n\nFirmenprofil\n\nUnser Kunde ist eine erfolgreiche, familiengeführte Unternehmensgruppe mit Aktivitäten in den Bereichen Gastronomie, Lebensmittel und Handel. ...",
"description_html": "<h3>Intro</h3>Digitalisierung mit Substanz<br>\n Gestalten statt nur berichten<h3>Firmenprofil</h3><p>Unser Kunde ist eine erfolgreiche, familiengeführte Unternehmensgruppe ..."
}

Pricing

Pay per event: you pay for the job rows you receive, plus a flat $0.005 per run, whatever memory you choose.

EventWhen it is chargedFree planBronze (Starter)Silver (Scale)Gold (Business)
job-scrapedOnce per job row stored in your dataset$0.40 per 1,000$0.40 per 1,000$0.40 per 1,000$0.40 per 1,000
run-startOnce per run, when it starts$0.005$0.005$0.005$0.005

The price per single job is the price per 1,000 divided by 1,000. A job with the full description costs the same as one without.

Free plan runs return up to 10 results each; paid plans have no cap.

Never charged:

  • calls XING did not answer;
  • searches with no results;
  • a job already delivered earlier in the same run (found by another keyword, in another city or on a deeper page);
  • with onlyNewJobs, a job an earlier run already delivered to you;
  • the info row at the end of a run;
  • anything past your "Max cost per run": the actor stops delivering when your limit is reached instead of sending rows for free.

FAQ

What exactly does this actor read?

XING's public job search at xing.com/jobs, the professional network's job market for Germany, Austria and Switzerland. It sends the same job search query XING's own search page sends for a visitor who is not logged in, and reads the answer. Nothing is read behind a login.

How many jobs can I get?

Up to 1,000 per search (one keyword in one city), 20 per call; XING does not serve more for one search. Deep pages of a very broad search repeat some jobs: our test of "Vertrieb" with no city read all 1,000 places and got 725 different jobs, and the 275 repeats were skipped and not charged. For more jobs, split a broad search into cities or narrower keywords.

What do I get on the free plan?

Every run on Apify's free plan returns the first 10 results, so you can check the data and the fields before you pay. A paid Apify plan returns every result, up to the limit you set.

How long does a run take?

About one to five seconds a call of 20 jobs: 400 jobs from 4 searches took 22 seconds in our final test, 100 jobs with descriptions took 10.5 seconds, and one search read to the 1,000 bound took 112 seconds.

Where do the salaries come from?

From XING. When the employer posts a salary, salary_source is employer. Otherwise XING often shows its own estimate for the role and place, with a median; then salary_source is xing_estimate and salary_text ends with "(XING estimate)". XING states amounts as yearly gross figures; the few smaller amounts some employers enter (monthly pay in Austria, for example) get salary_period month or hour from their size. Swiss jobs usually come in CHF.

How fresh is the data?

Every run reads XING live. posted_at is when the job went live, refreshed_at when the employer last refreshed it, and expires_at when it goes offline. postedWithin works on the refresh date, as XING's own date filter does.

Do I need an account, cookies or a proxy?

No account, no cookies and nothing to set up. The actor reads XING's public job search over Apify's datacenter proxy. In our test runs every one of the 80 plus search calls was answered on the first try.

Can I search a whole country?

XING's search works with cities. Leave locations empty to search everywhere, or list the cities you care about (Wien, Graz, Linz for Austria; Zürich, Basel, Bern for Switzerland), with a radiusKm to take in the area around each. country_code on every row tells you where the job is.

Does it give contact details?

Only what the job itself publishes for applications: the employer's apply link (apply_url) or, for jobs that ask for applications by email, the address in apply_email. Recruiter profiles and other contact details on XING sit behind a login and are not read.

Can I monitor new jobs over time?

Yes. Turn on onlyNewJobs, set postedWithin to 24h, save the input as a task and add a daily schedule. Each run delivers and charges only jobs no earlier run of this actor in your account has delivered.

Which formats can I download?

JSON, CSV, Excel, XML, RSS and an HTML table, from the run's dataset in Console or through the API.

Can I use it from Claude, ChatGPT or Cursor (MCP)?

  • Connector URL: https://mcp.apify.com/?tools=themineworks/xing-jobs-scraper
  • Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
  • ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
  • Cursor or VS Code: add it as an HTTP MCP server with that URL.
  • Claude Code: claude mcp add -t http xing-jobs-scraper "https://mcp.apify.com/?tools=themineworks/xing-jobs-scraper"

The actor reads only job listings XING shows publicly to visitors who are not logged in, and no member profiles. Job ads can name a contact person; you are responsible for how you use the data, for XING's terms and for data protection law such as the GDPR, the Swiss FADP and the CCPA. If in doubt, ask a lawyer about your use case.

Integrations

  • Google Sheets: send each run's rows to a sheet with Apify's Google Sheets integration, or import the CSV link of the dataset.
  • Make, Zapier and n8n: start the actor and read its dataset with the Apify apps and nodes, for example "new remote developer jobs in DACH to Slack every morning".
  • Webhooks: have Apify call your URL when a run succeeds, then fetch the dataset.
  • API and SDKs: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
  • MCP clients: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.

More from The Mine Works

Jobs and hiring

Social media and video

Leads and business directories

Marketing, SEO and reviews

LinkedIn

Real estate

Science, health and government data

Company and business data

E-commerce and marketplaces

Food and local services

Developer and AI tools

More tools

Support

Found a search that should return jobs and does not? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For another job site, a new source or a field you need, email dmineworks@gmail.com.

Search XING jobs in Germany, Austria and Switzerland by keyword, city and XING's own filters, and get every job back as a clean row with its salary range and whose figure it is.