# Xing Jobs Scraper (`robertosan16/xing-jobs-scraper`) Actor

Scrape Xing jobs in Germany, Austria and Switzerland by keyword and city: title, company, salary or Xing estimate, job type, career level, remote, full description. No login.

- **URL**: https://apify.com/robertosan16/xing-jobs-scraper.md
- **Developed by:** [Robert Khairislamov](https://apify.com/robertosan16) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

**Scrape Xing jobs in Germany, Austria and Switzerland by keyword and city.** Get title, company, salary as numbers or Xing's salary estimate, job type, career level, remote or hybrid, field and industry, the full description, a short summary and the job link. Export to JSON, CSV or Excel, or use the API. **$1 per 1,000 jobs, no start fee.**

Scrape jobs from **Xing**, the professional network and job site of the German-speaking countries, the way you search on it: keywords such as `data analyst`, `Pflegefachkraft` or `Projektmanager`, a city such as `Berlin`, `München`, `Wien` or `Zürich` with a distance, and Xing's filters for job type, career level, remote work and date posted. Each job comes with the **salary as numbers** per year where the employer states it and **Xing's salary estimate** (low, median and high) where it does not, so almost every job has a pay figure. You also get the **career level**, the field and industry, every location with postal code, the company's Xing page, size and logo, and Xing's **short summary** of the job: introduction, qualifications and responsibilities. The full description comes with every job, without opening job pages, so runs are fast. Run it on a schedule to get **only new jobs**. No browser, no login.

### What can this Xing scraper do?

- 🔎 **Search like on the website**: keywords and a city with a distance in km, or paste any Xing job search link.
- 🇩🇪 🇦🇹 🇨🇭 **Germany, Austria and Switzerland**: Xing's jobs in all three countries, searched together or city by city.
- 💰 **Salaries and estimates**: pay the employer states becomes `{ "min": 50000, "max": 55000, "currency": "EUR", "interval": "year" }`. Where the employer states none, Xing's estimate goes to `salaryEstimate`, with the median.
- 🎛️ **Xing filters**: job type (full-time, part-time, self-employed, student, temp, seasonal, volunteer), career level (student to senior executive), remote, hybrid or on-site, and date posted.
- 📝 **Summary and skills**: Xing's short summary of each job and its keywords, handy for matching and AI.
- 🏢 **Company details**: the company's Xing page, size, industry, city and logo.
- 🆕 **Only new jobs since the last run**: for job alerts, recruiting pipelines and market monitoring.
- 🧩 **Same output as our other job scrapers**, listed at the end of this page, so Xing jobs, other job boards and company career sites fit into one table.

### What data does it extract?

| Field | Example |
|---|---|
| `title` | (Junior) Performance / Business Analyst (m/w/d) Retail |
| `companyName` / `companySize` | Mercuri Urval GmbH / 501-1,000 employees |
| `location` / `city` / `state` / `postalCode` / `country` | Hamburg, Freie und Hansestadt Hamburg, DE / Hamburg / … / DE |
| `employmentType` / `seniorityLevel` | full-time / Entry Level |
| `salary` | `{ "min": 50000, "max": 55000, "currency": "EUR", "interval": "year" }` |
| `salaryEstimate` | Xing's estimate with `min`, `median` and `max`, for jobs without a stated salary |
| `remote` / `workplaceType` / `remoteOptions` | false / onsite / onsite |
| `department` / `industry` | Analysis and statistics / Consulting |
| `summary` | introduction, qualifications and responsibilities |
| `skills` | supply, chain, management, marktforschung, retail… |
| `postedAt` / `updatedAt` / `validThrough` | 2026-09-15 / 2026-09-30 / 2026-11-14 |
| `jobUrl` / `applyUrl` / `companyUrl` | the job on Xing, the employer's application page, the company on Xing |
| `descriptionText` / `descriptionHtml` | full job description |

### How to scrape Xing jobs

1. Enter **job titles or keywords**, one search per line, for example `data analyst`. Or paste links of searches you made on xing.com/jobs.
2. Optionally enter a **city** such as `Berlin`, `Wien` or `Zürich`, and a **distance** in km.
3. Optionally choose **job types**, **career levels**, **remote, hybrid or on-site**, or a **date range**.
4. Click **Start**. Download the jobs as JSON, CSV, Excel or HTML, or get them through the API.

A step-by-step guide with Python examples for our job scrapers: [How to Scrape Job Postings from LinkedIn and 12 More Job Sites in One Format](https://medium.com/@robertkhairislamov/how-to-scrape-job-postings-from-linkedin-and-12-more-job-sites-in-one-format-935bb79ba2d2).

#### Example input

```json
{
  "searchQueries": ["data analyst", "business analyst"],
  "location": "Hamburg",
  "distance": 30,
  "jobTypes": ["fulltime"],
  "experienceLevels": ["entry", "experienced"],
  "workplaceTypes": ["remote", "hybrid"],
  "postedWithinDays": 7
}
```

Job types are `fulltime`, `parttime`, `contract`, `internship`, `temporary`, `seasonal` and `volunteer`; career levels `student`, `entry`, `experienced`, `manager`, `executive` and `senior_executive`; workplaces `remote`, `hybrid` and `onsite`. In the form you simply pick them from a list.

#### Example output

```json
{
  "ats": "xing",
  "company": "29657",
  "companyName": "Mercuri Urval GmbH",
  "jobId": "157877372",
  "title": "(Junior) Performance / Business Analyst (m/w/d) Retail",
  "department": "Analysis and statistics",
  "location": "Hamburg, Freie und Hansestadt Hamburg, DE",
  "locations": ["Hamburg, Freie und Hansestadt Hamburg, DE"],
  "remote": false,
  "workplaceType": "onsite",
  "employmentType": "full-time",
  "salary": { "min": 50000, "max": 55000, "currency": "EUR", "interval": "year", "text": "EUR 50,000–55,000 per year", "source": "listing" },
  "postedAt": "2026-09-15T08:06:58.000Z",
  "updatedAt": "2026-09-30T08:06:58.000Z",
  "jobUrl": "https://www.xing.com/jobs/hamburg-junior-performance-business-analyst-retail-157877372",
  "applyUrl": "https://www.mercuriurval.com/de-de/Opportunity/?jobadid=76640&refno=DE-24995&utm_source=xing.com",
  "descriptionText": "Als Unternehmen der Shell-Gruppe bietet die CARISSA eine end-to-end Dienstleistung für über 2.000 Shell Convenience Stores…",
  "descriptionHtml": "<p>Als Unternehmen der Shell-Gruppe bietet die CARISSA eine end-to-end Dienstleistung…",
  "salaryEstimate": null,
  "remoteOptions": ["onsite"],
  "seniorityLevel": "Entry Level",
  "industry": "Consulting",
  "city": "Hamburg",
  "state": "Freie und Hansestadt Hamburg",
  "postalCode": null,
  "country": "DE",
  "validThrough": "2026-11-14T08:07:02Z",
  "language": "de",
  "skills": ["supply", "chain", "management", "research", "marketing", "analyst", "marktforschung", "retail"],
  "summary": {
    "introduction": "CARISSA sucht einen Business / Performance Analyst in Hamburg. Das Unternehmen bietet end-to-end Dienstleistungen für Shell Convenience Stores in der DACH-Region.",
    "qualifications": ["Abgeschlossenes Studium mit kaufmännischem Bezug.", "Erste Berufserfahrung im Handelsumfeld.", "Praktische Erfahrung mit Python erforderlich."],
    "responsibilities": ["Erstellung von Reports zur Kategorieperformance.", "Einführung von Performance Indikatoren und Zielen.", "Analyse der Werttreiber im Shopgeschäft."]
  },
  "companyUrl": "https://www.xing.com/pages/mercuriurval",
  "companyLogo": "https://www.xing.com/imagecache/public/scaled_original_image/…",
  "companySize": "501-1,000 employees",
  "companyIndustry": "Consulting",
  "companyCity": "Hamburg",
  "scrapedAt": "2026-10-13T10:05:12.410Z"
}
```

### Use cases

- **Recruitment and staffing agencies**: see every new role in your field and region in Germany, Austria and Switzerland each morning, with pay and career level.
- **Job seekers**: new jobs for your role and city, with a salary figure for almost every job.
- **Salary research**: compare stated pay and Xing's estimates by role, city, career level and job type.
- **Sales and lead generation**: companies that hire are growing. Size, industry and the company's Xing page help to qualify them.
- **Labor market analytics**: track demand by occupation, career level, remote share and city in the DACH region.
- **AI agents**: give an agent one tool that searches jobs in the German-speaking countries.

### How much does it cost?

You pay only for the jobs you get: **$1 per 1,000 jobs**. That is the price on the Apify Free plan. Paid Apify plans pay less: $0.90 per 1,000 jobs on Starter, $0.80 on Scale and $0.70 on Business, which is the "from" price shown in Apify Store. There is no start fee. The same job found by two searches is saved once, and you do not pay for duplicates or for jobs filtered out by your settings. The Apify free plan covers about 5,000 jobs every month.

### Tips

- **Daily job alerts**: save your input as a task, turn on **Only new jobs since the last run** and add a schedule. Send new jobs to Slack, email or Google Sheets with Apify integrations.
- **Stricter results**: Xing's search also finds related jobs, so a search for `Data Analyst` lists business and BI analysts too, and the further down the list, the looser the match. Use **Title must contain** to keep only jobs with your words in the title.
- **More than 1,000 jobs**: Xing shows at most 1,000 jobs per search. For more, search city by city, or split by job type or career level.
- **Faster runs**: turn off **Include job descriptions**. You still get every other field, including the summary.
- **Errors per search**: see the `SUMMARY` record in the run's key-value store.

### FAQ

**Why not just ask an AI chatbot?** A chatbot with web search reads a few pages and retells them, so it finds a handful of jobs. In our test in October 2026, a chatbot asked for every nurse and dental assistant job in Adelaide listed about 10; our [All-in-One Jobs Scraper](https://apify.com/robertosan16/all-in-one-jobs-scraper), which shares this Actor's code, returned 1,480 from SEEK, Indeed, Glassdoor and LinkedIn in three minutes, each with its link and date. This Actor gives you every job the site shows for your search, word for word and in the same fields every time, so you can load them into a spreadsheet, database or CRM, get only new jobs on a schedule, and pay a fixed price per 1,000 jobs instead of paying an AI to read every page. AI agents use it the same way: through Apify's MCP server, an agent can call this Actor whenever it needs real job data.

**Why do some jobs have a salary estimate instead of a salary?** `salary` holds only pay the employer states. Where it states none, Xing shows its own estimate for the role and place; the Actor keeps it apart in `salaryEstimate`, so you always know which is which. **Only jobs with a salary** counts stated pay only.

**Can I search a whole country or state?** Xing searches by city, or everywhere at once. Leave the city empty to search all of Germany, Austria and Switzerland, or enter cities such as `Wien` or `Zürich` with a distance to cover a region.

**Why is the company sometimes missing details?** Xing links some jobs, often those of staffing agencies, to another company's page. The Actor then keeps the employer's name from the job and leaves out the other company's details instead of mixing them up.

**Does it collect recruiter contact details?** No. The contact section of Xing's job template is left out, and there are no fields for recruiters' names, emails or phone numbers.

**Is it legal to scrape Xing?** The Actor reads the public job listings Xing shows to every visitor, without logging in. Check the terms that apply to your use case. This Actor is not affiliated with Xing or New Work SE.

### Integrations and API

- **Google Sheets, Slack, email and CRMs**: connect the Actor to Make, Zapier or n8n, or use the **Integrations** tab of this Actor. With **Only new jobs since the last run** and a schedule, each run sends only the new jobs.
- **Webhooks**: call your own URL when a run finishes, for example to load the new jobs into your database.
- **AI agents (MCP)**: add `https://mcp.apify.com?tools=robertosan16/xing-jobs-scraper` as an MCP server in Claude, Cursor or VS Code, and your agent can search jobs with this Actor. Tell it how many jobs you need, so it sets **Maximum jobs in total**.
- **LangChain and LlamaIndex**: load the jobs into your LLM app with the Apify loaders.
- **API**: one request runs the Actor and returns the jobs, for runs of up to 5 minutes. Start longer runs with the `runs` endpoint and read the dataset when they finish.

```bash
curl -X POST "https://api.apify.com/v2/acts/robertosan16~xing-jobs-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries":["data analyst"],"location":"München","maxItems":20}'
```

### More job scrapers with the same output

- [Greenhouse Jobs Scraper](https://apify.com/robertosan16/greenhouse-jobs-scraper): every job of any company on Greenhouse, with salary ranges
- [Lever Jobs Scraper](https://apify.com/robertosan16/lever-jobs-scraper): every job of any company on Lever, including EU sites
- [Ashby Jobs Scraper](https://apify.com/robertosan16/ashby-jobs-scraper): startup jobs from Ashby job boards, with compensation
- [Workday Jobs Scraper](https://apify.com/robertosan16/workday-jobs-scraper): every job from any Workday career site, past the 2,000 search limit
- [Dice Jobs Scraper](https://apify.com/robertosan16/dice-jobs-scraper): US tech jobs from Dice.com, with skills and salaries
- [Welcome to the Jungle Jobs Scraper](https://apify.com/robertosan16/welcome-to-the-jungle-jobs-scraper): startup jobs in France, Europe, the UK and the US
- [SEEK Jobs Scraper](https://apify.com/robertosan16/seek-jobs-scraper): jobs in Australia and New Zealand, with salaries as numbers
- [StepStone Jobs Scraper](https://apify.com/robertosan16/stepstone-jobs-scraper): jobs in Germany, with benefits and English-language jobs
- [Jobstreet Jobs Scraper](https://apify.com/robertosan16/jobstreet-jobs-scraper): jobs in Malaysia, Singapore, the Philippines and Indonesia, with salaries as numbers
- [JobsDB Jobs Scraper](https://apify.com/robertosan16/jobsdb-jobs-scraper): jobs in Hong Kong and Thailand, with salaries as numbers
- [Reed Jobs Scraper](https://apify.com/robertosan16/reed-jobs-scraper): UK jobs from Reed.co.uk, with salaries, contract type and hybrid or remote
- [InfoJobs Jobs Scraper](https://apify.com/robertosan16/infojobs-jobs-scraper): jobs in Spain from InfoJobs.net, with salaries and remote policy
- [LinkedIn Jobs Scraper](https://apify.com/robertosan16/linkedin-jobs-scraper): public LinkedIn job listings without login, with full job details
- [Indeed Jobs Scraper](https://apify.com/robertosan16/indeed-jobs-scraper): Indeed jobs in 62 countries, with salaries, job types, benefits and company details
- [Glassdoor Jobs Scraper](https://apify.com/robertosan16/glassdoor-jobs-scraper): Glassdoor jobs in 62 countries, with company ratings, salaries and company details
- [Wellfound Jobs Scraper](https://apify.com/robertosan16/wellfound-jobs-scraper): startup jobs from Wellfound (AngelList Talent) with salary, equity and company stage
- [Foundit Jobs Scraper](https://apify.com/robertosan16/foundit-jobs-scraper): jobs in India, the Gulf, Singapore, Malaysia, the Philippines and Hong Kong from Foundit (formerly Monster), with experience, skills and salary
- [All-in-One Jobs Scraper](https://apify.com/robertosan16/all-in-one-jobs-scraper): LinkedIn, Indeed, Glassdoor and the other job boards here in one search, plus career sites you add, with duplicates removed

Missing a field or a feature? Open an issue in the Issues tab or email <support@mozartstandard.com>, and we will reply quickly.

# Actor input Schema

## `searchQueries` (type: `array`):

What to search, for example <code>data analyst</code>, <code>Pflegefachkraft</code> or <code>Projektmanager</code>. Each line is a separate search with the filters below. You can also paste links of searches from xing.com/jobs.

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

A city in Germany, Austria or Switzerland, for example <code>Berlin</code>, <code>München</code>, <code>Wien</code> or <code>Zürich</code>. Leave empty to search everywhere. Xing does not search by state or country.

## `distance` (type: `integer`):

Also find jobs this far from the city. Leave empty for Xing's default.

## `jobTypes` (type: `array`):

Leave empty for all. With several types you get jobs of any of them.

## `experienceLevels` (type: `array`):

Leave empty for all. With several levels you get jobs of any of them.

## `workplaceTypes` (type: `array`):

Leave empty for all.

## `postedWithinDays` (type: `integer`):

Keep jobs posted in the last N days: 1 means today and yesterday. Leave empty or 0 for any date.

## `excludeKeywords` (type: `array`):

Skip jobs whose title contains any of these, for example <code>intern</code> or <code>senior</code>. Common word endings are included.

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

Keep only jobs whose title contains any of these words or phrases. Xing searches descriptions too, so this makes results stricter. Add <code>*</code> for any ending: <code>data*</code>.

## `onlyWithSalary` (type: `boolean`):

Keep only jobs that state a pay range or rate.

## `onlyNew` (type: `boolean`):

For scheduled runs: save only jobs that were not seen in earlier runs of the same saved task. The first run saves all current jobs and remembers them. Jobs that did not match your filters are remembered too.

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

Save the full description (text and HTML) of each job. Turn off for smaller, faster results with every other field.

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

Stop after saving this many jobs. Leave empty or 0 for no limit. The example is kept small so the first run takes seconds.

## `maxItemsPerCompany` (type: `integer`):

Save at most this many jobs from each search. Leave empty or 0 for no limit.

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

The Actor connects directly, which is fastest. If Xing starts limiting requests, it switches to Apify Proxy automatically. Turn on a proxy here only to use it from the start.

## Actor input object example

```json
{
  "searchQueries": [
    "software engineer"
  ],
  "location": "Berlin",
  "onlyWithSalary": false,
  "onlyNew": false,
  "includeDescription": true,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Job postings with title, company, locations, salary, dates, description and links.

## `summary` (type: `string`):

Jobs found, matched and saved for each company, with errors.

# 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 = {
    "searchQueries": [
        "software engineer"
    ],
    "location": "Berlin",
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("robertosan16/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 = {
    "searchQueries": ["software engineer"],
    "location": "Berlin",
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("robertosan16/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 '{
  "searchQueries": [
    "software engineer"
  ],
  "location": "Berlin",
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call robertosan16/xing-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,robertosan16/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/upe6brDsEhzbuff99/builds/mOAhK2kg5Fk2LRmcQ/openapi.json
