# XING Jobs Scraper – Germany, Austria & Switzerland Jobs (`nextgenmedia/xing-jobs-scraper`) Actor

Scrape XING jobs in Germany, Austria and Switzerland by keyword, city and radius. Get title, company, salary range, career level, apply link and full description. Fresh jobs from the last 24 h, week or month. No login. Fast HTTP, $0.59 per 1,000 jobs.

- **URL**: https://apify.com/nextgenmedia/xing-jobs-scraper.md
- **Developed by:** [SHUBHAM SRIVASTAVA](https://apify.com/nextgenmedia) (community)
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.59 / 1,000 jobs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

XING Jobs Scraper – Germany, Austria & Switzerland Jobs with Salary
XING Jobs Scraper extracts job listings from XING Jobs, the leading professional network in Germany, Austria and Switzerland (DACH). Search by keyword, city and radius, keep only fresh jobs (last 24 hours, week or month), and get job title, company, location, salary range, career level, employment type, apply link and the full job description, ready for Excel, Google Sheets, your CRM or an AI agent.
⚡ Fast and cheap: pure HTTP, no browser, no XING login or cookies. $0.59 per 1,000 jobs, one of the lowest prices for XING data on Apify.
🚀 What can XING Jobs Scraper do?
✅ Scrape XING jobs by keyword, location and radius (e.g. "Data Analyst" in Berlin + 30 km)
✅ Several keywords in one run with automatic de-duplication across keywords
✅ Fresh jobs only: posted or refreshed in the last 24 hours, last week or last month
✅ Salary data: minimum, median and maximum salary, currency, and whether it's an estimate, range or exact
✅ Full job descriptions (optional), plus industry, region and country
✅ Smart title filters: keep only titles containing words like "Controller" or "Einkauf", exclude "Senior", "Werkstudent", "Praktikum"
✅ Apply links: XING job page and the company's external application URL
✅ No XING account, no cookies, no login
✅ Export to JSON, CSV, Excel or HTML, or connect via API, n8n, Make, Zapier or Google Sheets
👥 Who uses it?
You are…	Use it to…
Job seeker / career coach	Get a daily list of new matching jobs in your city, with salary ranges, instead of searching XING by hand
Recruiter / staffing agency	Find companies that are hiring right now for the roles you place, by city and region
Sales / lead generation (B2B)	Use hiring signals to find companies that are growing and buying (software, services, training, office space)
Labour-market researcher / HR analyst	Track demand and salary trends for roles and skills across Germany, Austria and Switzerland
Job board / career platform	Feed fresh DACH job listings into your own site or app

## 📋 How to scrape XING jobs (step by step)

Add one or more search keywords, e.g. `Supply Chain Manager`, `Junior Controller`, `Data Analyst`.
Add a location (e.g. `München`, `Berlin`, `Hamburg`, `Wien`, `Zürich`) and optionally a radius in km. Leave it empty to search the whole region.
Choose Posted within: last 24 hours, last week or last month.
Optionally set title filters (keep / exclude words) and the maximum number of jobs.
Click Start, then download the results as CSV or Excel, or send them to Google Sheets.
💡 Tip: schedule a daily run with "last 24 hours" to get a job alert with only new jobs every morning.
⬇️ Input example

```json
{
  "keywords": ["Supply Chain Manager", "Junior Controller"],
  "location": "München",
  "radius": 30,
  "postedWithin": "LAST_WEEK",
  "maxItems": 200,
  "includeDescription": true,
  "excludeTitleKeywords": ["Senior", "Werkstudent", "Praktikum"]
}
```

⬆️ Output example (real result)

```json
{
  "title": "Supply Chain Manager (m/w/d)",
  "company": "P3",
  "location": "München",
  "locations": ["München"],
  "region": "Bayern",
  "country": "DE",
  "employmentType": "Full-time",
  "careerLevel": "Professional/Experienced",
  "salaryMin": 58000,
  "salaryMedian": 70500,
  "salaryMax": 85000,
  "salaryCurrency": "EUR",
  "salaryType": "estimate",
  "industry": "Consulting",
  "postedAt": "2026-10-06T23:27:59Z",
  "activeUntil": "2027-04-07T14:22:35Z",
  "url": "https://www.xing.com/jobs/muenchen-supply-chain-manager-158393716",
  "applyUrl": "https://p3-group.com/stelle/supply-chain-manager-m-w-d-stuttgart/",
  "isTopJob": false,
  "searchKeyword": "Supply Chain Manager",
  "description": "Supply Chain Manager (m/w/d) … Deine Mission: Du sorgst dafür, dass Lieferketten …"
}
```

All output fields
Field	Description
`title`, `company`, `companyId`, `companyLogo`	Job title and hiring company
`location`, `locations`, `region`, `postalCode`, `country`	Where the job is
`employmentType`, `careerLevel`	Full-time / part-time…, entry / professional / manager…
`salaryMin`, `salaryMedian`, `salaryMax`, `salaryCurrency`, `salaryType`	Salary range and whether it's an estimate, range or exact value
`postedAt`, `refreshedAt`, `activeUntil`	Publication, refresh and expiry dates
`url`, `applyUrl`, `externalApplication`	XING job page and application link
`isTopJob`, `isPaidListing`	Promoted listing flags
`industry`, `description`	Industry and full job text (when Include full job description is on)
`searchKeyword`, `scrapedAt`	Which keyword found the job, and when
💰 How much does it cost to scrape XING?
$0.59 per 1,000 jobs (pay per result) plus a tiny start fee of $0.001 per run.
Jobs	Cost
100	≈ $0.06
1,000	≈ $0.59
10,000	≈ $5.90
New Apify users get free monthly credits, enough for thousands of XING jobs.
🔗 Integrations and API
Google Sheets: a fresh job list in a spreadsheet every day
n8n, Make, Zapier: send new jobs to Slack, Telegram, email or your ATS/CRM
Apify API: run from Python, JavaScript or any HTTP client, and get results as JSON
AI agents and MCP: use the results to match CVs, write cover letters or summarise the job market
❓ FAQ
Do I need a XING account?
No. The scraper works without login, cookies or a XING subscription.
Which countries are covered?
All jobs on XING Jobs, mainly Germany, Austria and Switzerland (DACH). Use the location field for a city, region or country, e.g. "Österreich" or "Schweiz".
Is the salary always included?
Only when XING shows a salary or salary estimate for the job. `salaryType` tells you whether it's an estimate, a range or an exact value.
How do I get only new jobs every day?
Set Posted within to Last 24 hours, save the input as a Task, and schedule it daily.
Can I search several job titles at once?
Yes. Add several keywords; results are combined and duplicates removed. Use Max jobs per keyword so one keyword doesn't use the whole budget.
Why are some descriptions empty?
Turn on Include full job description. Turning it off makes runs faster and returns only the job list.
Is scraping XING legal?
The scraper only collects publicly visible job listings. You are responsible for using the data in line with XING's terms and applicable laws (e.g. GDPR). Read more: Is web scraping legal?
Found a bug or need a feature? Open an issue on the Issues tab. Fixes are usually fast.
---------------------------------------------------------------------------------------

Keywords: XING scraper, XING jobs scraper, XING API alternative, scrape XING jobs, Germany jobs scraper, DACH jobs data, Stellenangebote scrapen, job listings Germany Austria Switzerland, salary data Germany, job market data, recruiting leads, hiring signals.

# Actor input Schema

## `keywords` (type: `array`):

One search per keyword, e.g. job titles or skills. Results from all keywords are combined and duplicates removed.

## `location` (type: `string`):

City, region or country, e.g. "München", "Berlin", "Österreich". Leave empty to search everywhere.

## `radius` (type: `integer`):

Search radius around the location in kilometres. 0 = XING default.

## `postedWithin` (type: `string`):

Only return jobs published or refreshed within this period.

## `maxItems` (type: `integer`):

Maximum number of unique jobs to save across all keywords.

## `maxItemsPerKeyword` (type: `integer`):

Optional cap per keyword so one keyword can't use the whole budget. 0 = no cap.

## `includeDescription` (type: `boolean`):

Open each job page to get the full description, industry, region and country. Slower; turn off for a fast list of jobs only.

## `titleMustContain` (type: `array`):

Keep a job only if its title contains at least one of these words (case-insensitive, also inside longer words: "disponent" matches "Materialdisponent"). Leave empty to keep all jobs XING returns.

## `excludeTitleKeywords` (type: `array`):

Skip jobs whose title contains any of these words (matched at the start of a word, case-insensitive), e.g. Senior, Werkstudent, Praktikum.

## `maxConcurrency` (type: `integer`):

How many job pages to open in parallel when loading descriptions.

## `proxyConfiguration` (type: `object`):

Apify Proxy is recommended. Datacenter proxies are usually enough.

## Actor input object example

```json
{
  "keywords": [
    "Data Analyst",
    "Projektmanager"
  ],
  "location": "München",
  "radius": 0,
  "postedWithin": "LAST_WEEK",
  "maxItems": 100,
  "maxItemsPerKeyword": 0,
  "includeDescription": true,
  "titleMustContain": [
    "Supply Chain",
    "Einkauf",
    "Disponent",
    "Procurement"
  ],
  "excludeTitleKeywords": [],
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `jobs` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "Supply Chain Manager",
        "Junior Controller"
    ],
    "location": "München",
    "titleMustContain": [
        "Supply Chain",
        "Einkauf",
        "Disponent",
        "Procurement"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("nextgenmedia/xing-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": [
        "Supply Chain Manager",
        "Junior Controller",
    ],
    "location": "München",
    "titleMustContain": [
        "Supply Chain",
        "Einkauf",
        "Disponent",
        "Procurement",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("nextgenmedia/xing-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "Supply Chain Manager",
    "Junior Controller"
  ],
  "location": "München",
  "titleMustContain": [
    "Supply Chain",
    "Einkauf",
    "Disponent",
    "Procurement"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call nextgenmedia/xing-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nextgenmedia/xing-jobs-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ESEHMsGR0XeS3bYeC/builds/hDzJ9wKTAoA34VZWB/openapi.json
