Jobware APIjobware.de ↗
Search German job postings on Jobware.de by keyword, location, and filters. Fetch full job descriptions, salary, and apply URLs via 2 structured endpoints.
What is the Jobware API?
The Jobware.de API provides 2 endpoints for accessing job postings on one of Germany's established job boards. Use search_jobs to query openings by keyword, location, experience level, and working-time type, receiving up to 20 job cards per page with title, company, labels, and job IDs. Use get_job to retrieve the full posting — including plain-text description, salary data, employer details, and apply URL — for any job ID returned by search.
curl -X GET 'https://api.parse.bot/scraper/f10248bd-7acf-4b35-8f42-aaef9a3aeec6/search_jobs?query=Softwareentwickler&location=Berlin' \ -H 'X-API-Key: $PARSE_API_KEY'
Searches job openings on Jobware. Returns one page of up to 20 job cards (title, company, location, labels such as working-time tags, publication timestamp, logo, detail URL and job_id) together with the site's total result count and page count. All inputs are optional; with none given the endpoint returns the site-wide listing. Paging is caller-controlled via `page` (1-based, omitted = first page); `has_more` is true while further pages exist and a page past the end returns an empty `jobs` list with the total still reported. Filters and the search radius are passed to the site, and the returned `heading` echoes how the site interpreted them. Some cards (`requires_login: true`) belong to postings whose full detail page is only shown to signed-in users; the card data is still returned here. `experience` is passed through to the site but its effect could not be confirmed from the page heading during testing.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based result page; each page holds up to 20 jobs. |
| sort | string | Result ordering. |
| query | string | Free-text search: job title, keyword or company name. Omitted = no keyword restriction. |
| ad_type | string | Kind of posting to list (regular jobs, internships/working-student positions, or apprenticeships). |
| location | string | City name or German postal code to search around. Omitted = whole site (no location restriction). |
| radius_km | integer | Search radius around `location` in kilometres; the site accepts 25, 50, 75 or 100. Ignored when no location is given. |
| experience | string | Comma-separated experience-level filters, any of entry (0 years), professional (1-2 years), senior (3-7 years), lead (7+ years). Omitted = no experience filter. |
| working_time | string | Comma-separated working-time filters, any of full_time, part_time, remote (e.g. full_time,remote). Multiple values are OR-ed by the site. Omitted = no working-time filter. |
{
"type": "object",
"fields": {
"jobs": "array of job cards on this page",
"page": "integer, the page returned",
"heading": "the site's result heading, reflecting the interpreted query, location, radius and filters",
"has_more": "boolean, true when a later page exists",
"page_size": "integer, maximum jobs per page (20)",
"total_pages": "integer number of pages available for this search",
"jobs[].is_new": "boolean, true when the site marks the card as new",
"jobs[].job_id": "string numeric posting id; pass unchanged to get_job",
"jobs[].labels": "array of working-time tags shown on the card (e.g. Vollzeit, Teilzeit, Home-Office); may be empty",
"total_results": "integer total number of matching postings reported by the site",
"jobs[].logo_url": "absolute employer logo URL or null",
"jobs[].published_at": "ISO-8601 UTC publication timestamp",
"jobs[].requires_login": "boolean, true when the detail page is only shown to signed-in users"
},
"sample": {
"data": {
"jobs": [
{
"url": "https://www.jobware.de/job/softwareentwickler-net-wpf-im-umfeld-mobiler-arbeitsmaschinen-m-w-d-2047092185",
"title": "Softwareentwickler .NET / WPF im Umfeld mobiler Arbeitsmaschinen (m/w/d)",
"is_new": false,
"job_id": "2047092185",
"labels": [
"Vollzeit"
],
"company": "HYDAC Group",
"location": "Großbeeren bei Berlin",
"logo_url": "https://www.jobware.de/jobresources/logo/395/34395/827/008275827/32/logo.gif",
"published_at": "2026-09-22T05:00:00.000Z",
"requires_login": false
},
{
"url": "https://www.jobware.de/job/softwareentwickler-m-w-d-allgemeinen-2057254275",
"title": "Softwareentwickler (m/w/d) Allgemeinen",
"is_new": true,
"job_id": "2057254275",
"labels": [
"Vollzeit"
],
"company": "PerZukunft Arbeitsvermittlung GmbH & Co. KG",
"location": "Berlin (DE)",
"logo_url": null,
"published_at": "2026-09-25T01:05:23.000Z",
"requires_login": true
}
],
"page": 1,
"heading": "Jobs für „Softwareentwickler“ in Berlin",
"has_more": true,
"page_size": 20,
"total_pages": 4,
"total_results": 79
},
"status": "success"
}
}About the Jobware API
Search Jobs
The search_jobs endpoint accepts any combination of query (free-text keyword or company name), location (German city or postal code), and radius_km (25, 50, 75, or 100 km). Results can be filtered by ad_type to target regular positions, internships, or apprenticeships, and narrowed by experience (entry, professional, senior) and working_time (full_time, part_time, remote) — both accept comma-separated values for multi-value filtering. Each page returns up to 20 job cards (page_size: 20) with fields including job_id, title, labels (e.g. Vollzeit, Home-Office), is_new flag, publication timestamp, logo URL, and the posting's detail URL. The response also includes total_results, total_pages, and has_more for pagination control.
Fetch a Full Job Posting
The get_job endpoint takes a job_id string (as returned in search_jobs results) and returns the complete structured posting. Key response fields include posting.description (full plain-text job description), posting.salary (object with currency, value, and unit when advertised), posting.address (locality, postal_code, region, country), posting.apply_url, posting.date_posted, posting.labels, and employer name, website, and logo. The requires_login boolean signals when a posting is only visible to signed-in Jobware users; in that case posting is null.
Coverage and Scope
Jobware.de is a German-language job board, so postings are primarily in Germany with some listings in Austria and Switzerland. All filter values map to Jobware's own taxonomy — for example, experience levels (entry, professional, senior) and working_time values (full_time, part_time, remote) directly correspond to the site's available filter options. The heading field in search_jobs responses reflects the site's own interpreted query label, which can be useful for confirming how location and keyword inputs were resolved.
The Jobware API is a managed, monitored endpoint for jobware.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when jobware.de changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official jobware.de API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate German job market data by querying
search_jobswith specificqueryandlocationinputs to track posting volumes over time. - Build a job alert system that polls
search_jobswithis_new: truecards to surface recently added postings for a given keyword. - Display salary benchmarks by collecting
posting.salaryfields fromget_jobacross a role category and region. - Filter remote or part-time openings in a specific city by combining
location,radius_km, andworking_time=remote,part_timeinsearch_jobs. - Populate a job aggregator with full descriptions and apply links by chaining
search_jobspagination withget_jobfor each returnedjob_id. - Source apprenticeship listings in a target postal code by setting
ad_typeto the apprenticeship option and providing alocationvalue. - Identify companies actively hiring in a niche by scanning
jobs[].companyfields across multiplesearch_jobsresult pages.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Jobware.de have an official developer API?+
What does `get_job` return when a posting requires a login?+
requires_login is set to true and posting is null. All other fields — url and job_id — are still returned so you can record which postings are gated.Can I filter search results by multiple experience levels or working-time types at once?+
experience and working_time accept comma-separated values in a single request. For example, passing working_time=full_time,remote returns postings tagged with either full-time or remote working arrangements.Does the API cover job postings from outside Germany?+
Can I retrieve company profiles or recruiter contact details beyond what's in a job posting?+
get_job, but standalone company profiles, recruiter directories, or contact data outside individual postings are not exposed. You can fork it on Parse and revise to add an endpoint targeting employer profile pages if that data is needed.