XING Jobs Scraper avatar

XING Jobs Scraper

Pricing

from $1.99 / 1,000 results

Go to Apify Store
XING Jobs Scraper

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

Scrapers Hub

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 hours ago

Last modified

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"]
}
}
FieldTypeDefaultDescription
queriesstring[]["software engineer"]Keywords to search. Each runs its own paginated search.
startUrlsstring[]–Full xing.com/jobs/search?... URLs to scrape instead of / alongside queries.
locationstring–City filter applied to every query.
radiusinteger20Search radius in km around location.
limitinteger100Max postings per query. XING caps guest browsing at ~200 per search.
enrich_databooleantrueFetch each detail page for full description + sections.
proxyConfigurationobjectRESIDENTIALRequired. XING blocks datacenter IPs β€” use residential.
maxConcurrencyinteger5Parallel detail-page fetches. Keep low to avoid blocks.
maxRequestRetriesinteger5Retries 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

  1. Search β€” src/xing_client.py calls XING's JobSearchByQuery GraphQL operation (https://www.xing.com/xing-one/api) with a guest consent cookie, paginating in pages of 20 until limit is reached or results run out. Each result maps to the flat card-level fields.
  2. Enrich (optional) β€” src/parse_detail.py fetches each job's detail page, extracts the JobPosting JSON-LD block for the description/salary/apply URL, and pulls the titled content sections from the embedded page state.
  3. Output β€” src/main.py deduplicates by id, attaches source_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_section in parse_detail.py): German and English headlines are matched to canonical keys (companyDescription, responsibilities, requirements, benefits, contactInfo). Add synonyms to SECTION_KEYS as 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\activate
pip 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).