XING Jobs Scraper
Pricing
from $1.99 / 1,000 results
XING Jobs Scraper
XING Jobs scraper to extract job listings, company names, job titles, locations, posting dates, and other publicly available job data from XING Jobs πΌπ Perfect for job market research, recruitment, talent sourcing, and employment trend analysis.
Pricing
from $1.99 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Hub
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 hours ago
Last modified
Categories
Share
An Apify actor that searches XING job listings by keyword and, optionally, enriches every posting with the full description, responsibilities, requirements, benefits, company profile and metadata.
Input
{"queries": ["software engineer"],"limit": 100,"enrich_data": true,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
| Field | Type | Default | Description |
|---|---|---|---|
queries | string[] | ["software engineer"] | Keywords to search. Each runs its own paginated search. |
startUrls | string[] | β | Full xing.com/jobs/search?... URLs to scrape instead of / alongside queries. |
location | string | β | City filter applied to every query. |
radius | integer | 20 | Search radius in km around location. |
limit | integer | 100 | Max postings per query. XING caps guest browsing at ~200 per search. |
enrich_data | boolean | true | Fetch each detail page for full description + sections. |
proxyConfiguration | object | RESIDENTIAL | Required. XING blocks datacenter IPs β use residential. |
maxConcurrency | integer | 5 | Parallel detail-page fetches. Keep low to avoid blocks. |
maxRequestRetries | integer | 5 | Retries per blocked/failed request. |
Output
One dataset item per job posting. Card-level fields come from the search API;
the enrichment block and long-text fields are added when enrich_data is on.
{"id": "155102097.afd464","url": "https://www.xing.com/jobs/heimertingen-software-engineer-...","title": "Software Engineer - Mobile Application | Android (m/w/d)","company": "blackned GmbH","location": "Heimertingen","employmentType": "Full-time","salaryMin": 59500,"salaryMax": 78500,"salaryMedian": 64000,"currency": "EUR","applyUrl": "https://t.gohiring.com/h/...","refreshedAt": "2026-06-24T11:50:15+00:00","activeUntil": "2026-08-08T11:50:17+00:00","fullDescription": "β¦","responsibilities": "β¦","requirements": "β¦","benefits": "β¦","companyProfileUrl": "https://www.xing.com/pages/blacknedgmbh","companyLogoUrl": "https://www.xing.com/imagecache/...","companySize": "51-200 employees","companyIndustry": "Software","companyLocation": "Heimertingen, Germany","enrichment": {"detailUrl": "β¦","sections": {"companyDescription": { "title": "Γber uns:", "text": "β¦", "html": "β¦" },"responsibilities": { "title": "Deine Aufgaben:", "text": "β¦", "html": "β¦" },"benefits": { "title": "Wir bieten Dir:", "text": "β¦", "html": "β¦" }},"company": { "profileUrl": "β¦", "logoUrl": "β¦", "size": "β¦", "industry": "β¦", "location": "β¦" },"metadata": { "language": "de", "remoteOptions": ["NON_REMOTE"], "activatedAt": "β¦", "activeUntil": "β¦" }},"source_context": {"source_url": "https://www.xing.com/jobs/search?keywords=software+engineer","seed_type": "query","seed_value": "software engineer","page_index": 1}}
How it works
- Search β src/xing_client.py calls XING's
JobSearchByQueryGraphQL operation (https://www.xing.com/xing-one/api) with a guest consent cookie, paginating in pages of 20 untillimitis reached or results run out. Each result maps to the flat card-level fields. - Enrich (optional) β src/parse_detail.py fetches
each job's detail page, extracts the
JobPostingJSON-LD block for the description/salary/apply URL, and pulls the titled content sections from the embedded page state. - Output β src/main.py deduplicates by
id, attachessource_context, and pushes to the dataset incrementally.
Notes & maintenance
- Residential proxy is essential. XING challenges datacenter IPs and requires the consent cookie (already sent by the client). Without it you will get blocked/empty results.
- If XING changes their GraphQL schema, the query string in
src/xing_client.py (
JOB_SEARCH_QUERY) is the single place to update. All field reads are defensive (.get(...)), so a partial change degrades to missing fields rather than a crash. - Section detection is heuristic (
classify_sectioninparse_detail.py): German and English headlines are matched to canonical keys (companyDescription,responsibilities,requirements,benefits,contactInfo). Add synonyms toSECTION_KEYSas needed. - XING limits guest browsing to ~200 results per search β split broad searches into several keywords or cities to collect more.
Run locally
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activatepip install -r requirements.txt# set APIFY_TOKEN in your env for Apify Proxy, then:apify run # or: python -m src (uses ./storage for input/output)
Requires Python 3.10+ (the actor image uses 3.13).