# Xing Jobs Scraper - DACH Job Listings & Salaries (`haketa/xing-jobs-scraper`) Actor

Search Xing.com and extract job listings: title, company, location, salary range, employment type, posting date and apply URL for the DACH market.

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

## Pricing

from $0.80 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 – DACH Job Listings, Salaries & Companies

**Extract job listings from [Xing.com](https://www.xing.com/jobs), the leading professional network in the DACH region (Germany, Austria, Switzerland), in minutes.** This Xing jobs scraper turns any keyword into a clean, structured database of job postings — complete with **job title, company, location, salary range, employment type, posting date and apply URL** — ready for recruiting, salary benchmarking, job-market research and lead generation.

Export everything as **JSON, CSV, Excel, or via API** — no login, no manual copy-paste, no coding required.

> 💡 Built for recruiters, sourcers, HR teams, job boards, market researchers and sales teams that target the German-speaking (DACH) market.

---

### 🔎 Why scrape Xing jobs?

Xing is the dominant professional network and job board in the DACH region, with millions of job seekers and thousands of new postings every day. Its job listings are a goldmine for anyone hiring, selling to HR, or researching the German-speaking labour market — and unlike many job boards, Xing publishes **salary ranges** right on the listing.

But Xing has no public bulk export, and copying listings by hand is slow. This scraper automates the whole process: you give it keywords (and optionally a city), and it returns hundreds of clean job records you can filter, sort and import anywhere.

**Common reasons people scrape Xing jobs:**

- Build **talent-sourcing and recruiting pipelines** for the DACH market
- Benchmark **salaries** by role, seniority and location
- Track **competitor hiring** — who's hiring for what, where
- Power a **job board or aggregator** with fresh DACH listings
- Generate **leads for recruiting/HR-tech vendors** (companies that are actively hiring)
- Run **labour-market and talent-demand research**

---

### ✨ What this Xing jobs scraper does

- ✅ Searches Xing jobs by **any keyword** (e.g. `software engineer`, `marketing manager`, `Projektleiter`)
- ✅ Optional **city/region targeting** (Berlin, München, Wien, Zürich…)
- ✅ Returns **hundreds of jobs per keyword** with automatic pagination (de-duplicated by job ID)
- ✅ Captures **job title, company, location, salary range, employment type, posting date, urgency flag and apply URL**
- ✅ Parses salary into **numeric min/max** for easy sorting and analysis
- ✅ Exports to **JSON, CSV, Excel, XML** and integrates with Google Sheets, Make, Zapier, Slack and your own apps
- ✅ **Fast and reliable** — Xing renders listings server-side, so no fragile headless browser needed

---

### 🎯 Use cases

#### 1. Recruiting & talent sourcing
Build lists of open roles in your niche across the DACH region. Each listing includes the **company, location and apply URL**, so recruiters and sourcers can map demand, find hiring companies and reach out fast.

#### 2. Salary benchmarking
Xing publishes **salary ranges** on many listings. Pull a role across cities and seniorities to benchmark compensation — invaluable for HR, comp & benefits teams and candidates negotiating offers.

#### 3. Competitor hiring intelligence
Track which companies are hiring, for which roles, in which cities, and how urgently. A spike in postings is a strong signal of growth, new initiatives or team expansion.

#### 4. Job board & aggregator content
Feed a job board, vertical aggregator or internal portal with fresh, structured DACH listings — title, company, location, salary, type and apply link — updated on a schedule.

#### 5. Lead generation for HR-tech & staffing
Companies posting jobs are active buyers for recruiting tools, staffing agencies and HR services. Use the company + role data to build targeted, timely prospect lists.

#### 6. Labour-market & talent-demand research
Quantify demand for skills and roles across Germany, Austria and Switzerland — which functions are in demand, where, and at what pay — for analysts, consultancies and workforce planners.

---

### 🌍 Built for the DACH market

Xing is the go-to professional platform in **Germany, Austria and Switzerland**. This scraper is tuned for that market: it understands German-language listings (Vollzeit/Teilzeit, salary in € and CHF, German posting dates like "Vor 2 Tagen") and lets you target cities like **Berlin, München, Hamburg, Köln, Frankfurt, Wien and Zürich** via the `location` input.

---

### 💼 Popular job searches

You can scrape any keyword. Popular roles recruiters and researchers track on Xing include:

- **Tech** — software engineer, DevOps engineer, data scientist, IT project manager, cloud architect, cybersecurity
- **Engineering** — Maschinenbau, Elektrotechnik, Konstrukteur, Projektingenieur, Qualitätsmanagement
- **Business & sales** — sales manager, account executive, business development, Vertrieb, key account
- **Marketing** — marketing manager, online marketing, SEO, content manager, social media
- **Finance** — controller, accountant, Buchhalter, financial analyst, Steuerberater
- **Healthcare** — Pflegefachkraft, Arzt, medical, pharma
- **Skilled trades** — Elektriker, Mechatroniker, Techniker, Meister

Pair any role with a city via the `location` input for a focused, market-specific search.

### 🏙️ Supported cities & regions

Xing covers the entire DACH market. Popular `location` values:

- **Germany** — Berlin, München, Hamburg, Köln, Frankfurt, Stuttgart, Düsseldorf, Leipzig
- **Austria** — Wien, Graz, Linz, Salzburg
- **Switzerland** — Zürich, Genf, Basel, Bern

Salaries are returned in **€** for Germany/Austria and **CHF** for Switzerland, and the scraper parses both into numeric ranges.

### ⚙️ How it works

1. **Enter one or more job keywords** — exactly what you'd type into Xing job search.
2. **Optionally set a location** and how many jobs you want per keyword.
3. **Run the Actor** — it collects, de-duplicates and structures the data, then makes it available for download or via API.

No login, no captcha solving, and a sensible proxy default (DE) is built in.

---

### 🔧 Input parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `queries` | array | ✅ Yes | Job search keywords (e.g. `software engineer`, `Projektleiter`). |
| `location` | string | No | City or region to bias the search (Berlin, München, Wien…). Leave empty for everywhere. |
| `maxItemsPerQuery` | integer | No | Max jobs to collect per keyword. ~20 per page, paginated automatically. Default `60`. |
| `proxyConfiguration` | object | No | Apify Proxy settings. A DE/EU proxy is recommended for the DACH market. |

#### Example input — simple job search

```json
{
    "queries": ["software engineer"],
    "maxItemsPerQuery": 100
}
````

#### Example input — role in a specific city

```json
{
    "queries": ["marketing manager"],
    "location": "Berlin",
    "maxItemsPerQuery": 80
}
```

#### Example input — multiple roles

```json
{
    "queries": ["data analyst", "data engineer", "data scientist"],
    "location": "München",
    "maxItemsPerQuery": 150
}
```

***

### 📤 Output

The Actor stores one row per job listing. Data can be downloaded as **JSON, CSV, Excel, XML** or pulled via the Apify API.

#### Sample output record

```json
{
    "jobTitle": "Senior Software Engineer (m/w/d)",
    "company": "Spaceteams GmbH",
    "location": "Hamburg",
    "additionalLocations": 0,
    "employmentType": "Full-time",
    "salary": "70.000 € – 80.000 €",
    "salaryMin": 70000,
    "salaryMax": 80000,
    "postedDate": "Vor 3 Tagen",
    "isUrgent": false,
    "jobId": "154078182",
    "jobUrl": "https://www.xing.com/jobs/hamburg-senior-software-engineer-154078182",
    "searchKeyword": "software engineer",
    "scrapedAt": "2026-05-25T18:00:00.000Z"
}
```

#### Output fields reference

| Field | Description |
| --- | --- |
| `jobTitle` | Job title |
| `company` | Hiring company |
| `location` | Primary job location (city) |
| `additionalLocations` | Count of extra locations ("+ N weitere") |
| `employmentType` | Full-time, Part-time, Contract, Internship… |
| `salary` | Salary range as shown, e.g. `70.000 € – 80.000 €` |
| `salaryMin` / `salaryMax` | Salary range parsed into numbers |
| `postedDate` | When the job was posted (e.g. `Vor 3 Tagen`) |
| `isUrgent` | Whether the listing is flagged urgent ("Dringend gesucht") |
| `jobId` | Xing job ID (used for de-duplication) |
| `jobUrl` | Direct link to the job listing |
| `searchKeyword` | The keyword this record came from |
| `scrapedAt` | Timestamp of extraction |

***

### ✅ Proven results (real run)

A real run for `software engineer` returned clean, structured listings with:

| Field | Fill rate |
| --- | --- |
| jobTitle, company, location, employmentType, jobId, jobUrl | 100% |
| salary & numeric salary range | ~95% (Xing shows salary on most listings) |
| postedDate | most listings (varies by recency format) |

Salary parsing works on German number formats (e.g. `60.000 € – 79.500 €` → min `60000`, max `79500`), and every job is de-duplicated by its Xing job ID.

### ⭐ What makes this scraper stand out

- **Salary ranges, parsed.** Not just the text — numeric `salaryMin`/`salaryMax` for instant sorting and benchmarking.
- **DACH-native.** Handles German employment types, currencies and posting dates correctly.
- **No headless browser.** Xing renders server-side, so runs are fast and cheap.
- **Clean, de-duplicated output** ready for spreadsheets, BI tools or your CRM.

***

### 🛠️ Example workflows

Here are concrete ways teams use this Xing jobs scraper end to end:

**Recruiting pipeline.** Run your target roles for a city each morning, push new listings to Google Sheets via the Apify integration, and let your sourcers work the fresh list — hiring company, location and apply link included.

**Salary benchmark.** Scrape one role (e.g. `data engineer`) across Berlin, München and Hamburg, export to CSV, and pivot `salaryMin`/`salaryMax` by city to produce a compensation report in minutes.

**Competitor hiring monitor.** Schedule weekly runs for the roles your competitors hire for, store each dataset, and chart posting volume over time — spikes reveal expansion and new initiatives before press releases do.

**HR-tech lead list.** Companies posting many roles are active buyers for staffing and HR software. Scrape a sector's roles, group by `company`, rank by posting count, and hand sales a timely, prioritized prospect list.

**Job board feed.** Pull fresh DACH listings on a schedule and pipe the structured output (title, company, location, salary, type, apply URL) straight into your job board or aggregator via webhook or API.

These pipelines need zero code — combine the Actor with Apify Schedules, integrations and webhooks.

### 🔌 Integrations

Send your Xing jobs data anywhere with Apify's built-in integrations and webhooks:

- **Google Sheets** — push job lists straight into a spreadsheet
- **Make (Integromat) & Zapier** — trigger workflows on every run
- **Slack / email** — get notified when new jobs are scraped
- **ATS / CRM / databases** — via API, webhooks or no-code connectors
- **Your own app** — pull results through the Apify API in JSON

***

### ▶️ How to use this Xing jobs scraper (step by step)

1. Click **Try for free** at the top of this page.
2. In the **Input** tab, add your keywords under `queries`.
3. Optionally set a `location` and the `maxItemsPerQuery` you need.
4. Click **Start** and wait for the run to finish.
5. Open the **Output / Dataset** tab and download your data as **JSON, CSV or Excel**, or copy the API endpoint to pull it programmatically.

You can also **schedule** the Actor to run daily/weekly to keep your job data fresh.

***

### ❓ Frequently asked questions

**Does it include salary data?**
Yes — Xing shows salary ranges on most listings, and the scraper returns both the text (`salary`) and parsed `salaryMin`/`salaryMax` numbers.

**Can I search in a specific city?**
Yes — set the `location` parameter (e.g. `Berlin`, `München`, `Wien`, `Zürich`) to bias results toward that area.

**How many jobs can I get?**
Xing paginates results, so a single keyword can return many hundreds of jobs. Set `maxItemsPerQuery` to your target.

**Does it work for Austria and Switzerland too?**
Yes — Xing covers the whole DACH region. Use `location` with Austrian or Swiss cities, and the scraper handles € and CHF salaries.

**Will I get duplicate jobs?**
No. Listings are de-duplicated by Xing job ID, so overlapping keywords won't create duplicate rows.

**Does it need a Xing login?**
No. The scraper reads public job search results — no account, no captcha solving.

**What export formats are supported?**
JSON, CSV, Excel (XLSX), XML and RSS — plus direct API access.

**Can I run it on a schedule?**
Yes. Use Apify Schedules to run the scraper automatically and keep your job database current.

**How fresh is the data?**
Every run scrapes Xing live, so listings reflect what's posted at the time you run it. Schedule recurring runs to catch new postings.

**Is scraping Xing legal?**
This Actor collects only publicly available job listings. You are responsible for using the data in compliance with Xing's terms of use and applicable laws (including data-protection rules such as GDPR where relevant).

**Why does it need a residential proxy?**
Xing refuses datacenter IP addresses, so the Actor defaults to a residential DE proxy. This is built in — you don't need to configure anything for it to work out of the box.

**Can I track competitor hiring over time?**
Yes. Schedule the Actor to run regularly for your competitors' typical roles and locations; a rising number of postings is a strong growth signal. Export each run and compare over time.

**Can I get jobs from a specific company?**
Search the role keywords you care about and filter the output by the `company` field, or add the company name to your keyword. Every record includes the hiring company.

**Does it return remote jobs?**
Remote and hybrid roles appear in the results like any other listing; the location and title usually indicate remote eligibility (e.g. "Remote", "Homeoffice").

**How do I build a salary benchmark report?**
Run a role across several cities, export to a spreadsheet, and analyze `salaryMin`/`salaryMax` by location and seniority — a ready-made compensation benchmark for the DACH market.

**What happens if a keyword returns no salary?**
Salary is shown only where the employer publishes it. Listings without a salary simply have empty `salary`/`salaryMin`/`salaryMax` fields; all other data is still captured.

***

### 💡 Tips & best practices

- **Use specific keywords.** `senior backend engineer` returns more relevant roles than just `engineer`. Combine related keywords for broader coverage.
- **Target a city** with `location` to focus on a single market and cut noise.
- **Set a realistic `maxItemsPerQuery`.** 100–300 per keyword suits most recruiting and research projects.
- **Export to a spreadsheet** and sort by `salaryMax` to find the best-paying roles, or by `postedDate` for the freshest listings.
- **Watch `isUrgent`** — urgently flagged roles are strong, time-sensitive outreach targets.
- **Schedule recurring runs** to monitor new postings and hiring trends over time.
- **De-duplication is automatic** — feel free to add overlapping keywords.
- **Run roles separately** to keep your output clean and easy to segment by function.
- **Use German keywords** for German-market roles (e.g. `Vertrieb` vs `sales`) to maximize relevant results.
- **Combine with Apify Schedules** to capture new postings the day they go live — recruiting is a speed game.
- **Filter the output by `employmentType`** to focus on full-time, part-time or contract roles as needed.

***

### ⚠️ Limitations

- Salary appears only on listings where the employer publishes it; some roles will have empty salary fields.
- Posting-date format varies by recency; very fresh or undated listings may have an empty `postedDate`.
- Result volume per keyword depends on how many jobs Xing lists for that term and location.

***

### 📊 Data quality & reliability

This scraper is built to give you clean, analysis-ready data:

- **De-duplicated by Xing job ID** — overlapping keywords never create duplicate rows.
- **Salary parsed into numbers** — `salaryMin`/`salaryMax` are real integers, so you can sort, filter and average without cleanup.
- **DACH-aware parsing** — German employment types (Vollzeit/Teilzeit), € and CHF currencies, and German posting dates are handled correctly.
- **Server-side rendered source** — Xing serves listings as HTML, so extraction is fast and stable without a headless browser.
- **Residential proxy by default** — works out of the box against Xing's IP rules.

Every field is documented above, exports cleanly to JSON/CSV/Excel, and drops straight into spreadsheets, BI tools, your ATS or CRM.

### ❔ Need company or people data too?

This Actor focuses on **job listings** — the highest-value, most-requested Xing dataset for recruiting and market research. If you also need Xing company profiles or people data, let us know via the Actor's issues page so we can prioritize it.

### 🌐 About Xing & the DACH job market

Xing (owned by New Work SE) is the leading professional network in the German-speaking world, with a strong focus on **Germany, Austria and Switzerland**. For recruiters and researchers targeting these markets, Xing is often more relevant than global platforms because:

- It is **DACH-native** — most listings, companies and candidates are local to the region.
- It publishes **salary ranges** openly on many job listings, which is rare among job boards.
- It covers the full spectrum from **skilled trades to executive roles**, across every major industry.
- German-language search terms surface roles that English-only tools miss entirely.

That makes Xing one of the best public sources for DACH labour-market data — and this scraper turns it into a structured dataset you can actually work with. Whether you're filling roles, benchmarking pay, monitoring competitors or feeding a job board, you get clean, current, de-duplicated listings with the fields that matter, exported in the format you need.

If you work the DACH market, Xing job data belongs in your stack — and this Actor is the fastest, most affordable way to get it at scale.

### 🚀 Get started

Click **Try for free**, enter a keyword like `software engineer` or `Projektleiter`, optionally pick a city, and get a clean list of DACH job listings — with company, location, salary and apply links — in minutes. Perfect for **recruiting, salary benchmarking, competitor hiring intelligence and job-market research**.

Have a feature request or question? Open an issue from the Actor's page and we'll help.

# Actor input Schema

## `queries` (type: `array`):

One or more job search keywords, exactly as you would type them into Xing job search (e.g. "software engineer", "marketing manager", "Projektleiter").

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

Optional city or region to bias the search, e.g. Berlin, München, Wien, Zürich. Leave empty to search everywhere.

## `maxItemsPerQuery` (type: `integer`):

Maximum number of job listings to collect for each keyword. Xing returns ~20 jobs per page and is paginated automatically.

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

Xing requires residential proxies (it refuses datacenter IPs). A DE/EU residential proxy is recommended for the DACH market.

## Actor input object example

```json
{
  "queries": [
    "software engineer",
    "data analyst"
  ],
  "location": "Berlin",
  "maxItemsPerQuery": 40,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  }
}
```

# Actor output Schema

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

Clean JSON array of every scraped job listing.

## `jobsCsv` (type: `string`):

The same data as a spreadsheet-ready CSV file.

## `dataset` (type: `string`):

Default dataset of this run for programmatic access.

# 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 = {
    "queries": [
        "software engineer"
    ],
    "maxItemsPerQuery": 40,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "DE"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("haketa/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 = {
    "queries": ["software engineer"],
    "maxItemsPerQuery": 40,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "DE",
    },
}

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

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

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

```

