# XING Jobs Scraper — Jobs, Companies & Contacts (`datacach/xing-jobs-scraper`) Actor

Scrapes XING job listings by keyword and location, returning enriched job details and company profiles for the DACH region.

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

## Pricing

from $0.99 / 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/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 — Jobs, Companies & Contacts

**Extract job listings, company profiles, contact persons, and salary data from XING — the #1 professional network in the DACH region.**

Whether you're a recruiter mapping the German job market, an HR analyst benchmarking salaries, or a business developer looking for company contacts, this scraper gives you structured, ready-to-use data in seconds. No coding required.

Try it now on [XING](https://www.xing.com/jobs) — just enter your keywords and location, and let the scraper do the rest.

---

### What data can you extract from XING?

This actor returns **rich, multi-layered data** for every job listing — far beyond what you see on the XING search results page:

#### Job Listing Data

| Field | Description |
|---|---|
| Job Title | Full job title as listed on XING |
| Job URL | Direct link to the listing |
| City / Locations | All posted locations (supports multi-city jobs) |
| Employment Type | Full-time, Part-time, Freelance, Intern, etc. |
| Industry | Industry category of the role |
| Salary Range | Minimum, maximum, and median salary (EUR) |
| Salary Forecast | Human-readable salary estimate (e.g. "€60,000 – €80,000") |
| Date Posted | When the job was published |
| Active Until | Listing expiry date |
| Direct Apply | Whether applications go directly through XING |
| Application URL | External apply link (when available) |
| Job Description | Full description in plain text and HTML |
| Remote Options | Remote, Hybrid, or On-site |
| Country / Region / Postal Code | Geographic detail |

#### Company Profile Data (nested per job)

| Field | Description |
|---|---|
| Company Name & Slogan | Official name and tagline |
| Company XING Page | Direct link to the company page |
| Logo & Cover Image | Company branding images |
| About | Company description |
| Followers | XING follower count |
| Employee Count | Reported headcount range |
| Employees on XING | Number of employees with XING profiles |
| Website / Email / Phone | Public contact info |
| Address | Full company address |

#### People & Intelligence Data

| Field | Description |
|---|---|
| Contact Persons | Named contacts at the company with role, photo, and XING profile link |
| Featured Employees | Employee profiles with roles and photos |
| Company's Active Jobs | All currently open positions at that company |
| Similar Jobs | Related jobs from the same industry |
| Recommended Companies | XING-suggested related companies |

---

### Why use this XING Jobs Scraper?

#### Multi-keyword search, all at once
Search up to **10 job titles simultaneously** — "software engineer", "data scientist", "product manager" — and get all results in a single run without switching tabs.

#### Advanced filters built in
Narrow results before they even come in: **remote/hybrid/on-site**, **employment type**, **career level**, **salary range**, **posting date**, and **radius**. You get exactly the segment you care about.

#### Company intelligence, not just job listings
Most XING scrapers return job cards. This one goes deeper — every listing comes enriched with the **full company profile**, including the people behind the hiring, active open positions, and similar companies worth watching.

#### Resume where you left off
Use the **Start Page** setting to skip already-scraped pages and continue a previous run without duplicating results.

#### Powered by Apify
- Schedule automatic runs (daily, weekly, monthly)
- Connect to **Google Sheets, Airtable, Zapier, Make**, and 1,500+ tools via integrations
- Download results in **JSON, CSV, Excel, or XML**
- Monitor runs and get alerts when something goes wrong

---

### How to use the XING Jobs Scraper

1. **Open the actor** and click **Try for free**
2. In the **Keywords** field, enter one or more job titles (e.g. "software engineer", "marketing manager")
3. Set your **Location** (e.g. "Berlin", "Munich", "Hamburg")
4. Optionally configure filters: remote options, employment type, career level, salary range
5. Click **Start** — results start appearing in the dataset within seconds

No account, no API key, no setup. Just click and go.

---

### Input parameters

| Parameter | Description | Default |
|---|---|---|
| Keywords | Job titles or search terms (up to 10) | `software engineer` |
| Location | City to search in | `Berlin` |
| Max Results | Cap total results per keyword | Unlimited |
| Start Page | Page to start from (useful to resume runs) | `1` |
| Date Posted | Filter by recency (last 24h, last week, last month) | Any time |
| Radius | Search radius from the city in km | Exact city |
| Workplace | Remote, Hybrid, On-site | All |
| Employment Type | Full-time, Part-time, Freelance, etc. | All |
| Career Level | Entry, Mid, Senior, Executive, etc. | All |
| Salary Min / Max | Annual gross salary range in EUR | No filter |

---

### Sample output

Each dataset item looks like this:

```json
{
  "id": "153004556",
  "global_id": "jobs/153004556",
  "slug": "berlin-senior-software-engineer-153004556",
  "title": "Senior Software Engineer (m/f/d)",
  "url": "https://www.xing.com/jobs/berlin-senior-software-engineer-153004556",
  "city": "Berlin",
  "locations": ["Berlin", "Munich"],
  "employment_type": "Full-time",
  "industry": "Internet and IT",
  "salary": {
    "__typename": "SalaryEstimate",
    "minimum": 71500,
    "maximum": 88500,
    "median": 77000,
    "currency": "EUR"
  },
  "salary_forecast": "The salary for this job ranges from €71,500 to €88,500 with an average of €77,000",
  "date_posted": "2026-05-02T06:29:07Z",
  "valid_through": "2026-06-02T00:00:00Z",
  "active_until": "2026-06-02",
  "refreshed_at": "2026-05-10T08:00:00Z",
  "direct_apply": false,
  "paid": true,
  "top_job": false,
  "redirects_to_third_party_url": true,
  "application_type": "UrlApplication",
  "apply_url": "https://company.com/apply?utm_source=xing.com",
  "company_url": "https://www.xing.com/pages/flixbus",
  "company": {
    "name": "FlixBus",
    "logo_url": "https://profile-images.xing.com/..."
  },
  "region": "Bayern",
  "postal_code": "10115",
  "country": "DE",
  "description_text": "We are looking for a Senior Software Engineer to join our team...",
  "description_html": "<p>We are looking for a <strong>Senior Software Engineer</strong> to join our team...</p>",
  "company_profile": {
    "name": "FlixBus",
    "slug": "flixbus",
    "page_url": "https://www.xing.com/pages/flixbus",
    "slogan": "The green alternative",
    "logo_url": "https://profile-images.xing.com/.../logo128px.jpg",
    "cover_url": "https://profile-images.xing.com/.../cover.jpg",
    "about": "FlixBus is a German intercity bus service...",
    "followers": 12400,
    "employees_min": 1001,
    "employees_max": 5000,
    "employees_on_xing": 843,
    "contract_type": "PREMIUM",
    "website": "https://www.flixbus.de",
    "email": "jobs@flixbus.de",
    "phone": "+49 89 1234567",
    "address": "Karl-Liebknecht-Str. 1, 80333 Munich",
    "city": "Munich",
    "postcode": "80333",
    "country": "DE",
    "contact_persons": [
      {
        "name": "Anna Müller",
        "role": "Head of Talent Acquisition",
        "profile_url": "https://www.xing.com/profile/Anna_Mueller",
        "photo_url": "https://profile-images.xing.com/..."
      }
    ],
    "employees": [
      {
        "name": "Max Schmidt",
        "role": "Software Engineer",
        "profile_url": "https://www.xing.com/profile/Max_Schmidt",
        "photo_url": "https://profile-images.xing.com/..."
      }
    ],
    "company_jobs": [
      {
        "title": "Product Manager (m/f/d)",
        "url": "https://www.xing.com/jobs/berlin-product-manager-150000001",
        "city": "Berlin",
        "employment_type": "Full-time"
      }
    ],
    "recommended_companies": [
      {
        "name": "BlaBlaCar",
        "page_url": "https://www.xing.com/pages/blablacar",
        "logo_url": "https://profile-images.xing.com/..."
      }
    ],
    "similar_jobs": [
      {
        "title": "Backend Engineer (m/f/d)",
        "url": "https://www.xing.com/jobs/berlin-backend-engineer-150000002",
        "city": "Berlin",
        "company_name": "Sixt SE"
      }
    ]
  },
  "search_keyword": "software engineer",
  "location": "Berlin",
  "extraction_date": "05-22-2026",
  "extraction_datetime": "2026-05-22T14:30:00+00:00",
  "page": 1,
  "position": 0
}
````

You can download the full dataset in **JSON, CSV, Excel, or XML** directly from the Apify Console.

***

### Use cases

- 🎯 **Recruiters & headhunters** — Build targeted candidate pipelines and identify hiring companies before your competitors do
- 📊 **HR & talent teams** — Benchmark salaries, track competitor hiring trends, and map talent supply in the DACH market
- 💼 **Sales & business development** — Find fast-growing companies, identify decision-makers, and enrich your CRM with fresh contact data
- 🔬 **Market researchers & analysts** — Analyze job market trends, in-demand skills, and employment patterns across Germany, Austria, and Switzerland
- 🗂️ **Job aggregator platforms** — Continuously feed your platform with up-to-date XING listings via scheduled runs

***

### How much does it cost to scrape XING?

This actor runs on **pay-per-result** pricing — you only pay for what you scrape.

- **Estimated cost:** ~$1.49 per 1,000 job results
- Each result includes the full enriched item: job detail + complete company profile
- All Apify plans include a **free monthly compute allowance** — small runs may cost nothing
- [See full Apify pricing →](https://apify.com/pricing)

#### Free vs Paid plan

| Feature | Free plan | Paid plan |
|---|---|---|
| Keywords per run | 1 | Up to 10 |
| Max results per run | 10 | Unlimited |
| All filters | ✅ | ✅ |
| Company profiles | ✅ | ✅ |
| Contact persons & employees | ✅ | ✅ |
| Scheduling & integrations | ✅ | ✅ |
| API access | ✅ | ✅ |

Upgrade to any paid Apify plan to remove the keyword and result limits.

***

### Frequently asked questions

**Does this work for all XING job listings?**
Yes — the scraper works with any public job listing on XING, regardless of industry, location, or employment type.

**Can I search jobs in multiple cities?**
Run the actor once per city, or use Apify's scheduling and API to automate multi-city runs. Each run targets one location but supports up to 10 keywords simultaneously.

**Is the data fresh?**
Every run fetches live data directly from XING at the time of execution. Schedule daily or weekly runs to keep your dataset continuously up to date.

**Can I integrate the results with my existing tools?**
Yes. Apify natively connects to Google Sheets, Airtable, Slack, Zapier, Make, and 1,500+ other tools. You can also access all results programmatically via the Apify API.

**What makes this different from other XING scrapers?**
Unlike scrapers that return only the job card, this actor returns the **full company profile nested inside every result** — including contact persons, featured employees, and the company's other open positions. You get account intelligence alongside job data in a single run.

**Is scraping XING legal?**
This actor collects only publicly available job listing data — the same data visible to any visitor on XING. Always use scraped data in compliance with applicable laws (GDPR, etc.) and XING's Terms of Service. This tool is not intended for scraping private profiles or any content requiring login.

***

### Need help or a custom solution?

Open an [issue on the Issues tab](../../issues) and we'll get back to you promptly.

Need a tailored integration, a different data source, or a custom scraping pipeline for your team? Reach out directly — we're happy to help.

# Actor input Schema

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

One or more job titles, skills, or keywords to search for. Each entry runs as an independent search and results are combined. Tip: use the same terms you'd type directly on XING.

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

City to search in. Partial names work — "berlin" and "Berlin" both resolve correctly. The scraper picks the top autocomplete match.

## `maxResults` (type: `integer`):

Maximum number of jobs to return. The scraper stops as soon as this limit is reached, even mid-pagination. Leave empty to return all available results.

## `startPage` (type: `integer`):

Page number to start scraping from (1 = first page). Useful for resuming a previous run or skipping already-scraped pages.

## `sincePeriod` (type: `string`):

Return only jobs posted within this period. Leave as "Any time" to get all results regardless of posting date.

## `radius` (type: `string`):

Maximum distance from the selected city in kilometres. Leave empty to restrict results to the exact city only.

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

Filter by workplace arrangement. Select one or more options. Leave empty to include all arrangements.

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

Filter by contract type. Select one or more options. Leave empty to include all types.

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

Filter by experience level. Select one or more options. Leave empty to include all levels.

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

Minimum annual gross salary in euros. Leave empty for no lower bound.

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

Maximum annual gross salary in euros. Leave empty for no upper bound.

## Actor input object example

```json
{
  "keywords": [
    "software engineer"
  ],
  "location": "Berlin",
  "startPage": 1,
  "sincePeriod": "",
  "radius": "",
  "remoteOptions": [],
  "employmentTypes": [],
  "careerLevels": []
}
```

# Actor output Schema

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

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "software engineer"
    ],
    "location": "Berlin",
    "startPage": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("datacach/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"],
    "location": "Berlin",
    "startPage": 1,
}

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "XING Jobs Scraper — Jobs, Companies & Contacts",
        "description": "Scrapes XING job listings by keyword and location, returning enriched job details and company profiles for the DACH region.",
        "version": "0.0",
        "x-build-id": "AfiCB8vyjdbBpqNYo"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/datacach~xing-jobs-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-datacach-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/datacach~xing-jobs-scraper/runs": {
            "post": {
                "operationId": "runs-sync-datacach-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/datacach~xing-jobs-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-datacach-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": [
                    "keywords",
                    "location"
                ],
                "properties": {
                    "keywords": {
                        "title": "🔍 Keywords",
                        "maxItems": 10,
                        "type": "array",
                        "description": "One or more job titles, skills, or keywords to search for. Each entry runs as an independent search and results are combined. Tip: use the same terms you'd type directly on XING.",
                        "items": {
                            "type": "string"
                        },
                        "default": [
                            "software engineer"
                        ]
                    },
                    "location": {
                        "title": "📍 Location",
                        "type": "string",
                        "description": "City to search in. Partial names work — \"berlin\" and \"Berlin\" both resolve correctly. The scraper picks the top autocomplete match.",
                        "default": "Berlin"
                    },
                    "maxResults": {
                        "title": "⚙️ Max Results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of jobs to return. The scraper stops as soon as this limit is reached, even mid-pagination. Leave empty to return all available results."
                    },
                    "startPage": {
                        "title": "📄 Start Page",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Page number to start scraping from (1 = first page). Useful for resuming a previous run or skipping already-scraped pages.",
                        "default": 1
                    },
                    "sincePeriod": {
                        "title": "📅 Date Posted",
                        "enum": [
                            "",
                            "LAST_24_HOURS",
                            "LAST_WEEK",
                            "LAST_MONTH"
                        ],
                        "type": "string",
                        "description": "Return only jobs posted within this period. Leave as \"Any time\" to get all results regardless of posting date.",
                        "default": ""
                    },
                    "radius": {
                        "title": "📏 Search Radius (km)",
                        "enum": [
                            "",
                            "10",
                            "20",
                            "50",
                            "70",
                            "100",
                            "200"
                        ],
                        "type": "string",
                        "description": "Maximum distance from the selected city in kilometres. Leave empty to restrict results to the exact city only.",
                        "default": ""
                    },
                    "remoteOptions": {
                        "title": "🏠 Workplace",
                        "type": "array",
                        "description": "Filter by workplace arrangement. Select one or more options. Leave empty to include all arrangements.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "FULL_REMOTE.050e26",
                                "PARTLY_REMOTE.ca71ca",
                                "NON_REMOTE.3ca273"
                            ],
                            "enumTitles": [
                                "Remote",
                                "Hybrid",
                                "On-site"
                            ]
                        },
                        "default": []
                    },
                    "employmentTypes": {
                        "title": "💼 Employment Type",
                        "type": "array",
                        "description": "Filter by contract type. Select one or more options. Leave empty to include all types.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "FULL_TIME.ef2fe9",
                                "PART_TIME.58889d",
                                "CONTRACTOR.0ed397",
                                "INTERN.dc571c",
                                "TEMPORARY.8ff6ad",
                                "SEASONAL.e4ab1d",
                                "VOLUNTARY.c61099"
                            ],
                            "enumTitles": [
                                "Full-time",
                                "Part-time",
                                "Self-employed",
                                "Student / Intern",
                                "Temporary",
                                "Seasonal",
                                "Volunteer"
                            ]
                        },
                        "default": []
                    },
                    "careerLevels": {
                        "title": "🎯 Career Level",
                        "type": "array",
                        "description": "Filter by experience level. Select one or more options. Leave empty to include all levels.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1.795d28",
                                "2.24d1f6",
                                "3.2ebf16",
                                "4.83b992",
                                "5.6b837d",
                                "6.37d32d"
                            ],
                            "enumTitles": [
                                "Student / Intern",
                                "Entry Level",
                                "Professional / Experienced",
                                "Manager / Supervisor",
                                "Executive (VP, SVP, etc.)",
                                "Senior Executive (CEO, CFO, President)"
                            ]
                        },
                        "default": []
                    },
                    "salaryMin": {
                        "title": "💰 Minimum Salary (€/year)",
                        "minimum": 0,
                        "maximum": 200000,
                        "type": "integer",
                        "description": "Minimum annual gross salary in euros. Leave empty for no lower bound."
                    },
                    "salaryMax": {
                        "title": "💰 Maximum Salary (€/year)",
                        "minimum": 0,
                        "maximum": 200000,
                        "type": "integer",
                        "description": "Maximum annual gross salary in euros. Leave empty for no upper bound."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
