# XING Jobs Scraper: Germany, Austria, Switzerland, Salary (`redfoxscout/xing-jobs-scraper`) Actor

Scrape XING job listings by keyword, city and radius: title, company, location, salary range (stated or XING estimate), employment type, apply link and optional full text. Filter to jobs updated in the last 1-30 days for daily monitoring. $0.90 per 1,000 jobs.

- **URL**: https://apify.com/redfoxscout/xing-jobs-scraper.md
- **Developed by:** [Red Fox Scout](https://apify.com/redfoxscout) (community)
- **Categories:** Jobs, Lead generation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.68 / 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

Scrape **XING job listings** from xing.com by **keyword, city and radius**. Each job has its **title, company, location, salary range, employment type, apply link** and, if you want it, the **full job text**. Filter to jobs **updated in the last 1 to 30 days** for a daily new-jobs feed. **No login, no cookies, no API keys**, and not affiliated with XING.

**Price: $0.90 per 1,000 jobs.** Failed searches and error rows are free, and a job that two searches return is charged once. Apify's free plan ($5 monthly credit) covers about 5,500 jobs a month, before run compute.

![XING Jobs Scraper output table: title, company, location, salary and employment type for python developer and data analyst jobs in Berlin](https://raw.githubusercontent.com/TikTop-Data/apify-store-assets/main/images/xing-jobs-scraper-output.png)

### Questions it answers

- Which Python or data jobs were listed or refreshed on XING in the last three days?
- Which companies in Munich, Hamburg or Zurich are hiring for a role right now?
- What salary ranges does XING show for a job title in a city?
- What skills does a job ad ask for, in the employer's own words?

### Who uses this

- 📈 **Recruiters and talent teams:** see which employers hire for a skill in the German-speaking market.
- 💼 **Job seekers and career coaches:** collect new listings by role, city and pay.
- 📊 **Market researchers:** compare titles, salary ranges and employment types across cities.
- 🤖 **Developers and AI agents:** feed a job board, spreadsheet or agent with structured XING listings.

### Why this XING Jobs Scraper

- 🔔 **Updated-within filter:** keep only jobs that XING listed or refreshed in the last 1, 3, 7, 14 or 30 days. Schedule it daily and pay only for the jobs you keep.
- 💵 **Salary as numbers:** minimum, maximum, median and currency, and a flag that says whether the range is XING's estimate or stated by the employer.
- 📝 **Optional full job text:** tick one box to add the description, posted date, industry, country and company page.
- 🔗 **Paste a XING search link:** keywords, location and radius are read from the link.
- 🏷️ **$0.90 per 1,000 jobs:** one charge per job, with no start fee and no add-on charges.

### How to use the XING Jobs Scraper

1. Click **Try for free** (a free Apify account is enough).
2. Enter keywords such as `python developer`, or paste a XING search link, one per line.
3. Optional: add a city, a radius, an updated-within window or the full job text.
4. Click **Start**, then download as JSON, CSV or Excel, or schedule it for a daily feed.

### Input

| Field | Default | What it does |
|---|---|---|
| `searches` | – | XING keywords or XING search links, one per line. Required. |
| `location` | – | City, region or country for keyword searches, e.g. `Berlin`. Empty means everywhere. |
| `radiusKm` | – | Search radius around the location: 5, 10, 20, 30, 50 or 100 km. |
| `updatedWithinDays` | – | Only jobs listed or refreshed in the last 1, 3, 7, 14 or 30 days. |
| `includeDescription` | `false` | Open each job page to add the full text, posted date, industry, country and company page. Slower. |
| `maxItems` | 100 | Jobs per search (max 1,000). |

Example (the input behind the output below):

```json
{ "searches": ["python developer", "data analyst"], "location": "Berlin", "includeDescription": true, "maxItems": 10 }
```

### Output

One row per job. A real row from that run (description and logo link shortened):

```json
{
  "jobId": "156675213",
  "url": "https://www.xing.com/jobs/berlin-python-developer-financial-services-all-genders-156675213",
  "title": "Python Developer Financial Services (all genders)",
  "company": "Exxeta",
  "companyId": "31951.5a9d9a",
  "companyLogoUrl": "https://www.xing.com/imagecache/public/scaled_original_image/eyJ1dWlkI...",
  "companyUrl": "https://www.xing.com/pages/exxetaag",
  "location": "Berlin",
  "locations": ["Berlin"],
  "country": "DE",
  "employmentType": "Full-time",
  "industry": "Consulting",
  "salaryText": "EUR 59000 - EUR 86000",
  "salaryMin": 59000,
  "salaryMax": 86000,
  "salaryMedian": 76000,
  "salaryCurrency": "EUR",
  "salaryIsEstimate": true,
  "refreshedAt": "2026-09-17T05:36:36Z",
  "postedAt": "2026-09-17T05:36:36Z",
  "validThrough": "2027-01-22T21:35:50Z",
  "applyType": "external",
  "applyUrl": "https://career.exxeta.com/Python-Developer-Financial-Services-all-genders-de-j1018.html?utm_source=xing.com",
  "isPromoted": false,
  "description": "Standorte: Karlsruhe, Berlin, Braunschweig, Essen, Frankfurt am Main, Hamburg ...",
  "searchQuery": "python developer"
}
```

- `refreshedAt` is the last time XING listed or refreshed the job; the updated-within filter uses it. `postedAt` is the original post date and needs `includeDescription`.
- `salaryIsEstimate` is `true` when the range is XING's estimate and `false` when it is stated. It is `null` when no salary is shown.
- `applyUrl` is the employer's link. Jobs you apply to inside XING have `applyType` `xing` and no `applyUrl`.
- `country`, `industry`, `companyUrl`, `postedAt` and `description` are `null` unless `includeDescription` is on. Emails and phone numbers in the text are replaced by `[email removed]` and `[phone removed]`.
- `searchQuery` is the search a job came from. A failed search adds one row with an `error` field and no charge.

### Example tasks

Ready-made inputs you can open, change and run:

- [Get Python jobs in Berlin updated in the last 3 days](https://apify.com/redfoxscout/xing-jobs-scraper/examples/xing-new-python-jobs-berlin-daily)

### How much does it cost?

$0.90 per 1,000 jobs.

- 100 jobs: about $0.09
- 1,000 jobs: about $0.90
- Failed searches and error rows: free. A job that two searches return is charged once.

Apify's free plan gives $5 of credit every month, enough for about 5,500 jobs before run compute.

### FAQ

**Is this legal?** The Actor reads job listings that XING shows to any visitor without logging in. It does not log in, use cookies or accounts, solve CAPTCHAs, or collect personal details of applicants or recruiters. This is not legal advice, so check the terms and rules that apply to how you use the data.

**Why are there fewer jobs than XING shows on the site?** XING shows some jobs only to signed-in members. The Actor does not log in, so it skips those and returns the jobs a logged-out visitor can see. XING also returns at most 1,000 results per search.

**Are the salaries real?** Most ranges on XING are estimates, not employer figures. Check `salaryIsEstimate` before you rely on a number.

**Which language are the results in?** Job titles and texts are in the language the employer wrote them, mostly German in Germany. Labels such as the employment type are in English.

**Can I filter by remote work, employment type or career level?** Not yet. XING only applies those filters for signed-in members, so use keywords such as `remote` or `Teilzeit` instead.

### Related Actors

- [Dice Jobs Scraper](https://apify.com/redfoxscout/dice-jobs-scraper): US tech jobs from Dice.com with salary numbers.
- [StepStone Jobs Scraper](https://apify.com/redfoxscout/stepstone-jobs-scraper): StepStone job listings in Germany, Austria and Belgium with salary estimates.
- [LinkedIn Jobs Scraper](https://apify.com/redfoxscout/linkedin-jobs-scraper): LinkedIn job listings by keyword and location, with full descriptions and no login.
- [ATS Jobs Scraper](https://apify.com/redfoxscout/ats-jobs-scraper): every open job from a company's Greenhouse, Lever, Ashby or other career site.
- [Jobs Index](https://apify.com/redfoxscout/jobs-index): open jobs from thousands of Greenhouse, Lever and Ashby career sites in one search.

# Actor input Schema

## `searches` (type: `array`):

XING keywords or full XING search URLs, one per line, e.g. python developer or https://www.xing.com/jobs/search?keywords=python\&location=Berlin.

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

City, region or country for keyword searches, e.g. Berlin, Zurich or Austria; leave empty to search everywhere.

## `radiusKm` (type: `string`):

Only jobs within this distance of the location, e.g. 30 for 30 km around Munich; leave empty for XING's default.

## `updatedWithinDays` (type: `string`):

Only jobs that XING listed or refreshed within this many days, e.g. 1 for a daily new-jobs feed; leave empty for any date.

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

Open each job page to add the full text, posted date, industry and company page, e.g. tick it to analyse required skills. Slower.

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

Stop each search after this many results.

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

How many searches run at once.

## Actor input object example

```json
{
  "searches": [
    "python developer"
  ],
  "location": "Berlin",
  "includeDescription": false,
  "maxItems": 100,
  "maxConcurrency": 3
}
```

# Actor output Schema

## `results` (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 = {
    "searches": [
        "python developer"
    ],
    "location": "Berlin"
};

// Run the Actor and wait for it to finish
const run = await client.actor("redfoxscout/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 = {
    "searches": ["python developer"],
    "location": "Berlin",
}

# Run the Actor and wait for it to finish
run = client.actor("redfoxscout/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 '{
  "searches": [
    "python developer"
  ],
  "location": "Berlin"
}' |
apify call redfoxscout/xing-jobs-scraper --silent --output-dataset

```

## MCP server setup

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