
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape XING job listings by keyword, location and URL: title, company, location, remote option, employment type, career level, salary range or XING estimate, full description and apply link. Filter by date, salary and more. No login.
Pull job listings from XING, the leading professional network in Germany, Austria and Switzerland. Search by keyword and location or paste XING links, and get the title, company, location, remote option, employment type, career level, salary range (or XING's salary estimate), the full description and the apply link. No login, no browser, and 1,000 jobs cost $0.70.
/jobs/t-remote, or single job pages.| Field | What it does |
|---|---|
searchQueries | Keywords to search for, one search per line. Empty lists every job in the location. |
location | City, region or country, for example Berlin, Bayern or Österreich. Countries (Deutschland, Österreich, Schweiz or the English names) keep only jobs located in that country. |
startUrls | XING search, topic or job URLs. |
maxResults | Maximum jobs in total (0 = no limit). |
radius | Kilometres around the location. |
employmentTypes, careerLevels, remoteOptions | Multi-select filters, the same as on xing.com. |
postedWithin | LAST_24_HOURS, LAST_WEEK or LAST_MONTH. |
salaryMin, salaryMax, onlyWithSalary | Yearly salary filters in EUR. |
includeDescription | Full description, sections and social links (on by default). |
maxResultsPerSearch | Cap for each keyword or URL. |
searchMode | Smart search (like xing.com) or classic keyword search. |
language | Labels in English or German. |
{
"searchQueries": ["Software Developer", "Data Engineer"],
"location": "Berlin",
"radius": 50,
"remoteOptions": ["FULL_REMOTE", "PARTLY_REMOTE"],
"postedWithin": "LAST_WEEK",
"maxResults": 200
}
One row per job. The main fields:
| Field | Example |
|---|---|
title, company | Senior Backend Engineer (m/w/d), Example Software GmbH |
location, allLocations, country | Berlin, ["Berlin, Land Berlin, Germany"], DE |
workplaceType, isRemote | hybrid, false |
commitment, level | Full-time, Professional/Experienced |
discipline, industry | IT and software development, Internet and IT |
salaryMin, salaryMax, salaryCurrency, salaryType | 65000, 85000, EUR, range |
postedAt, activeUntil | 2026-10-12T08:00:00Z, 2026-11-11T08:00:00Z |
jobUrl, applyUrl, applicationType | XING job page, external apply link, external |
companySize, companyIndustry, companyUrl | 51-200 employees, Internet and IT, XING company page |
summary, keyResponsibilities, qualifications | XING's short summary of the job |
descriptionText, descriptionHtml, descriptionSections | Full description |
Example item (fictional company, real shape, trimmed):
{
"id": "158000001.a1b2c3",
"title": "Senior Backend Engineer (m/w/d)",
"company": "Example Software GmbH",
"companyUrl": "https://www.xing.com/pages/example-software",
"companySize": "51-200 employees",
"companyIndustry": "Internet and IT",
"location": "Berlin",
"allLocations": ["Berlin, Land Berlin, Germany"],
"country": "DE",
"countryName": "Germany",
"workplaceType": "hybrid",
"isRemote": false,
"commitment": "Full-time",
"level": "Professional/Experienced",
"discipline": "IT and software development",
"salaryMin": 65000,
"salaryMax": 85000,
"salaryCurrency": "EUR",
"salaryPeriod": "year",
"salaryType": "range",
"salaryIsEstimate": false,
"salaryText": "EUR 65,000 - EUR 85,000",
"postedAt": "2026-10-12T08:00:00Z",
"activeUntil": "2026-11-11T08:00:00Z",
"jobUrl": "https://www.xing.com/jobs/berlin-senior-backend-engineer-158000001",
"applyUrl": "https://jobs.example-software.de/apply/42",
"applicationType": "external",
"keywords": ["backend", "python", "kubernetes"],
"language": "de",
"summary": "Example Software is looking for a Senior Backend Engineer in Berlin to build its payments platform.",
"keyResponsibilities": ["Design and run backend services.", "Mentor other engineers."],
"qualifications": ["Several years of Python experience.", "Fluent German or English."],
"descriptionType": "template",
"descriptionText": "About us\n\nExample Software builds ...",
"descriptionSections": [{"title": "About us", "text": "Example Software builds ..."}],
"searchQuery": "Backend Engineer",
"source": "xing",
"scrapedAt": "2026-10-14T20:00:00Z"
}
Fields XING doesn't publish for a job are null or an empty list.
You pay $0.70 per 1,000 jobs ($0.0007 per job saved), plus the small platform usage of the run (compute and datacenter proxy traffic, about one cent per 1,000 jobs with descriptions). Example: 1,000 jobs with full descriptions cost about $0.71 in total. You are only charged for jobs that are saved, and a run stops cleanly when it reaches your maximum charge.
Is scraping XING legal? The actor reads only public job listings that anyone can see without logging in. It collects no personal profiles. Check that your use of the data follows the GDPR and your local laws.
Do I need a XING account or a proxy? No account. A datacenter proxy is preselected and works well; you don't need anything else.
How many jobs can I get? XING shows at most 1,000 jobs per search. With "Go beyond 1,000 jobs per search" on (the default), bigger requests are split by employment type, career level and remote option, so broad searches can return several thousand jobs. Use several keywords or locations for even more.
Why is the salary sometimes an estimate?
Many employers don't publish a salary, and XING then shows its own estimate. Those rows have salaryType: "estimate" and salaryIsEstimate: true, so you can keep or drop them.
What if a field is empty? The employer didn't publish it (for example no street address or no external apply link because applications go through XING).
Can I schedule runs or use the API? Yes. Schedule the actor (for example daily with "Posted within: last 24 hours"), or start it through the API and read the dataset as JSON, CSV or Excel.
location field of the results.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchQueriesarrayOptionalSearch keywords
Job titles, skills or companies to search for, one search per line (for example Software Developer, Projektmanager, SAP). Leave empty to list every job in the location below.
locationstringOptionalLocation
City, region or country to search in, for example Berlin, Bayern or Österreich. Countries: Deutschland, Österreich, Schweiz (or Germany, Austria, Switzerland); with a country every saved job is located there. Applies to every keyword. Leave empty to search everywhere.
startUrlsarrayOptionalXING URLs
Optional XING links: a jobs search page with its filters (https://www.xing.com/jobs/search?keywords=developer&location=Berlin), a topic page (https://www.xing.com/jobs/t-remote) or a single job page (https://www.xing.com/jobs/berlin-professional-abap-developer-157931744).
maxResultsintegerOptionaldefault 20Max results
Maximum number of jobs to save across all searches. Use 0 for no limit (up to 100,000).
All filters are optional. They are applied by XING itself, exactly like the filters on xing.com/jobs.
radiusintegerOptionaldefault 0Radius around the location (km)
Also include jobs up to this many kilometres from the location. 0 uses XING's default area.
employmentTypesarrayOptionaldefault []Employment type
Keep jobs with any of these employment types.
careerLevelsarrayOptionaldefault []Career level
Keep jobs for any of these career levels.
remoteOptionsarrayOptionaldefault []Remote work
Keep jobs with any of these remote options.
postedWithinenumOptionaldefault ""Posted within
Only jobs published or refreshed within this period.
salaryMinintegerOptionaldefault 0Minimum yearly salary (EUR)
Keep jobs whose yearly salary range reaches at least this amount. 0 turns it off.
salaryMaxintegerOptionaldefault 0Maximum yearly salary (EUR)
Keep jobs whose yearly salary range starts at or below this amount. 0 turns it off.
onlyWithSalarybooleanOptionaldefault falseOnly jobs with a salary
Skip jobs that show neither a salary range nor a XING salary estimate.
includeDescriptionbooleanOptionaldefault trueInclude full description
Save the full job description (HTML, plain text and sections), company social links and header image. Turn off for smaller, faster runs.
maxResultsPerSearchintegerOptionaldefault 0Max results per search
Cap for each keyword or URL, so one broad search doesn't use up the whole limit. 0 means no cap.
searchModeenumOptionaldefault "SEMANTIC"Search mode
Smart search is what xing.com uses today: it also finds related job titles and synonyms. Classic search ranks by the exact words.
languageenumOptionaldefault "en"Label language
Language of labels such as employment type, career level, discipline and country. Job texts stay in the language they were written in.
splitLargeSearchesbooleanOptionaldefault trueGo beyond 1,000 jobs per search
XING shows at most 1,000 jobs per search. When you ask for more, the search is split by employment type, career level and remote option, and duplicates are removed.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work well for XING.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | string | null | XING job id |
| title | string | null | Job title |
| company | string | null | Company name as shown on the job |
| companyId | string | null | XING company id |
| companyLogo | string | null | Company logo URL |
| companyUrl | string | null | XING company page |
| companySize | string | null | Company size range |
| companyIndustry | string | null | Company industry |
| companyCity | string | null | Company headquarters city |
| companyCountry | string | null | Company headquarters country |
| location | string | null | Primary job city |
| allLocations | array | Every location listed on the job (city, region, country) |
| street | string | null | Street, when published |
| zipCode | string | null | Postal code |
| region | string | null | Region or state |
| country | string | null | Two-letter country code |
| countryName | string | null | Country name |
| cityId | string | null | XING city id |
| workplaceType | string | null | remote, hybrid or onsite |
| isRemote | boolean | null | True for full remote jobs |
| remoteOptions | array | XING remote options (FULL_REMOTE, PARTLY_REMOTE, NON_REMOTE) |
| commitment | string | null | Employment type, for example Full-time |
| employmentTypeId | string | null | XING employment type id |
| level | string | null | Career level |
| careerLevelId | string | null | XING career level id |
| discipline | string | null | Job discipline |
| disciplineId | string | null | XING discipline id |
| industry | string | null | Job industry |
| industryId | string | null | XING industry id |
| salaryMin | number | null | Minimum yearly salary |
| salaryMax | number | null | Maximum yearly salary |
| salaryMedian | number | null | Median of a XING salary estimate |
| salaryCurrency | string | null | Salary currency |
| salaryPeriod | string | null | Salary period (year) |
| salaryType | string | null | range (from the employer), estimate (XING estimate) or fixed |
| salaryIsEstimate | boolean | null | True when the salary is XING's estimate rather than the employer's figure |
| salaryText | string | null | Readable salary |
| postedAt | string | null | Date the job was published or last refreshed |
| activatedAt | string | null | First activation time |
| activeUntil | string | null | Listing end date |
| jobUrl | string | null | XING job page |
| applyUrl | string | null | External application link |
| applyEmail | string | null | Application email, when published |
| applicationType | string | null | external, xing, email or message |
| redirectsToThirdParty | boolean | null | Job page redirects to another site |
| keywords | array | Job keywords from XING |
| language | string | null | Language of the posting |
| jobCode | string | null | Employer job reference |
| paid | boolean | null | Paid listing |
| topJob | boolean | null | Top job |
| prioritized | boolean | null | Prioritized listing |
| highlight | string | null | Badge shown in search, for example Last chance |
| summary | string | null | XING's short summary of the job |
| keyResponsibilities | array | Key responsibilities summary |
| qualifications | array | Qualifications summary |
| descriptionType | string | null | html, template or external |
| descriptionHtml | string | null | Full description HTML |
| descriptionText | string | null | Full description as plain text |
| descriptionSections | array | Description sections [{title, text}] |
| socialUrls | object | null | Company social links from the posting |
| videoUrls | object | null | Video links from the posting |
| headerImage | string | null | Header image of the posting |
| footerImage | string | null | Footer image of the posting |
| externalDescriptionUrl | string | null | External description page |
| slug | string | null | Job URL slug |
| globalId | string | null | XING global job id |
| searchQuery | string | null | Keyword or URL that found the job |
| searchPosition | number | null | Position in the search results page |
| searchTotal | number | null | Total matches XING reported for the search |
| source | string | null | Always xing |
| scrapedAt | string | null | Scrape time |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Job | One saved XING job listing. | $0.0007 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/xing-jobs-scraper').call({
"searchQueries": [
"Software Developer"
],
"location": "Berlin",
"startUrls": [],
"maxResults": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/xing-jobs-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/xing-jobs-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Full-time remote or hybrid jobs with German labels.
Jobs posted last week that show a salary.
Jobs from a pasted XING search URL.
Jobs anywhere in Switzerland.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.