XING Jobs Scraper — DACH Job Listings | from $1.09/1K
Pricing
from $1.06 / 1,000 job-listings
XING Jobs Scraper — DACH Job Listings | from $1.09/1K
Scrape public XING job listings for DACH keyword and location searches. Get structured records with titles, companies, locations, and employment types. Run with searchKeywords and optional location; no login or API key. Pricing: $0.00109 per job-listing item on Free; $0.00005 per Actor Start event.
Pricing
from $1.06 / 1,000 job-listings
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
0
Monthly active users
4 days ago
Last modified
Categories
Features
Share
XING Jobs Scraper
Extract public XING job listings from the /jobs/search page for DACH keyword and location searches, including titles, companies, locations, salary data, and employment types. Pricing is $0.00109 per job-listing dataset item on the Free plan, plus $0.00005 per Actor Start event on the Free plan.
- Search one or more keywords with an optional city or region filter.
- Deduplicate listings found across multiple keyword searches by job ID.
- Capture salary ranges, employment types, application links, and listing dates when XING provides them.
- Use the dataset for recruitment research, salary-range analysis, or DACH job-market monitoring.
- Run without a XING login or external API key.
What you get
The Actor reads XING’s server-rendered Apollo/GraphQL cache from the public search page rather than relying on frontend HTML classes. Each output record uses the following fields.
| Field | Type | What it contains |
|---|---|---|
job_id | string | XING job listing ID; records without an ID are not returned. |
title | string | Job title; null when XING does not provide a title. |
company | string | Company display name; null when XING does not provide a company name. |
company_id | string | XING company entity ID; null when no company entity ID is available. |
location | string | Listing city; null when XING does not provide a city. |
zip_code | string | Postal code; null when unavailable. |
region | string | Region or state; null when unavailable. |
country_code | string | Country code; null when XING does not include it in the search cache. |
employment_type | string | Localized employment type, such as Vollzeit; null when unavailable. |
salary | string | Normalized range such as 56,500-70,500 EUR/yr; null when salary data is unavailable. |
salary_min | integer | Minimum salary; null when salary data is unavailable. |
salary_max | integer | Maximum salary; null when salary data is unavailable. |
salary_currency | string | Salary currency, such as EUR or CHF; null when salary data is unavailable. |
remote_option | string | Remote-work option such as FULL_REMOTE, PARTIAL_REMOTE, or NO_REMOTE; null when unavailable. |
career_level | string | Career-level value; null when unavailable. |
posted_date | ISO 8601 string | XING refresh or activation timestamp; null when unavailable. |
active_until | ISO 8601 string | Listing active-until timestamp; null when unavailable. |
job_url | string | Canonical XING job URL; null when XING does not provide it. |
apply_url | string | Direct application URL, which may be external; null when unavailable. |
description_snippet | string | Plain-text description snippet taken from the cache's description or summary value; often null, because the search-page cache may not supply it. |
source_query | string | Keyword that found the listing; may be empty if an empty keyword is supplied. |
source_page | integer | Page number within that keyword search; populated for returned records. |
scraped_at | ISO 8601 string | UTC timestamp for the Actor run; populated for returned records. |
parse_confidence | number | Parse completeness score from 0.0 to 1.0; populated for returned records. |
warnings | array of strings | Warning codes associated with the parsed record; empty when no warnings apply. |
Fields that XING does not expose for a listing are returned as null. Salary and country code are available only when XING includes them in the search result cache.
Sample output
This is one dataset record from a successful run. The record is compactly line-wrapped; values are unchanged.
{"job_id": "158813256", "title": "Software Engineer Plattformen Anwendungen (m/w/d)","company": "Korsch AG", "company_id": "154681","location": "Berlin", "zip_code": null, "region": null,"country_code": null, "employment_type": "Vollzeit","salary": "56,500-70,500 EUR/yr", "salary_min": 56500, "salary_max": 70500,"salary_currency": "EUR", "remote_option": null, "career_level": null,"posted_date": "2026-10-26T20:15:25Z", "active_until": "2027-04-27T11:10:01Z","job_url": "https://www.xing.com/jobs/berlin-software-engineer-plattformen-anwendungen-158813256","apply_url": "https://jobs.maxime-media.de/job/7660725?utm_source=xing.com","description_snippet": null, "source_query": "Software Engineer", "source_page": 1,"scraped_at": "2026-11-08T09:11:36Z", "parse_confidence": 1, "warnings": []}
Pricing
The billing model is pay per event. The primary dataset item event is one job listing with all fields, and the Actor Start event is charged when the Actor starts.
You pay only for the events listed below. This Actor does not use the Pay per event + usage option, so the platform usage of your runs (compute, proxy traffic and storage) is not billed to you separately.
| Plan | Actor Start event | Job-listing dataset item |
|---|---|---|
| Free | $0.00005 | $0.00109 |
| Bronze | $0.0000495 | $0.0010791 |
| Silver | $0.000049 | $0.0010682 |
| Gold | $0.0000485 | $0.0010573 |
| Platinum | $0.000048 | $0.0010464 |
| Diamond | $0.0000475 | $0.0010355 |
The job-listing event has no price, so you are not charged for it.
On the Free plan, 100 results = $0.10905 on Free: 100 job-listing dataset items at $0.00109 each on Free plus one Actor Start event at $0.00005 on Free.
For 1,000 results, 1,000 job-listing dataset items at $0.00109 each on Free cost $1.09 on Free, plus one Actor Start event at $0.00005 on Free, for $1.09005 on Free.
For 10,000 results, 10,000 job-listing dataset items at $0.00109 each on Free cost $10.90 on Free, plus one Actor Start event at $0.00005 on Free, for $10.90005 on Free.
The Apify Free plan includes $5 of monthly platform usage credit. The $5 credit covers 4,587 job-listing dataset items at the Free-plan prices before the credit is exhausted.
How to use
- Choose one or more job-search keywords, such as
Software EngineerorProduct Manager. - Add a city or region in
location, or leave it empty to search across DACH locations. - Set
maxItemsas the maximum total number of records to return. - Set
maxPagesfor the number of pages to fetch for each keyword. - Run the Actor and inspect the resulting dataset, including
parse_confidenceandwarnings. - Repeat the run through Apify Schedules, starting with a daily or weekly schedule for job-listing monitoring.
{"searchKeywords": ["Software Engineer"],"location": "Berlin","maxItems": 100,"maxPages": 5}
Export the dataset as JSON or CSV, or read it through the Apify dataset API.
Input parameters
| Parameter | What it does | Default |
|---|---|---|
searchKeywords | Array of job-search keywords. Each keyword runs a separate search; empty input falls back to Software Engineer. | ["Software Engineer"] |
location | City or region filter. An empty string applies no location filter. | "" |
maxItems | Maximum total job records returned across all keywords. Accepted range: 1 to 1000. XING caps one keyword at about 100 results, so values above 100 need several keywords. | 100 |
maxPages | Maximum pages fetched per keyword. Each page returns up to 20 jobs. Accepted range: 1 to 10, but XING caps a keyword at about 5 pages (about 100 results). | 5 |
proxyConfiguration | Proxy settings for requests. The Actor works without a proxy; use Apify residential proxy as a fallback if XING geo-blocks. | – |
disableUsageStats | Set to true to turn off the run summary described in Usage statistics. | false |
Limits and edge cases
| Condition | What you see | What to do |
|---|---|---|
| XING does not expose a field in its search cache | The corresponding output field is null, including fields such as salary, country code, remote option, or description snippet. | Use the available fields and check warnings and parse_confidence. |
| Salary is not provided by the employer | salary, salary_min, salary_max, and possibly salary_currency are null. | Use the non-salary listing fields or collect only records with salary values in your downstream process. |
| A keyword reaches XING's cap | XING returns about 100 results (5 pages × 20 jobs) per keyword, so maxItems above 100 returns more only with several keywords. | Add more keywords or narrow location. |
| A page has no new job IDs | Pagination for that keyword stops, for example when keywords overlap and every job was already seen. | Use more distinct keywords. |
| The search page has no parseable records | The Actor stops pagination for that keyword and may return fewer records than requested. | Check the keyword and location, then run the search again with a broader or different query. |
| XING returns a blocked or unexpected page | The current keyword stops at that page; records already pushed remain in the dataset, and later keywords are attempted. | Run the search again. |
| A network fetch error occurs | The current keyword stops at the failed page; records already pushed remain available, and later keywords are attempted. | Check the run log and run again if needed. |
| Full descriptions are needed | description_snippet is often null, because the search-page cache may not supply it. | Use job_url to open the listing if your workflow requires the full description. |
FAQ
How much does it cost to scrape XING jobs?
On Free, the Actor costs $0.00109 per job-listing dataset item and $0.00005 per Actor Start event.
Why did the Actor return fewer jobs than requested?
XING caps a keyword at about 100 results (5 pages × 20 jobs), so maxItems above 100 needs several keywords. Pagination for a keyword also stops when a page has no new job IDs, for example when keywords overlap, and a blocked or failed page can reduce the count. Try more distinct keywords and review the run log.
Does the Actor require a XING login or API key?
No. It extracts data from XING's public logged-out job search and does not require a XING login or external API key.
What should I do if a run does not work?
Check that searchKeywords and location describe the intended search. If XING returns a blocked or unexpected page, run the Actor again.
Is it legal or allowed to use the public XING job data?
The Actor extracts publicly available job listings from XING's logged-out job search. Whether a particular use is legal or allowed depends on your use case, XING's applicable terms, and applicable law; review those requirements before using the data. This Actor is not affiliated with, endorsed by, or sponsored by XING SE.
Related actors
- Arbeitsagentur Jobs Scraper — related German job-listing data source.
- Google Jobs Scraper — job postings with multi-board apply links.
- Jobstreet Jobs Scraper — job listings for the Southeast Asian market.
Usage statistics
This Actor creates a small, content-free summary at the end of each run, used only to monitor reliability and improve this Actor. No input values, credentials or scraped data are sent.
A copy of the exact record for your run is saved as USAGE_STATS in your own Apify key-value store.
To opt out, set disableUsageStats to true in the input. Nothing is sent then.