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

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.

- **URL**: https://apify.com/themineworks/xing-jobs-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Jobs, Lead generation, MCP servers
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.40 / 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: Germany, Austria and Switzerland

[![400 XING jobs from Berlin and Munich in 22 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/xing-jobs-scraper-hero.png)](https://console.apify.com/actors/T9ICMFSABoVBvFwsd/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), 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](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/T9ICMFSABoVBvFwsd/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works Jobs and hiring family:** [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Shine.com Jobs Scraper](https://apify.com/themineworks/shine-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Internshala Scraper](https://apify.com/themineworks/internshala-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

### 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:

```json
{
  "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

```text
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

```json
{
  "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):

```json
{
  "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):

```json
{
  "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.

```json
{
  "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:

```json
{
  "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:

```json
{
  "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`:

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

### Input parameters

| Parameter | Type | Default | What it does |
|---|---|---|---|
| `keywords` | array 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. |
| `locations` | array of strings | empty | Cities, one per line, such as `Berlin`, `Wien`, `Zürich`. Each is its own search. Empty means anywhere. |
| `radiusKm` | integer | XING's default | Distance around each city, 0 to 200 km. Ignored without a location. |
| `employmentTypes` | array | any | Any of `full_time`, `part_time`, `freelance`, `student`, `seasonal`, `temporary`, `volunteer`. |
| `careerLevels` | array | any | Any of `student_intern`, `entry_level`, `professional`, `manager`, `executive`, `senior_executive`. |
| `remoteOptions` | array | any | Any of `full_remote`, `partly_remote`, `non_remote`. |
| `postedWithin` | string | `any` | `24h`, `week` or `month`: jobs posted or refreshed in that period. |
| `salaryMin` | integer | none | Yearly amount in EUR; keeps jobs whose salary range, posted or estimated, reaches it. |
| `salaryMax` | integer | none | Yearly amount in EUR; keeps jobs whose salary range starts at or below it. |
| `maxJobs` | integer | `100` | Upper limit per search (one keyword in one location), 20 to 1,000. XING serves the first 1,000 results of a search. |
| `includeDescription` | boolean | `false` | Adds `description` and `description_html`. Same number of calls, larger download. |
| `onlyNewJobs` | boolean | `false` | Skips 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):

| Field | Filled | Why not always |
|---|---|---|
| `job_id`, `title`, `company`, `location`, `region`, `country`, `employment_type`, `career_level`, `discipline`, `industry`, `remote_option`, `posted_at`, `expires_at`, `application_type`, `job_url` | 100% | |
| `salary_text`, `salary_min`, `salary_max`, `salary_source` | 89% | XING shows no range for some jobs (73% of Vienna and Zurich jobs had one). |
| `salary_median` | 73% | Only on XING estimates. |
| `company_id`, `company_industry` | 79% to 80% | Only when the company has a XING page. |
| `company_size`, `company_url` | 68% to 69% | Same, and only when the page states a size. |
| `apply_url` | 65% | The rest apply on XING itself. |
| `job_code` | 55% | Only when the employer gives one. |
| `summary_intro`, `summary_responsibilities`, `summary_qualifications` | 43% | Only on jobs XING has summarised. |
| `postal_code`, `street` | 30%, 18% | Only when the employer gives the workplace address. |
| `description`, `description_html` | 100% of 100 | With `includeDescription` on. |

#### Stable fields for automations

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

| Field | Meaning |
|---|---|
| `job_id` | XING job id, the number at the end of the job link |
| `title` | Job title |
| `company` | Hiring company as shown |
| `location` | City of the job |
| `country_code` | `DE`, `AT`, `CH` and so on |
| `employment_type` | For example `Full-time` |
| `career_level` | For example `Professional/Experienced` |
| `discipline` | Field of work |
| `remote_option` | `full_remote`, `partly_remote` or `non_remote` |
| `posted_at` | When the job went live, ISO 8601 UTC |
| `expires_at` | When the job goes offline, ISO 8601 UTC |
| `application_type` | How to apply |
| `job_url` | Job page on XING |
| `search_rank` | Position of the job in its search |
| `scraped_at` | When 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**:

```json
{
  "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**:

```json
{
  "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):

```json
{
  "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.

| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
| `job-scraped` | Once 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-start` | Once 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"`

#### Is it legal to scrape XING jobs?

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**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Shine.com Jobs Scraper](https://apify.com/themineworks/shine-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Internshala Scraper](https://apify.com/themineworks/internshala-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Indeed Jobs Scraper](https://apify.com/themineworks/indeed-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instahyre Jobs Scraper](https://apify.com/themineworks/instahyre-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Apna Jobs Scraper](https://apify.com/themineworks/apna-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CutShort Jobs Scraper](https://apify.com/themineworks/cutshort-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Jobs Scraper](https://apify.com/themineworks/linkedin-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Recruiting & Jobs MCP](https://apify.com/themineworks/recruiting-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [OpenAlex Scraper](https://apify.com/themineworks/openalex-scholarly-works?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [SEC EDGAR Filings Scraper](https://apify.com/themineworks/sec-edgar-filings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [G2 Reviews Scraper](https://apify.com/themineworks/g2-reviews-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naver Blog Scraper](https://apify.com/themineworks/naver-blog-posts-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [WeChat Article Scraper 微信公众号文章](https://apify.com/themineworks/wechat-article-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### 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.*

# Actor input Schema

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

One search per line, as you would type it on XING, for example software engineer, Projektmanager, Pflegefachkraft, Controller. Each keyword is searched in each location. An empty list returns every job that matches the other filters (give at least a location then).

## `locations` (type: `array`):

Cities, one per line, for example Berlin, München, Wien, Zürich. Each location is its own search. Leave empty to search everywhere XING has jobs (mostly Germany, Austria and Switzerland).

## `radiusKm` (type: `integer`):

Distance from each location, 0 to 200 km. Leave empty for XING's own default. Ignored without a location.

## `employmentTypes` (type: `array`):

Keep only jobs of these types. Leave empty for any.

## `careerLevels` (type: `array`):

Keep only jobs at these career levels. Leave empty for any.

## `remoteOptions` (type: `array`):

Keep only jobs with these remote options. Leave empty for any.

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

Keep only jobs posted or refreshed by the employer in this period, as XING's own date filter does.

## `salaryMin` (type: `integer`):

Keep only jobs whose yearly salary range, posted by the employer or estimated by XING, reaches this amount.

## `salaryMax` (type: `integer`):

Keep only jobs whose yearly salary range starts at or below this amount.

## `maxJobs` (type: `integer`):

Upper limit per search (one keyword in one location), 20 to 1,000. XING serves the first 1,000 results of a search, 20 per call. Also the most you pay for per search.

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

Adds the full job description as plain text and HTML. It comes in the same call as the job, so it costs no extra request, only a larger download.

## `onlyNewJobs` (type: `boolean`):

For schedules: skip jobs an earlier run of this actor in your account already delivered, so each run returns and charges only new jobs. Works best with Posted or refreshed within. The list of delivered jobs is kept in a named key value store in your account.

## Actor input object example

```json
{
  "keywords": [
    "software engineer",
    "Marketing Manager"
  ],
  "locations": [
    "Berlin"
  ],
  "postedWithin": "any",
  "maxJobs": 20,
  "includeDescription": false,
  "onlyNewJobs": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (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": [
        "software engineer",
        "Marketing Manager"
    ],
    "locations": [
        "Berlin"
    ],
    "maxJobs": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/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": [
        "software engineer",
        "Marketing Manager",
    ],
    "locations": ["Berlin"],
    "maxJobs": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/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": [
    "software engineer",
    "Marketing Manager"
  ],
  "locations": [
    "Berlin"
  ],
  "maxJobs": 20
}' |
apify call themineworks/xing-jobs-scraper --silent --output-dataset

```

## MCP server setup

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