XING Jobs Scraper - DACH Jobs, Salaries & Company Data
Pricing
from $0.36 / 1,000 jobs
XING Jobs Scraper - DACH Jobs, Salaries & Company Data
Scrape XING jobs in Germany, Austria and Switzerland by keyword, location, filters, search URL or company: full description, salary or XING estimate, apply link, remote, career level, skills, company. Monitor mode, company contact add-on. $0.36 per 1,000 jobs, no login.
Pricing
from $0.36 / 1,000 jobs
Rating
0.0
(0)
Developer
Top Api
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
What does XING Jobs Scraper do?
XING Jobs Scraper collects job postings from XING, the professional network of Germany, Austria and Switzerland. One row per job: title, company, location, remote option, employment type, career level, salary (the employer's figure or XING's own estimate), the full description, skills, apply link and the company's size, industry and address. Recruiters, HR-tech and sales teams use it to track who is hiring in the DACH region and at what pay.
- 🔎 Search like on xing.com/jobs: keywords × locations with a radius, or paste any XING search, SEO, job or company link
- 🎯 XING's own filters: posted within, employment type, career level, remote / hybrid / on-site, 22 disciplines, 23 industries and 121 segments, salary range, promoted ads
- 📄 The whole posting in every row: description as text, HTML and Markdown, XING's template sections (company, tasks, profile, benefits, contact), skills and XING's summary
- 💶 Salary on 88% of jobs (measured), marked as the employer's figure or XING's estimate
- 🏢 Company profile add-on: the employer's XING page with about text, legal notice, followers, size and offices with email, phone and website
- 📈 Past XING's 1,000-result limit: a big search is split automatically by discipline, employment type, career level and remote option
- 🔁 Monitor mode for scheduled runs: only jobs you have not received yet, with Slack, Discord, Telegram, WhatsApp or webhook alerts
- 🔓 No XING account, no cookies, no API key
What data can you get from XING?
💼 Job title, job_id, URL | 🏢 Company, size, industry, address | 📍 City, postcode, region, country |
| 🏠 Remote / hybrid / on-site | ⏱️ Employment type | 🎓 Career level |
| 🗂️ Discipline and industry | 💶 Salary min / max / median, currency | 🧮 Employer figure or XING estimate |
| 📅 Posted / refreshed, active until | 📝 Full description (text, HTML, Markdown) | 🧩 Template sections: tasks, profile, benefits, contact |
| 🛠️ Skills and keywords | 🔗 Apply link and application type | ✉️ Emails, phones and links written in the posting |
| 🌐 Company website and social links | 🏷️ Paid / top job / XING badge | 🔢 Search position and total |
| ➕ Company page: about, legal notice, followers | ➕ Offices with email, phone, website | 🔁 New / updated, first seen, reposts |
How to scrape XING with XING Jobs Scraper
- Create a free Apify account (it comes with monthly free credit).
- Open XING Jobs Scraper and type keywords such as
Softwareentwicklerand a location such asBerlin, or paste a link from xing.com/jobs. - Pick filters (posted within, employment type, career level, remote, discipline, industry, salary) if you need them.
- Set Max jobs and click Start.
- Download the jobs as JSON, CSV, Excel or HTML, or read them through the API.
⬇️ Input
Every field is optional. An empty form returns 50 jobs from XING's whole list (over 560,000 jobs on 2026-10-28) in XING's order.
| Parameter | Type | Description |
|---|---|---|
| 🔍 What to scrape | ||
keywords | list | Job titles, skills or companies, e.g. Softwareentwickler, Data Engineer. Each keyword is searched in each location. XING links pasted here work too. |
location | list | Cities, regions or postcodes, e.g. Berlin, München, Wien, Zürich. Empty = all of XING. |
radius | integer | Kilometres around each location (XING offers 10, 20, 50, 70, 100, 200). |
startUrls | URL list | XING search links (/jobs/search?…, /jobs/t-…, /jobs/d-…, /jobs/…-jobs-in-…), job links (/jobs/…-158830390) and company pages (/pages/…). |
companies | list | XING company pages or slugs, e.g. deutschebahn: every open job of that company. |
| 🎯 Filters (applied by XING) | ||
postedWithin | select | any, 24h, week, month. Default any. |
postedAfter | date | Only jobs posted or refreshed after this date or ISO time; overrides postedWithin. |
employmentType | multi-select | Full-time, part-time, freelance, student, seasonal, temporary, volunteer. |
careerLevel | multi-select | Student / intern, entry level, professional, manager, executive, senior executive. |
remoteOption | multi-select | Full remote, hybrid, on-site. |
discipline | multi-select | XING's 22 disciplines (IT and software development, Sales and commerce, HR…). |
industry | multi-select | XING's 23 industries and their 121 segments. |
salaryMin / salaryMax | integer | Yearly salary range in EUR. |
paidOnly | boolean | Promoted ads only. |
sortBy | select | relevance (XING's order, default) or date (newest first). |
language | select | Labels in German (de, default) or English (en). |
| ✂️ Refine results (applied before charging) | ||
countries | list | Keep jobs in these countries, e.g. DE, AT, CH. |
withSalaryOnly / publishedSalaryOnly | boolean | Only jobs with a salary / only with the employer's own salary. |
strictKeywordMatch | boolean | Only jobs whose title, skills or text contain every keyword word. |
withApplyUrlOnly | boolean | Only jobs that link to the employer's application page. |
excludeKeywords / excludeCompanies | list | Drop jobs by word in title or company, or by company. |
skipReposts | boolean | Drop the same job re-posted under a new id. |
| ➕ Extra data | ||
includeCompanyDetails | boolean | Company profile add-on (priced below). Default off. |
| 🔁 Monitoring | ||
monitorMode, monitorStoreName | boolean, text | Deliver only jobs earlier runs did not deliver. |
monitorIncludeUpdated, resetMonitor | boolean | Re-deliver changed jobs; forget the memory. |
webhookUrl, slackWebhookUrl, discordWebhookUrl, telegramToken + telegramChatId, whatsapp… | text | Alerts with the new jobs after each run. |
| 📦 Output | ||
maxItems | integer | Total jobs per run, default 50 (0 = no limit). |
maxItemsPerSearch | integer | Cap per keyword × location, link or company. |
splitLargeSearches | boolean | Go past XING's 1,000 results per search (default on). |
descriptionFormat, descriptionMaxLength | select, integer | Text / HTML / Markdown, and a length cut. |
compact, excludeEmptyFields | boolean | Core fields only (for AI / MCP); drop empty fields. |
| ⚙️ Advanced | ||
proxyConfiguration, maxConcurrency | proxy, integer | Optional proxy; pages read in parallel (default 8). |
Input names used by other XING actors are accepted too (keyword, queries, searchQueries, startUrl, searchUrls, results_wanted, maxResults, limit, date_posted, daysOld, postedWithinDays, radiusKm, employment_type, seniority, workplace, min_price, minSalary), so an existing API call keeps working.
Input JSON
{"keywords": ["Data Engineer", "Projektmanager"],"location": ["Berlin", "München"],"radius": 30,"postedWithin": "week","remoteOption": ["PARTLY_REMOTE", "FULL_REMOTE"],"careerLevel": ["PROFESSIONAL"],"includeCompanyDetails": true,"maxItems": 300}
Paste a XING link to reuse the filters you set on the site
Set up the search on xing.com/jobs and paste the address into XING URLs: keywords, location, radius, career level, employment type, discipline, industry, remote, salary, date and promoted-only all come across. SEO pages such as xing.com/jobs/d-it-und-softwareentwicklung/l-hamburg or xing.com/jobs/projektmanager-jobs-in-muenchen work the same way. Filters in the form are added on top.
XING's search is semantic
XING fills its result pages with related jobs, so a search for Kubernetes also returns DevOps and cloud roles that never say "Kubernetes", and a typo still returns jobs. Turn on Keyword must appear in the job to keep only jobs whose title, skills or description contain every word you typed.
More than 1,000 jobs from one search
XING shows at most 1,000 results per search. With Split searches past 1,000 jobs on (the default), a bigger search continues per discipline, then employment type, career level and remote option, and duplicates are dropped, so Hamburg + 50 km reached 2,000 different jobs in one run.
⬆️ Output
One item per job. A real row from a test run (shortened):
{"job_id": "158830390.e07d98","title": "Projektmanager TGA (m/w/d)","company": "Dussmann Service Deutschland GmbH","company_size": "10.001 oder mehr Mitarbeitende","location": "Frankfurt am Main","location_zip": "60489","remote": "Hybrid","job_type": "Vollzeit","career_level": "Mit Berufserfahrung","discipline": "Ingenieurwesen und technische Berufe","salary": "EUR 70,000 - EUR 80,000","salary_raw_minimum": 70000,"salary_raw_maximum": 80000,"salary_is_estimated": false,"date_posted": "2026-10-27T17:49:16Z","active_until": "2026-12-26T17:57:06Z","skills": ["Mängelmanagement", "Risikomanagement", "Active sourcing", "Energietechnik"],"url": "https://www.xing.com/jobs/frankfurt-main-projektmanager-tga-158830390","description_text": "Über uns\n\nDussmann ist Lösungspartner aus Leidenschaft …","company_details": { "name": "Dussmann Group", "followers": 1975, "email": "hotline@dussmann.de", "phone": "+49 3020250", "website": "https://www.dussmanngroup.com/" }}
Fields
Filled share measured on a 300-job run (3 keywords × Berlin and München, 2026-10-28). The dataset's Jobs, Salary, Companies and Monitor views show the main columns.
| Field | Fill | Meaning |
|---|---|---|
job_id, job_number, slug, global_id, url | 100% | XING's ids and the job page |
title, company | 100% | As the employer wrote them |
company_id, company_page_name, company_logo | 82% | XING company record |
company_size, company_size_min, company_size_max | 73% | Headcount band |
company_industry, company_street, company_zip, company_city, company_country | 77-81% | Company address and industry |
company_public_profile, company_entity_page_id | 73% | XING company page |
company_website, social_links | 20%, 29% | From the posting template (kununu, LinkedIn, Facebook…) |
discipline, job_category (industry), career_level + their ids | 100% | XING's classification |
location, locations, location_region, location_country_code, location_city_id | 100% | Where the job is |
location_zip, location_street | 54%, 17% | When the employer gives them |
remote, remote_options | 100% | Remote, Hybrid or On-site |
salary, salary_raw_type, salary_raw_minimum, salary_raw_maximum, salary_raw_currency, salary_is_estimated | 88% | 24% employer range, 63% XING estimate |
salary_raw_median | 63% | Median of XING's estimate |
job_type, employment_type_id | 100% | Employment type |
date_posted, activated_at, active_until | 100% | Dates (ISO) |
keywords, skills | 100%, 86% | XING's keywords and extracted skills |
language, job_code | 100%, 63% | Posting language, employer reference |
apply_url | 74% | Employer's application page |
application_type, redirects_to_third_party, apply_on_xing_without_account | 100%, 100%, 26% | How to apply |
description_text, description_html, description_markdown, description_type | 100% | The full posting |
company_description, responsibilities, requirements, benefits, contact_info, sections | 30-34% | Template postings, split by section |
summary_introduction, summary_qualifications, summary_key_responsibilities | 49% | XING's summary of the posting |
header_image, image_urls, youtube_video_url | 31%, 31%, 6% | Template media |
extracted_emails, extracted_phones, extracted_urls | 33%, 22%, 23% | Contacts written in the posting |
highlight, non_matching_facts | 21%, 100% | XING's badge (e.g. "Letzte Chance") and card facts |
paid, top_job, prioritized, service_offering_group | 100% | Ad flags |
search_query, search_location, search_total, search_position, search_tracking_token, search_url | 100% (search_url when a link was given) | Where the row came from |
company_details | with the add-on | Company page (see below) |
change_type, first_seen_at | monitor mode | new or updated |
is_repost, repost_of_id, content_hash | 100%, 2%, 100% | Repost and change detection |
scraped_at | 100% | When the row was read |
company_details (add-on, 35 companies on a 200-job run): about and followers 35/35, website 33/35, size_min 33/35, offices 34/35, email 27/35, phone 27/35, imprint (legal notice) 18/35, plus page_url, name, slogan, employees_count, address.
How can I use XING jobs data?
- 🧲 Recruiting agencies: find companies hiring for the roles you place, with the company's email and phone from the add-on.
- 📊 HR and compensation teams: benchmark salaries by role, city and career level; employer ranges and XING estimates are kept apart.
- 💼 B2B sales: hiring is a buying signal; filter by industry, company size and discipline to build target lists.
- 🛰️ Job boards and aggregators: a daily feed of new DACH jobs with full descriptions in monitor mode.
- 🔬 Labour-market research: demand for skills, remote share and posting volumes across Germany, Austria and Switzerland.
- 🤖 AI agents: compact rows through the API or MCP for job matching and market questions.
How much does it cost to scrape XING?
XING Jobs Scraper is pay-per-result: $0.36 per 1,000 jobs, with the full description, salary and company fields in every row. No start fee. Jobs removed by your filters, duplicates and jobs already delivered in monitor mode are never charged.
| Jobs | Price |
|---|---|
| 100 | $0.036 |
| 1,000 | $0.36 |
| 10,000 | $3.60 |
| Add-on | Price |
|---|---|
Company profile (company-details) | $0.00054 per company, once per company per run, only when its XING page exists (a 300-job run carried 132 companies: $0.071) |
Apify platform usage (compute, proxy) is included in these prices.
Integrations, API, scheduling & MCP
- Schedules: run it hourly, daily or weekly from the Schedules tab; with Only new jobs each run returns only jobs you have not received.
- Alerts: Slack, Discord, Telegram, WhatsApp or any webhook, straight from the input.
- No-code: Make, Zapier, n8n, Google Sheets, Airtable via Apify integrations.
- API: call it from Node.js or Python with
apify-client; code on the API tab and the Apify API reference. - MCP / AI agents: connect Claude, Cursor or any MCP client through the MCP tab and ask for XING jobs in plain language; Compact rows keeps the answers small.
More TopApi scrapers
| 💼 Indeed Jobs Scraper: the same job rows from Indeed's country sites | 🌴 Welcome to the Jungle Jobs Scraper: job rows from welcometothejungle.com | 🧭 All TopApi actors |
Limits & empty runs
- Results per search: XING returns at most 1,000 jobs per search, 20 per request. Bigger searches are split (see above); with splitting off, a run stops at 1,000 per search.
- Speed: 50 jobs in 2.5 seconds, 1,000 jobs in 13 seconds on 256 MB; past the 1,000-job window XING answers its filtered searches more slowly (2,000 jobs in about 100 seconds).
- Salary: 12% of jobs carry no salary at all;
salaryisnullon those, never zero. - Geo-fenced jobs: XING hides some jobs from visitors in some countries (10 of 20 on a page read from Canada); a page that comes back with hidden jobs is read again through an Apify proxy connection.
- Not available signed out, so not fields: recruiter names (XING shows the hiring contact only to signed-in members), the address of email applications (1 of 300 jobs applies by email; XING sends it without the address), kununu ratings (the kununu link from the posting is in
social_links) and "matching facts" (they compare a job with a signed-in member's profile). Emails written in the posting itself are inextracted_emails. - Empty dataset: your filters removed every job (the status line says which filter removed how many), or in monitor mode nothing is new. Nothing is charged for an empty run.
FAQ
How many jobs can XING Jobs Scraper collect in one run?
As many as match: set Max jobs to 0. One XING search stops at 1,000 results, and the actor splits bigger searches by discipline, employment type, career level and remote option to keep going.
Can I run XING Jobs Scraper on a schedule to get only new jobs?
Yes. Save your input as a task, turn on Only new jobs (monitor) and add a daily schedule. Each run asks XING only for jobs refreshed since the previous run and delivers the ones you have not received; a run with nothing new charges nothing.
Does XING Jobs Scraper return the full job description?
Yes, in every row and at no extra cost: plain text, HTML and Markdown, plus the template sections (company, tasks, profile, benefits, contact) when the employer used XING's template.
Does XING Jobs Scraper give salaries?
On 88% of jobs in our test. salary_is_estimated tells you whether the figure is the employer's (false) or XING's estimate (true); Employer-published salary only keeps only the employer's figures.
Can XING Jobs Scraper get company contact details?
Yes, with the Company profile add-on: the employer's XING page with offices, email, phone, website, about text and legal notice, charged once per company per run.
Can I integrate XING Jobs Scraper with other apps?
Yes: Make, Zapier, n8n, Google Sheets, Slack and more via Apify integrations, or webhooks when a run finishes. The built-in alerts post new jobs to Slack, Discord, Telegram, WhatsApp or your webhook.
Can I use XING Jobs Scraper with the Apify API?
Yes. Start runs and read datasets with apify-client for Node.js or Python. Input names of other XING actors are accepted, so existing calls keep working.
Can I use XING Jobs Scraper through an MCP server?
Yes. Open the MCP tab, connect Claude Desktop, Cursor or another MCP client, and ask for XING jobs in plain language. Turn on Compact rows to keep answers short.
Do I need a XING account, cookies or an API key?
No. The actor reads what XING shows to every visitor.
Why did my XING Jobs Scraper run return no results?
Usually the refine filters: several together (a country, employer salary only and a strict keyword) can remove every job. The status line and the RUN_SUMMARY record give the matches per search and what each filter removed. In monitor mode, an empty run means nothing new since the last run.
Is it legal to scrape XING?
XING Jobs Scraper reads only public job postings and public company pages; it does not log in. Postings and company pages can name people, and personal data is regulated (for example by GDPR), so make sure you have a legitimate purpose before you use it.
Your feedback
Found a bug or missing a field? Open an issue on the Issues tab.