Xing Jobs Scraper avatar

Xing Jobs Scraper

Pricing

from $0.53 / 1,000 item extracteds

Go to Apify Store
Xing Jobs Scraper

Xing Jobs Scraper

Search public XING jobs by keyword and location and export enriched DACH vacancy records for recruiting and labor-market feeds.

Pricing

from $0.53 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Search public XING jobs by keyword and location and export normalized, enriched vacancy records for DACH recruiting and labor-market workflows. The Actor works with anonymous XING job pages: no XING account or login is required.

Use it to create one-time vacancy exports or scheduled feeds containing job ID, title, employer, location, work mode, employment type, salary, dates, full description, qualifications, responsibilities, and application URL.

What does Xing Jobs Scraper do?

The Actor accepts search phrases such as software engineer, optional locations such as Berlin or Wien, and existing public XING jobs search URLs.

For every accepted search it:

  1. opens the public XING search-results pages;
  2. follows XING pagination up to your configured limits;
  3. de-duplicates jobs by stable XING identity;
  4. optionally opens each job page for the complete description and metadata;
  5. saves typed records to the default Apify dataset;
  6. makes the results available as JSON, CSV, Excel, XML, RSS, or through the API.

XING uses semantic job search, so a narrow phrase can return related vacancies rather than only literal keyword matches.

Who is this XING jobs extractor for?

  • Recruiters building fresh candidate-sourcing and vacancy intelligence.
  • Staffing agencies comparing open roles across German, Austrian, and Swiss markets.
  • Talent intelligence teams tracking role, location, salary, and work-mode changes.
  • Labor-market analysts collecting repeatable DACH vacancy samples.
  • Data engineers feeding job records into warehouses, dashboards, and spreadsheets.
  • Sales teams using active hiring as a public company-growth signal.

Why use this Actor?

  • Searches public pages without requiring XING credentials.
  • Supports keyword/location combinations and user-built XING search URLs.
  • Extracts both result-list identity and full detail-page content.
  • Preserves source keyword, location, page, and position for auditability.
  • Stops at explicit item and page limits.
  • De-duplicates repeated jobs across searches in the same run.
  • Uses lightweight HTTP extraction rather than a full browser.
  • Fails clearly when XING returns an unexpected or blocked response instead of reporting a misleading empty success.

What XING job data can I extract?

FieldMeaning
jobIdStable numeric XING job ID
titleVacancy title
employerHiring company name
location, locationsPrimary city and all listed cities
countryCodeISO country code when shown
workplaceTypeRemote, hybrid, or on-site value supplied by XING
employmentTypeFull-time, part-time, or another listed type
careerLevelCareer level when available
discipline, industryXING classification values
salaryMinimum, salaryMaximumSalary range when the listing publishes one
salaryCurrencySalary currency, typically EUR
publishedAtOriginal activation timestamp when available
refreshedAtLatest XING refresh timestamp
activeUntilListing expiration timestamp when available
descriptionPlain-text full description from the detail page
responsibilitiesXING summary of responsibilities
qualificationsXING summary of qualifications
applyUrlExternal application URL or canonical XING job URL
urlCanonical XING vacancy URL
sourceKeyword, sourceLocationSearch context that produced the row
sourceUrl, page, positionSearch-page provenance
scrapedAtUTC extraction timestamp

Fields that XING does not publish for a vacancy are returned as null or an empty array. Salary and publication date are not present on every listing.

How to scrape XING jobs

  1. Open the Actor in Apify Console.
  2. Add one or more Keywords.
  3. Optionally add DACH cities or regions under Locations.
  4. Leave Enrich job details enabled when descriptions and extra fields are required.
  5. Set Maximum jobs and, if needed, Maximum pages per search.
  6. Click Start.
  7. Open the Dataset tab to preview or export the records.

A practical first run is:

{
"keywords": ["software engineer"],
"locations": ["Berlin"],
"maxItems": 10,
"enrichDetails": true
}

Input parameters

keywords

An array of job titles, skills, or search phrases. Every keyword is combined with every supplied location. Required unless startUrls is provided.

locations

Optional city or region text such as Berlin, Hamburg, München, Wien, or Zürich. An empty list searches without an explicit location.

startUrls

Optional public xing.com/jobs/search URLs. Use these when filters were already built on XING. When present, start URLs take precedence over keyword/location combinations. Other domains and non-search XING URLs are rejected.

enrichDetails

Defaults to true. When enabled, the Actor opens each job page to collect full description sections, work mode, qualifications, responsibilities, and detail metadata. Disable it for a faster search-list feed when summary data is enough.

maxItems

Maximum unique records saved across the entire run. The accepted range is 1 to 1,000 and the default is 50.

maxPages

Maximum result pages visited per search, from 1 to 50. XING normally provides up to 20 search results per page.

Output example

A current enriched run returns records shaped like this:

{
"jobId": "123456789",
"title": "Senior Software Engineer",
"employer": "Example Technology GmbH",
"location": "Berlin",
"locations": ["Berlin"],
"countryCode": "DE",
"workplaceType": "PARTLY_REMOTE",
"employmentType": "Full-time",
"careerLevel": "Experienced professional",
"salaryMinimum": 70000,
"salaryMaximum": 90000,
"salaryCurrency": "EUR",
"publishedAt": "2026-01-15T09:00:00Z",
"refreshedAt": "2026-01-18T09:00:00Z",
"activeUntil": "2026-03-15T09:00:00Z",
"description": "Join the engineering team to build reliable applications...",
"responsibilities": ["Develop customer applications", "Review code"],
"qualifications": ["Professional software development experience"],
"applyUrl": "https://www.xing.com/jobs/berlin-senior-software-engineer-123456789",
"url": "https://www.xing.com/jobs/berlin-senior-software-engineer-123456789",
"sourceKeyword": "software engineer",
"sourceLocation": "Berlin",
"sourceUrl": "https://www.xing.com/jobs/search?keywords=software+engineer&location=Berlin",
"page": 1,
"position": 0,
"scrapedAt": "2026-01-20T12:00:00.000Z"
}