## CLI example

```bash
echo '{
  "queries": [
    "software engineer"
  ],
  "maxItemsPerQuery": 40,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  }
}' |
apify call haketa/xing-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=haketa/xing-jobs-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Xing Jobs Scraper - DACH Job Listings & Salaries",
        "description": "Search Xing.com and extract job listings: title, company, location, salary range, employment type, posting date and apply URL for the DACH market.",
        "version": "0.1",
        "x-build-id": "Iqjy6NBeK6rEICQCI"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/haketa~xing-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-haketa-xing-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/haketa~xing-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-haketa-xing-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/haketa~xing-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-haketa-xing-jobs-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "queries"
                ],
                "properties": {
                    "queries": {
                        "title": "Job search keywords",
                        "type": "array",
                        "description": "One or more job search keywords, exactly as you would type them into Xing job search (e.g. \"software engineer\", \"marketing manager\", \"Projektleiter\").",
                        "items": {
                            "type": "string"
                        }
                    },
                    "location": {
                        "title": "Location (optional)",
                        "type": "string",
                        "description": "Optional city or region to bias the search, e.g. Berlin, München, Wien, Zürich. Leave empty to search everywhere."
                    },
                    "maxItemsPerQuery": {
                        "title": "Max jobs per keyword",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of job listings to collect for each keyword. Xing returns ~20 jobs per page and is paginated automatically.",
                        "default": 60
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Xing requires residential proxies (it refuses datacenter IPs). A DE/EU residential proxy is recommended for the DACH market.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "DE"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
