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

Scrape Jobware.de job listings by keyword, city, radius and filters, or from search and job URLs. Get title, company, location, state, posting and expiry dates, working time, home office, the full ad text, salary, application email and contact person.
Scrape job listings from Jobware.de, the German job board for professionals and managers. Search by keyword, city and radius with Jobware's own filters, and get clean rows with the title, company, city, federal state, posting and expiry dates, working time, home office, the full ad text, salary, application email and contact person. No login, no browser, and you only pay for the jobs you save.
Software Engineer, Pflegefachkraft, Controller) and optionally a city or region (e.g. Berlin, München, Bayern).| Field | What it does |
|---|---|
searchQueries | Keywords, one search each. Jobs found by several keywords are saved once. |
city | German city or federal state. Empty means all of Germany. |
maxResults | Maximum jobs to save in total (0 = no limit). |
includeDetails | Open each job ad for the full text, expiry date, salary and contacts. |
startUrls | Jobware.de search pages (/jobs--fuer-...) or job pages (/job/<title>-<number>). |
radius | Distance around the city in km (0–200, default 25). |
employmentType | Full-time, part-time, working student, internship or apprenticeship. |
experienceLevel / jobField / remoteOnly | Jobware's work-experience, job-field and home-office filters. |
maxAgeHours | Only jobs published in the last N hours. |
sortBy | relevance or date (newest first). |
maxResultsPerQuery | Optional limit for each keyword or URL. |
{
"searchQueries": ["Software Engineer", "Data Engineer"],
"city": "Berlin",
"radius": 25,
"maxResults": 100,
"includeDetails": true,
"employmentType": "vollzeit",
"sortBy": "date"
}
One row per job.
| Field | Description |
|---|---|
id, job_id, reference | Jobware job id (jw-<id>), numeric id and 9-digit reference |
title, company, company_logo_url | Job title and employer |
location, locations, canton, state, address, latitude, longitude | City (and all cities of a multi-location job), federal state code and name, address and coordinates when the ad has them |
employment_type, job_types, workload_min, workload_max, remote_option | Full-time, part-time, internship, working student or apprenticeship; Jobware's working-time tags; home office (hybrid) |
posted_at, expires_at | Publication date and the date the ad goes offline (details) |
description_snippet, description_full, description_html | Short summary, full ad text and ad HTML (details) |
salary_text, salary_min, salary_max, salary_currency, salary_period, salary_source | Salary when the ad states one (details) |
apply_type, apply_url, apply_email | How to apply: Jobware's apply link and the application email |
contact_salutation, contact_firstname, contact_lastname, contact_raw, contact_email, contact_phone | Contact person and phone from the ad (details) |
company_url | Company website mentioned in the ad (details) |
content_source | Who supplied the ad text, e.g. Bundesagentur für Arbeit |
source_url, ad_url | Jobware job page and the public ad page |
search_query, scraped_at, details_included | Which keyword or URL found the job, when, and whether details were loaded |
Example (trimmed, fictional contact):
{
"id": "jw-2065841245",
"reference": "064585698",
"title": "IT-Supporter (m/w/d)",
"company": "Beispiel Technik GmbH",
"location": "Berlin",
"canton": "BE",
"state": "Berlin",
"employment_type": "full-time",
"job_types": ["Homeoffice Option", "Vollzeit"],
"remote_option": "hybrid",
"posted_at": "2026-10-12T23:38:20.000Z",
"expires_at": "2027-01-10T22:59:59.000Z",
"salary_text": "3.800 - 4.400 €",
"salary_min": 3800,
"salary_max": 4400,
"salary_currency": "EUR",
"salary_period": "month",
"apply_email": "jobs@beispiel-technik.de",
"contact_salutation": "Frau",
"contact_firstname": "Anna",
"contact_lastname": "Muster",
"contact_phone": "030 1234567",
"company_url": "https://www.beispiel-technik.de",
"description_full": "IT-Supporter (m/w/d)\nUnternehmen: Beispiel Technik GmbH\nArbeitszeitmodell: Vollzeit\n...",
"source_url": "https://www.jobware.de/job/it-supporter-m-w-d-064585698",
"search_query": "Software Engineer",
"details_included": true
}
Pay per job saved, plus a small amount of platform usage:
job-detail): $7.00 per 1,000 jobs.job-listing, details off): $3.00 per 1,000 jobs.Example: 1,000 jobs with full details cost $7.00 in job fees plus about $0.01 of platform usage (a test run of 1,000 detailed jobs used $0.007 and took 26 seconds). 1,000 list-only jobs cost $3.00 plus less than $0.01. Jobs whose ad page cannot be loaded are saved without the ad text and charged at the list-only price.
Is it legal to scrape Jobware.de? The actor only reads public job ads that anyone can open without an account. Check that your use of the data, especially of contact details, follows the GDPR and your local law.
Do I need a login or a proxy? No login. The default datacenter proxy works; if Jobware starts refusing requests the run moves to German residential exits by itself.
How many results can I get? As many as Jobware has: set Max results to 0 for no limit. Jobware returns at most 5,000 jobs per search, so for bigger searches the actor also searches by date order and, without a city, state by state, and saves each job once.
Why is a field empty? Salary, contact person, phone and company website come from the ad text and are only filled when the employer wrote them into the ad. List-only mode skips the ad text entirely.
Can I schedule it or use the API?
Yes. Schedule a daily run with sortBy: "date" and maxAgeHours: 26 to get only new jobs, and start runs or read results through the API.
.../job/<title>.<number>.html belong to retired ads and are skipped.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, one per line, e.g. Software Engineer, Pflegefachkraft, Controller. Each keyword is a separate search; jobs found by several keywords are saved once. Leave empty to list every job in the city or matching the filters.
citystringOptionalCity or region
German city or federal state, e.g. Berlin, München, Hamburg, Köln, Bayern. Leave empty for all of Germany.
maxResultsintegerOptionaldefault 20Max results
Maximum number of jobs to save across all keywords and URLs. 0 means no limit.
includeDetailsbooleanOptionaldefault trueInclude full job details
Open each job ad for the full description (text and HTML), expiry date, salary, application email, contact person and phone, and the company website. Turn off for a faster and cheaper list with title, company, location, date, working time and the apply link.
startUrlsarrayOptionalSearch or job URLs
Jobware.de search pages copied from your browser (https://www.jobware.de/jobs--fuer-controller--in-hamburg) or job pages (https://www.jobware.de/job/-). Searches run with the filters below.
radiusintegerOptionaldefault 25Radius (km)
Search radius around the city in kilometres (0 to 200). Jobware offers distances up to 200 km.
employmentTypeenumOptionaldefault ""Employment type
Only jobs of this employment type.
experienceLevelenumOptionaldefault ""Work experience
Only jobs asking for this much work experience.
jobFieldenumOptionaldefault ""Job field
Only jobs in this occupational field.
remoteOnlybooleanOptionaldefault falseHome office only
Only jobs that offer working from home.
maxAgeHoursintegerOptionalMax job age (hours)
Only jobs published in the last N hours, e.g. 26 for a daily schedule or 192 for a weekly one. With sort order 'Newest first' the search stops once it reaches older jobs. Leave empty for any age.
sortByenumOptionaldefault "relevance"Sort order
Order in which Jobware returns the jobs.
maxResultsPerQueryintegerOptionaldefault 0Max results per keyword
Limit for each keyword or URL on its own. 0 means only Max results applies.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Proxy servers used to reach Jobware.de. Datacenter works well; the run moves to German residential exits by itself if Jobware starts refusing requests.
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 | |
| job_id | string | null | |
| reference | string | null | |
| title | string | null | |
| company | string | null | |
| company_logo_url | string | null | |
| location | string | null | |
| locations | array | null | |
| canton | string | null | |
| state | string | null | |
| address | string | null | |
| latitude | number | null | |
| longitude | number | null | |
| country | string | null | |
| job_status | string | null | |
| employment_type | string | null | |
| job_types | array | null | |
| workload_min | number | null | |
| workload_max | number | null | |
| remote_option | string | null | |
| salary_text | string | null | |
| salary_min | number | null | |
| salary_max | number | null | |
| salary_currency | string | null | |
| salary_period | string | null | |
| salary_source | string | null | |
| description_snippet | string | null | |
| description_full | string | null | |
| description_html | string | null | |
| posted_at | string | null | |
| expires_at | string | null | |
| source_url | string | null | |
| ad_url | string | null | |
| source_platform | string | null | |
| content_source | string | null | |
| apply_type | string | null | |
| apply_url | string | null | |
| apply_email | string | null | |
| contact_salutation | string | null | |
| contact_firstname | string | null | |
| contact_lastname | string | null | |
| contact_email | string | null | |
| contact_phone | string | null | |
| contact_raw | string | null | |
| company_url | string | null | |
| search_query | string | null | |
| details_included | boolean | null | |
| scraped_at | string | null |
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 with full details | One job saved with the full ad text, expiry date, salary and contacts (Include full job details on). | $0.007 |
| Job (list only) | One job saved from the search results without opening the ad (details off, or the ad page could not be loaded). | $0.003 |
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/jobware-scraper').call({
"searchQueries": [
"Software Engineer"
],
"city": "Berlin",
"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/jobware-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/jobware-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
No examples yet
The developer hasn't published example inputs for this actor.
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.