XING Jobs (DACH) Scraper avatar

XING Jobs (DACH) Scraper

Pricing

from $2.55 / 1,000 job founds

Go to Apify Store
XING Jobs (DACH) Scraper

XING Jobs (DACH) Scraper

Walk xing.com's own job sitemap and pull public job listings from Germany/Austria/Switzerland: title, company, location, employment type, posted date, industry, and (optionally) the full description — straight from each job's own public page.

Pricing

from $2.55 / 1,000 job founds

Rating

0.0

(0)

Developer

Tim Zinin

Tim Zinin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

XING is the largest business network and job board across Germany, Austria and Switzerland. This Actor walks XING's own public job sitemap and visits each job's own page to return one row per posting — title, company, location, employment type, posted date, industry and (optionally) the full description. No login, no browser, no search query.

What you get

  • Live jobs straight from XING's own sitemap, not a stale export — every run reads the current freshest batch of listed jobs.
  • Full job detail, not a search-result teaser. Since XING's job search itself needs a browser session, this Actor reads each job's own public page directly — the same structured data XING publishes for search engines.
  • Optional keyword filter. Keep only jobs whose title contains your term — applied after fetching, since there is no server-side search available here.
  • Honest churn handling. A meaningful share of freshly-listed postings are already withdrawn by the time this Actor visits them (temp-staffing boards rotate fast) — those are skipped for free, never billed, never treated as a failure.
  • Runs on Apify: schedule it, monitor it, call it from the API or the MCP server, export to JSON, CSV or Excel, or push results straight into your own pipeline.

How to run it

  1. Click Try for free — no card needed on the free plan.
  2. Set Max jobs to return (or leave the default).
  3. Optionally add a Keyword filter to only keep matching titles.
  4. Press Start. Results appear in the dataset — read them in the UI, pull them from the API, or have a webhook push them onward.

Pricing

Pay-per-event: $0.005 per run start + $0.003 per job found. No monthly seat, no minimum. 100 jobs cost about $0.31; 1,000 jobs about $3.01.

A withdrawn posting (HTTP 410 — routine on this board), a keyword that matched nothing, or a sitemap that failed to load is still logged with found: false and the reason where one exists — and it is not charged for. You pay for jobs actually delivered, not for attempts.

Input

FieldRequiredWhat it does
max_itemsnoTarget number of job rows to deliver (default 20, max 200). This is a target, not a guarantee — see the note on withdrawn postings above.
freshness_daysnoSkip sitemap entries older than this many days (default 14). XING's own sitemap batches are typically only minutes to hours old, so this rarely filters anything in practice.
keyword_filternoCase-insensitive substring match against each job's title, applied on this Actor's side. Leave empty to keep every job found.
fetch_full_descriptionnoInclude the full description text in the output row (default true). The job's own page is fetched either way — this only controls whether the text is kept.
sitemap_override_urlnoAdvanced/diagnostic: override the sitemap URL this Actor walks. Leave empty for normal use.
{
"max_items": 3
}

Output

One dataset row per job found. This is a real row from a real run:

{
"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...",
"description_is_teaser": false,
"source_board": "xing-jobs",
"scraped_at": "2026-07-30T07:37:41.727Z",
"industry": "Pflegeberufe",
"valid_through": "2027-01-27T21:11:45.000Z",
"direct_apply": false
}
FieldWhat it means
foundWhether this row is a real job (true) or a notice/error row (false)
urlDirect link to the job posting — the unique key for this row
job_idXING's own numeric job id (read from its own URL — XING's structured data carries no separate identifier field)
titleJob title
companyHiring company name
company_urlLink to the company's XING page, when the posting has one — null otherwise
locationCity and region as XING shows it
countryCountry code (DE, AT or CH)
employment_typeXING's own label, e.g. "Vollzeit" (not translated)
industryXING's own industry label for the posting (not translated)
posted_dateISO 8601 timestamp
valid_throughISO 8601 timestamp — when the posting expires, per XING
direct_applyWhether XING flags this posting for its own one-click "quick apply"
salary_rawAlways null on this board — XING's DACH postings do not publish a salary field at all; this Actor never estimates or invents one
descriptionFull job description (HTML tags stripped), up to 600 characters, or null when fetch_full_description is off
description_is_teaserAlways false when description is present — every row comes from the job's own full page, never a search-result snippet
source_boardAlways "xing-jobs"
scraped_atWhen this Actor fetched the row

A run whose keyword filter matched nothing (or whose entire candidate batch turned out withdrawn/filtered) pushes:

{ "found": false, "error": "", "source_board": "xing-jobs", "scraped_at": "..." }

A run whose sitemap failed to load pushes an error row with a non-empty error (e.g. "http 404") — never the same shape as "no matches".

Other tools we built

Related tools for adjacent workflows in jobs and hiring.

ActorWhat it does
Boss.az Azerbaijan Jobs ScraperPair it in the jobs and hiring workflow: Walk boss.az's own job sitemap and pull public job listings from Azerbaijan: title, employer, location,...
jobs.ch Swiss Jobs ScraperPair it in the jobs and hiring workflow: Search jobs.ch (Switzerland) by keyword and get public job listings: title, company, location, employment...
Computrabajo LatAm Jobs ScraperPair it in the jobs and hiring workflow: Search Computrabajo (Mexico, Colombia, Chile, Argentina, Peru) by keyword and get public job listings:...
Job Postings AggregatorPair it in the jobs and hiring workflow: Pull every open role from a company's public applicant-tracking system (Greenhouse, Lever, Ashby) and...
Jobs.ge Georgia Jobs ScraperPair it in the jobs and hiring workflow: Search Jobs.ge (Georgia, the country's oldest job board) and get public job listings: title, employer,...

FAQ

Does it need an API key / login? No — it reads XING's public sitemap and public job pages, no session required.

Why do I sometimes get fewer jobs than max_items? A meaningful share of freshly-listed jobs on this board are withdrawn (HTTP 410) within hours of being listed — this Actor automatically tries extra candidates to compensate, but on a small max_items value it can still occasionally return less than asked if the board's live churn that moment is unusually high.

Why is salary_raw always null? Because XING's DACH job postings do not publish a salary field at all. This Actor never estimates or guesses a number.

Can I filter by keyword? Yes, via keyword_filter — a case-insensitive match against the job title, applied after this Actor fetches each candidate page (XING's own job search needs a browser session and is not used here).

How fresh is the data? Live at run time — XING regenerates its job sitemap on the order of every few tens of minutes.

Can I call it from an AI agent? Yes — standard Apify Actor, callable from the Apify API, the SDK, or the Apify MCP server.

What this is NOT. It does not apply to jobs on your behalf, does not cover job boards outside xing.com, and does not invent a salary figure when the source has none.

Found a wrong result, or need a check we don't run? Open an issue on this Actor's page.


Built by zinin. Questions? Telegram @timzinin.