How much does it cost to extract XING jobs?

The Actor uses pay-per-event pricing:

  • $0.0005 once per run;
  • a tiered price for each saved job, currently $0.00088 per job on BRONZE;
  • details included in a saved job have no separate event charge.

At the BRONZE tier, the Actor charge is approximately:

Saved jobsEstimated Actor charge
10$0.0093
100$0.0885
1,000$0.8805

These examples combine the run start and per-job events. Your Apify plan and applicable pricing tier determine the final amount shown in Console. Failed or duplicate records are not charged as saved jobs.

Recurring DACH recruiting feeds

Create an Apify Schedule to rerun the same keyword/location input daily or weekly. Send each completed dataset to a webhook, cloud storage, Google Sheets, or a database. Compare rows by jobId and use refreshedAt or activeUntil to identify changes.

The Actor emits current observations; it does not maintain history or send alerts by itself. Store earlier datasets in your destination when historical comparison is required.

Spreadsheet and data-pipeline exports

From the Dataset tab, export records as CSV or Excel for analysts. For automated pipelines, request JSON from the dataset API and upsert by jobId.

Useful pipeline checks include:

  • treat nullable salary fields as unknown rather than zero;
  • retain sourceUrl for provenance;
  • use scrapedAt as observation time, not publication time;
  • compare activeUntil before removing jobs from a current feed.

Run through the Apify API with cURL

Replace APIFY_TOKEN with your token:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~xing-job-listings-scraper-retry/runs?token=APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"keywords": ["data analyst"],
"locations": ["Hamburg"],
"maxItems": 25,
"enrichDetails": true
}'

Run with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/xing-job-listings-scraper-retry').call({
keywords: ['software engineer'],
locations: ['Berlin'],
maxItems: 25,
enrichDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Run with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("automation-lab/xing-job-listings-scraper-retry").call(
run_input={
"keywords": ["sales manager"],
"locations": ["Wien"],
"maxItems": 25,
"enrichDetails": True,
}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Use with Apify MCP and AI assistants

Claude Code

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/xing-job-listings-scraper-retry"

Claude Desktop

Add this server to the Claude Desktop MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/xing-job-listings-scraper-retry"
}
}
}

Cursor

Add the same apify HTTP server URL under Cursor Settings → MCP.

VS Code

Add the same apify HTTP server URL to your VS Code MCP server configuration.

Example prompts:

  • “Find 20 XING software engineering jobs in Berlin and return employer, salary, work mode, and apply URL.”
  • “Export enriched XING data analyst vacancies in Hamburg as a structured recruiting feed.”
  • “Collect sales manager jobs in Berlin and Vienna and group the results by employer.”

Limits and reliable use

  • Only public anonymous XING job-search and job-detail pages are supported.
  • The Actor does not scrape XING profiles, companies, messages, or logged-in pages.
  • Results follow XING semantic search and may include related roles.
  • XING may omit salary, career level, industry, or publication date.
  • A job can contain several locations; location is the primary city and locations contains the full list.
  • Item limits apply across all keywords, locations, and URLs in one run.
  • Transient network and upstream failures are retried twice with bounded backoff. Persistent unexpected response shapes fail the run clearly.
  • Large enriched runs make one detail request per accepted job and therefore take longer than list-only runs.

Start with 10–25 items when testing a new query, then raise the limit after reviewing relevance and field availability.

Troubleshooting

XING's public search uses semantic matching. Try a more specific phrase, location, or a search URL configured in XING. The Actor returns the source's ranking rather than applying an undocumented exact-match filter.

Why is salary or publication date null?

The listing did not expose that field publicly. The Actor preserves null instead of guessing a salary or date.

Why is the description short?

Confirm enrichDetails is true. List-only mode uses the summary available on the search page and intentionally skips full detail pages.

Why did the run fail instead of returning zero records?

A persistent HTTP error or missing XING data state means the source response was not a valid empty search. Failing avoids silently delivering an incomplete feed. Retry later or inspect the run log for the affected URL.

Use the Actor only for lawful purposes and public data you are entitled to process. Follow XING's terms, robots guidance, applicable database rights, copyright, privacy, and employment laws. Do not use vacancy data for unlawful discrimination, spam, harassment, or attempts to identify private individuals.

You are responsible for establishing a legal basis, limiting collection to what you need, securing exports, honoring retention requirements, and responding to data-subject or source requests where applicable. This documentation is not legal advice.

These are separate sources. Combine datasets in your own pipeline when broader coverage is needed.

FAQ

Does it require a XING login?

No. The supported search and detail workflow uses anonymous public job pages.

Can I search Germany, Austria, and Switzerland?

Yes. Supply the DACH city or region text accepted by XING. Availability and ranking are controlled by the source.

Can I use a XING search URL?

Yes. Add one or more public /jobs/search URLs to startUrls. They take precedence over keywords and locations.

Yes when XING publishes them. Enable detail enrichment for full description sections and detail-only fields.

Can I schedule runs?

Yes. Use Apify Schedules and connect the resulting dataset to a webhook or integration. Historical comparison and alerting belong in the destination workflow.

How are duplicate jobs handled?

The Actor de-duplicates by the XING job identity across all searches in one run. A duplicate is neither saved nor charged as another result.