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

Scrape Xing job listings across the DACH region — titles, salaries, companies, locations, descriptions, and 60+ structured fields. Filter by keyword, location, and discipline. Export as JSON, CSV, or Excel.

- **URL**: https://apify.com/parsebird/xing-jobs-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:** Jobs, Developer tools
- **Stats:** 6 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.80 / 1,000 job scrapeds

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### Xing Jobs Scraper

Extract structured job listings from [Xing](https://www.xing.com/jobs) — the leading professional network in the DACH region (Germany, Austria, Switzerland) with over 22 million members. Get 60+ data fields per job including salary, company details, descriptions, and application links.

<table><tr>
<td style="border-left:4px solid #026466;padding:12px 16px;font-weight:600">
Search by keyword, location, and discipline — extract titles, salaries, company metadata, full descriptions, and application URLs from Xing job listings. 60+ structured fields per result, ready for analysis or integration.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
Apify Actor: parsebird/xing-jobs-scraper. Scrapes job listings from Xing.com (DACH region). Call via ApifyClient: client.actor("parsebird/xing-jobs-scraper").call(run_input={"keyword": "Data Analyst", "location": "Berlin", "results_wanted": 50, "max_pages": 10}). Supports startUrl (direct Xing search URL), keyword, location, discipline filters. Returns 60+ fields per job: job_id, title, company, location, salary, salary_raw, job_type, discipline, remote, date_posted, description_html, description_text, apply_url, company_size, company_industry, keywords, and more. Full API spec: https://apify.com/parsebird/xing-jobs-scraper/api. Get your token: https://console.apify.com/settings/integrations.
```

### What is Xing Jobs Scraper?

**Xing Jobs Scraper** extracts job listing data from [Xing](https://www.xing.com/jobs), the dominant professional network in Germany, Austria, and Switzerland. With over 22 million members and nearly one million active job postings, Xing is the primary job board for DACH-region roles that rarely appear on English-language platforms.

This actor queries Xing's internal API to collect structured job data — no browser automation needed, no API key required. It returns 60+ fields per listing including job title, company name, salary range, location details, full HTML and plain-text descriptions, application URLs, and company metadata.

Use the Xing Jobs Scraper as a **Xing API alternative** to access DACH job market data at scale. Run it on [Apify](https://apify.com) with built-in scheduling, proxy rotation, and export to JSON, CSV, or Excel.

### What data can you extract from Xing?

| Field | Description |
|-------|-------------|
| `title` | Job title |
| `company` | Employer name |
| `location` | Primary city |
| `salary` | Human-readable salary text (e.g. "EUR 47,500 - EUR 55,000") |
| `salary_raw` | Structured salary object with currency, min, max, and period |
| `job_type` | Employment type (Full-time, Part-time, etc.) |
| `discipline` | Professional field (e.g. Project management, IT) |
| `remote` | Remote/hybrid/on-site indicator |
| `description_html` | Full job description in HTML |
| `description_text` | Clean plain-text description |
| `apply_url` | Direct application link |
| `date_posted` | Post or refresh date (ISO format) |
| `company_size` | Company size range |
| `company_industry` | Company industry |
| `keywords` | Deduplicated job keywords |
| `url` | Direct Xing job URL |

The full output includes 60+ fields — see the [Output example](#output-example) section for the complete schema.

### How to scrape Xing jobs

1. **Go to the Actor page** — Open [Xing Jobs Scraper](https://apify.com/parsebird/xing-jobs-scraper) on Apify. Sign up for a [free trial](https://console.apify.com/sign-up) if you don't have an account.
2. **Enter your search criteria** — Type a keyword (e.g. "Software Engineer"), location (e.g. "Berlin"), and optionally a discipline. Or paste a Xing search URL into the Search URL field.
3. **Set limits** — Choose how many results you want (Max Results) and the maximum pages to process.
4. **Run the actor** — Click "Start" and wait for the run to complete. Typical runs finish in under a minute.
5. **Download your data** — Export results as JSON, CSV, or Excel from the Dataset tab. Or access the data via the [Apify API](https://docs.apify.com/api/v2).

#### Python API example

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("parsebird/xing-jobs-scraper").call(run_input={
    "keyword": "Data Analyst",
    "location": "Berlin",
    "results_wanted": 50,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item['title']} at {item['company']} — {item['salary']}")
```

#### JavaScript API example

```javascript
import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: "YOUR_API_TOKEN" });

const run = await client.actor("parsebird/xing-jobs-scraper").call({
    keyword: "Data Analyst",
    location: "Berlin",
    results_wanted: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => console.log(`${item.title} at ${item.company}`));
```

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `startUrl` | string | No | — | Direct Xing jobs search URL; the actor derives search filters from it when keyword/location are not passed explicitly |
| `keyword` | string | No | — | Job search keyword or role title (e.g. "Data Analyst", "Projektmanager") |
| `location` | string | No | — | City or region filter (e.g. "Berlin", "München", "Wien") |
| `discipline` | string | No | — | Professional field filter (e.g. "Project management", "IT") |
| `results_wanted` | integer | No | 20 | Maximum number of job records to collect |
| `max_pages` | integer | No | 20 | Maximum number of result pages to process |
| `proxyConfiguration` | object | No | Residential | Proxy settings for stable data collection |

### Output example

```json
{
    "job_id": "148355491.3c4997",
    "slug": "schoenefeld-junior-projektmanager-strategische-unternehmensentwicklung-148355491",
    "title": "(Junior) Projektmanager (m/w/d) Strategische Unternehmensentwicklung",
    "company": "Krieger Gruppe",
    "location": "Schönefeld",
    "salary": "EUR 47,500 - EUR 55,000",
    "job_type": "Full-time",
    "discipline": "Project management",
    "remote": null,
    "job_category": "Furniture and wood products",
    "date_posted": "2025-12-20T17:24:09Z",
    "description_type": "HtmlDescription",
    "description_text": "We are looking for a motivated Junior Project Manager...",
    "apply_url": "https://krieger-gruppe.softgarden.io/job/...",
    "company_size": "501-1,000",
    "company_industry": "Manufacturing",
    "keywords": ["Project management", "Strategy", "Business development"],
    "url": "https://www.xing.com/jobs/schoenefeld-junior-projektmanager-strategische-unternehmensentwicklung-148355491",
    "detail_error": null
}
```

Each result contains 60+ fields. Download the full dataset in JSON, CSV, or Excel from the [Apify Console](https://console.apify.com).

### Tips for best results

**Start with focused queries**

- Use precise keywords to improve relevance — "Machine Learning Engineer" returns more targeted results than "Engineer"
- Add a location to narrow the result set to a specific city or region
- Use the discipline filter to target a specific professional field

**Control your dataset size**

- Use a smaller `results_wanted` value (10–20) for quick validation runs
- Increase gradually for production data collection
- Set `max_pages` to keep run duration predictable

**Use reliable proxy settings**

- Residential proxies (the default) deliver consistent results from Xing
- Keep the default proxy configuration unless you have specific routing requirements

**Prefer direct search URLs for repeatability**

- Use `startUrl` when you want stable, repeatable search filters
- Save proven search URLs for [scheduled runs](https://docs.apify.com/platform/schedules) — ideal for daily or weekly job monitoring

### Use cases

📊 **DACH job market research** — Analyze hiring trends, salary ranges, and demand for specific roles across Germany, Austria, and Switzerland.

🏢 **Competitive intelligence** — Monitor competitor hiring activity, open headcount, and the professional disciplines they invest in.

🔍 **Talent acquisition** — Build automated pipelines that surface new Xing job openings matching your criteria daily.

💰 **Salary benchmarking** — Collect structured salary data across roles, locations, and seniority levels in the DACH region for budgeting or negotiation.

📈 **Academic research** — Create datasets for labor economics, workforce mobility, or skills-gap analysis in German-speaking markets.

🔗 **Lead generation** — Identify companies that are actively hiring and use the company data for targeted outreach.

### How it works

1. **Input parsing** — The actor reads your keyword, location, discipline, or `startUrl` parameters. If a search URL is provided, filters are extracted from the URL automatically.
2. **Search API** — Queries Xing's internal API with the configured filters. The API returns up to 20 jobs per page with core fields (title, company, location, salary, employment type).
3. **Pagination** — Walks through result pages until `results_wanted` is reached or no more results are available. Pages are capped by the `max_pages` setting.
4. **Detail enrichment** — For each job found, the actor fetches the full detail page via a second API call to get descriptions, application URLs, keywords, and extended company data. Detail requests run concurrently (5 at a time) for speed.
5. **Output** — All results are pushed to the Apify dataset. Download as JSON, CSV, or Excel, or access programmatically via the [Apify API](https://docs.apify.com/api/v2).

### How much does it cost to scrape Xing jobs?

| Event | Price per event | Price per 1,000 |
|-------|----------------|-----------------|
| `job-scraped` | $0.002 | **$2.00** |

Each job listing pushed to the dataset counts as one event. Platform compute costs are included — you only pay per result.

**What does a typical run cost?**
A run collecting 50 jobs costs approximately $0.10. A larger run with 500 jobs costs about $1.00. Apify's [free trial](https://console.apify.com/sign-up) includes $5 in platform credits, enough to scrape thousands of Xing job listings.

**Can I control costs?**
Yes — set `results_wanted` to limit how many jobs are collected per run. Start with 20 results to validate your search, then scale up.

### FAQ

**How fresh is the data?**
The Xing Jobs Scraper fetches live data directly from Xing's API on every run. Results reflect what is currently published on the platform.

**Can I schedule recurring runs?**
Yes. Use [Apify Schedules](https://docs.apify.com/platform/schedules) to run the scraper daily, weekly, or at any custom interval. Combine with [Apify Integrations](https://apify.com/integrations) to send results to Google Sheets, Slack, Zapier, Make, or your own webhook.

**Can I access the data via API?**
Yes. Use the [Apify API](https://docs.apify.com/api/v2) or the official [Python](https://docs.apify.com/api/client/python) and [JavaScript](https://docs.apify.com/api/client/js) clients to run the actor and retrieve results programmatically. See the code examples above.

**What export formats are supported?**
JSON, CSV, Excel (XLSX), XML, and HTML. Download from the Apify Console or retrieve via API.

**Does it work without a Xing account?**
Yes. The actor accesses publicly available job listings. No Xing login or API key is required.

**What if I get empty results?**
Check that your keyword and location match Xing's own search behavior. Try running the same search on [xing.com/jobs](https://www.xing.com/jobs) first to confirm results exist. Broader keywords and fewer filters produce more results.

**What does `detail_error` mean?**
If the actor cannot fetch the full detail page for a specific job (e.g. the listing was removed between search and detail fetch), it sets `detail_error` with a reason. Core fields from the search results are still included.

**Where can I report issues?**
Use the [Issues tab](https://apify.com/parsebird/xing-jobs-scraper/issues) on the actor page. We respond promptly.

### Is it legal to scrape Xing?

This actor accesses only publicly available job listing data from Xing. It does not bypass login walls, access private profiles, or collect personal user data. The data collected consists of job postings that companies have intentionally made public for recruitment purposes. Users are responsible for ensuring their use of scraped data complies with applicable laws, the [GDPR](https://gdpr.eu/), and Xing's Terms of Service. For more information, see Apify's guide on [web scraping legality](https://blog.apify.com/is-web-scraping-legal/).

### Related actors

Explore more job scraping tools from [ParseBird](https://apify.com/parsebird):

- [Hiring.cafe Jobs Scraper](https://apify.com/parsebird/hiring-cafe-scraper) — Scrape 2.8M+ aggregated job postings from 46 ATS platforms with 30+ filters
- [Wellfound Jobs Scraper](https://apify.com/parsebird/wellfound-jobs-scraper) — Extract startup jobs with salary, equity, and visa sponsorship data

Browse all [ParseBird actors](https://apify.com/parsebird) on Apify Store.

# Actor input Schema

## `startUrl` (type: `string`):

Paste a Xing jobs search results URL (e.g. https://www.xing.com/jobs/search?keywords=Python\&location=Berlin). When set, the actor derives search filters from the URL and ignores Keyword, Location, and Discipline fields.

## `keyword` (type: `string`):

Job search keyword or role title (e.g. "Data Analyst", "Software Engineer", "Projektmanager"). Leave empty to return all jobs.

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

City or region to filter jobs (e.g. "Berlin", "München", "Wien", "Zürich"). Leave empty for all locations.

## `discipline` (type: `string`):

Professional field filter (e.g. "Project management", "IT", "Marketing"). Must match Xing's discipline categories. Leave empty for all disciplines.

## `results_wanted` (type: `integer`):

Maximum number of job records to collect.

## `max_pages` (type: `integer`):

Maximum number of search result pages to process. Each page contains up to 20 jobs.

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

Proxy settings for stable data collection. Residential proxies are recommended for consistent results from Xing.

## Actor input object example

```json
{
  "keyword": "Data Analyst",
  "results_wanted": 20,
  "max_pages": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "keyword": "Data Analyst",
    "results_wanted": 20,
    "max_pages": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/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 = {
    "keyword": "Data Analyst",
    "results_wanted": 20,
    "max_pages": 20,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/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 '{
  "keyword": "Data Analyst",
  "results_wanted": 20,
  "max_pages": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call parsebird/xing-jobs-scraper --silent --output-dataset

```

## MCP server setup

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