The problem
XING is the largest business network and job board across Germany, Austria and Switzerland. If you aggregate job listings, watch the DACH labor market, or feed a search index, you need a steady stream of XING postings with title, company, location and posting date.
The manual route does not scale: XING's own job search needs a browser session, so copying listings by hand is slow and fragile. A custom scraper has to solve the same session problem, and commercial job-data APIs covering XING come as recurring subscriptions.
What the actor does
The XING Jobs (DACH) Scraper takes a different route: it walks xing.com's own public job sitemap and then visits each job's own public page — the same structured data XING publishes for search engines. No login, no browser, no search query. Per the README:
- Live jobs straight from the sitemap — every run reads the current freshest batch; XING regenerates the sitemap on the order of every few tens of minutes.
-
Full job detail, not a search-result teaser. Each row carries job URL and
job_id, title, employer and company page link, location and country code (DE/AT/CH), employment type and industry labels (XING's own, untranslated), posted and expiry timestamps, direct-apply and withdrawn flags, an optional full description (HTML stripped, up to 600 characters), and fetch metadata. - Optional keyword filter — a case-insensitive substring match on job titles, applied after fetching since there is no server-side search here.
-
Honest churn handling. A meaningful share of freshly listed postings are already withdrawn (HTTP 410) by the time they are visited; those are skipped for free, never billed, never treated as a failure. A
partial: trueflag appears on a row when the run hitmax_itemswhile fresher candidates remained.
One deliberate honesty note: salary_raw is always null, because XING's DACH postings do not publish a salary field at all — the actor never estimates or invents one.
On Apify the actor can be scheduled to re-run every few hours — matching how fast XING refreshes its sitemap — and each run's dataset exports as CSV, JSON or Excel or pulls through the API, which is how aggregators and labor-market watchers keep their feed current.
Example: input and output
A minimal run asking for three jobs:
{
"max_items": 3
}
A real row from a real run, quoted from the README:
{
"found": true,
"url": "https://www.xing.com/jobs/zeitz-altenpfleger-156796154",
"job_id": "156796154",
"title": "Altenpfleger (m/w/d)",
"company": "KCS Medical GmbH",
"company_url": "https://www.xing.com/pages/kcsmedicalgmbh",
"location": "Zeitz, Sachsen-Anhalt",
"country": "DE",
"employment_type": "Vollzeit",
"posted_date": "2026-07-29T06:17:09.000Z",
"salary_raw": null,
"description": "Altenpfleger (m/w/d) ausgeschrieben am 28.07.2026 von KCS Medical GmbH ÜBERBLICK Altenpfleger (m/w/d) im Raum Zeitz gesucht...",
"industry": "Pflegeberufe",
"valid_through": "2027-01-27T21:11:45.000Z",
"direct_apply": false,
"source_board": "xing-jobs",
"scraped_at": "2026-07-30T07:37:41.727Z"
}
A run whose keyword filter matched nothing pushes a free found: false row — distinct from a sitemap failure, which pushes an error row with a non-empty error.
Pricing and the free limit
Pay-per-event: $0.005 per run start plus $0.003 per job found. Withdrawn postings, empty keyword matches and sitemap failures are not charged — you pay for jobs actually delivered. A run delivering 100 jobs costs about $0.31 ($0.005 + 100 × $0.003). Apify's free plan gives $5 of usage credits per month, so $5 covers about 16 such runs — roughly 1,600 jobs.
Try it
Set max jobs, optionally add a title keyword filter, and press Start: XING Jobs (DACH) Scraper
For AI agents and MCP
A standard Apify actor with JSON input and structured JSON rows, callable from the Apify API, the SDKs, or the hosted Apify MCP server whose setup the README documents. An agent can branch on found and partial_reason — delivered rows are keyed by url for deduplication, while found: false rows distinguish "no matches" from a source error without extra parsing.
Top comments (0)