Arbeitsagentur Jobs Scraper - German Jobbörse (Public API) avatar

Arbeitsagentur Jobs Scraper - German Jobbörse (Public API)

Pricing

from $1.00 / 1,000 job listings

Go to Apify Store
Arbeitsagentur Jobs Scraper - German Jobbörse (Public API)

Arbeitsagentur Jobs Scraper - German Jobbörse (Public API)

Scrape Germany's official job board (Bundesagentur für Arbeit Jobbörse) via its public API: every filter incl. radius, Ausbildung, part-time, employer, home office; parsed geo and salary; optional full descriptions; only-new-jobs feed. No login.

Pricing

from $1.00 / 1,000 job listings

Rating

0.0

(0)

Developer

rj

rj

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Categories

Features

Limited permissions

Share

Arbeitsagentur Jobs Scraper - Germany's Official Job Board (Jobbörse)

Scrape job listings from the Bundesagentur für Arbeit Jobbörse (arbeitsagentur.de), Germany's largest job board with around a million vacancies, apprenticeships (Ausbildung) and internships. Search with the same filters as the website: keywords, city or postcode, radius, offer type (job, Ausbildung / duales Studium, Praktikum / trainee, self-employment), working time (full-time, part-time, shift, mini-job), permanent or temporary contract, published in the last N days, employer and home office. You get clean JSON with English field names, parsed geo coordinates, numeric salary and apprenticeship pay per year. Add full job descriptions as a cheap optional extra, and use Only new jobs to turn a daily schedule into a feed of fresh vacancies.

Why this one: every Jobbörse filter in one place, full descriptions only when you want them (and only charged when they're fetched), an only-new-jobs feed without a monitor fee, no start fee, and $0.001 per job. Contact persons, emails and phone numbers are never output.

This is an unofficial tool. It uses the public Jobbörse API (the open-data key documented on bund.dev), not a login.

What data can you get?

FieldExample
id (Referenznummer), url10001-1003891446-S, https://www.arbeitsagentur.de/jobsuche/jobdetail/10001-1003891446-S
title, employerSoftwareentwicklerin (w/m/d), GASAG AG
profession, professionsSoftwareentwickler/in
offerTypejob, apprenticeship, internship, selfEmployment
location {street, zip, city, region, country, lat, lon}, otherLocationsEUREF-Campus 23-24, 10829, Berlin, BERLIN, 52.48, 13.36
distanceKmDistance from the searched location
workingTime["fullTime", "partTimeMorning", "shiftNightWeekend", "miniJob", ...]
homeOfficePossible, homeOfficePercenttrue, 50
contractType, contractMonthstemporary, 24
salaryMin, salaryMax, salaryPeriod, salaryCurrency72600, 72600, year, EUR
apprenticeshipPayMonthly[1050, 1239, 1418, 1470] (EUR per training year)
suitableForCareerChangersQuereinstieg possible
publishedAt, firstPublishedAt, modifiedAt, entryDate2026-10-21
externalUrlOriginal ad on the employer's or a partner's site
description*Full job description (Markdown)
isTempAgency*, isPrivatePlacement*Zeitarbeit / private recruiter flags
requiredEducation*, sourcePartner*HAUPTSCHULABSCHLUSS, Studyflix GmbH
detailsStatus, searchQuery, scrapedAtProvenance and status

* Needs Fetch full job details.

Use cases

  • Job boards and aggregators: repost Jobbörse vacancies with a daily Only new jobs feed.
  • Recruiting and staffing agencies: find which employers are hiring which professions, where, and with which contract.
  • Ausbildung and dual-study portals: list apprenticeships with training pay per year and required school certificate.
  • Salary and labour-market research: pay ranges, part-time and home-office share, temporary vs permanent mix by city and profession.
  • Lead generation (company level): employers hiring in your niche, with company address and coordinates.

How to use

  1. Enter one or more Search queries (each is a separate search; German job titles work best) and a Location (city or postcode).
  2. Optionally set Radius, Offer type, Working time, Contract, Published in the last N days, Employer or Home office only.
  3. Set Max jobs per search and, if you want descriptions, turn on Fetch full job details.
  4. Run, then download the results as JSON, CSV, Excel or via the API.

Software developer jobs in Berlin:

{ "queries": ["Softwareentwickler"], "location": "Berlin", "maxItems": 15 }

Apprenticeships (Ausbildung) as Mechatroniker near Munich:

{ "queries": ["Mechatroniker"], "location": "München", "radiusKm": 50, "offerType": "apprenticeship", "maxItems": 50 }

Part-time permanent nursing jobs in Hamburg from the last 7 days, with descriptions:

{ "queries": ["Pflegefachkraft"], "location": "Hamburg", "employmentTypes": ["partTime"], "contractType": "permanent",
"publishedSinceDays": 7, "fetchDetails": true, "maxItems": 100 }

Daily feed of new jobs at one employer:

{ "employer": "Deutsche Bahn AG", "maxItems": 0, "onlyNew": true, "stateKey": "deutsche-bahn" }

Output example

{
"id": "10001-1003891446-S",
"title": "Softwareentwicklerin (w/m/d)",
"employer": "GASAG AG",
"profession": "Softwareentwickler/in",
"professions": [
"Softwareentwickler/in"
],
"offerType": "job",
"location": {
"street": "EUREF-Campus 23-24",
"zip": "10829",
"city": "Berlin",
"region": "BERLIN",
"country": "DEUTSCHLAND",
"lat": 52.480611,
"lon": 13.356027
},
"otherLocations": [],
"distanceKm": 6,
"workingTime": [
"fullTime"
],
"homeOfficePossible": true,
"homeOfficePercent": 50,
"contractType": "temporary",
"contractMonths": 24,
"salaryMin": 72600,
"salaryMax": 72600,
"salaryPeriod": "year",
"salaryCurrency": "EUR",
"apprenticeshipPayMonthly": null,
"suitableForCareerChangers": null,
"publishedAt": "2026-10-21",
"firstPublishedAt": "2026-10-21",
"modifiedAt": "2026-10-22T12:54:32.215",
"entryDate": "2026-10-22",
"externalUrl": null,
"url": "https://www.arbeitsagentur.de/jobsuche/jobdetail/10001-1003891446-S",
"description": "Wir suchen dich an unserem Standort in Berlin-Schöneberg **zum nächstmöglichen Zeitpunkt,befristet für 2 Jahre und in Vollzeit (38,5h)** als\n\n## **Softwareentwi...",
"isTempAgency": null,
"isPrivatePlacement": null,
"requiredEducation": null,
"sourcePartner": null,
"detailsStatus": "ok",
"searchQuery": "Softwareentwickler",
"scrapedAt": "2026-11-06T12:25:36.021Z"
}

Pricing

Pay per event, no start fee, no monthly fee:

EventPriceWhen
job$0.001Each job listing output
job-details$0.0005Each job whose full details were fetched (Fetch full job details on)
  • 1,000 jobs ≈ $1.00
  • 1,000 jobs with full descriptions ≈ $1.50
  • Only new jobs has no surcharge: you pay only for the new jobs that are output.
  • Set Maximum cost per run in the run options; the Actor stops cleanly when it is reached.
  • A job whose details couldn't be fetched (expired, refused) is not charged job-details.

Tips and limits

  • Results come in the Jobbörse's own order (relevance/distance), 100 per API page.
  • Home office only is applied after fetching, because the Jobbörse API has no working home-office filter. The run reads up to 30 pages per search (3,000 listings) to find matches, and only home-office jobs are output and charged. Many employers don't state home office at all (homeOfficePossible: null); those are excluded.
  • Employer must match the name as shown on the Jobbörse (e.g. "Deutsche Bahn AG").
  • Salary is only present when the employer gives it; salaryPeriod is year, month or hour. Apprenticeship pay is in apprenticeshipPayMonthly.
  • modifiedAt is German local time without a time zone, exactly as the API returns it. Dates are YYYY-MM-DD.
  • detailsStatus tells you per job whether details were fetched (ok), the job had expired (not-found) or the request failed/was refused. RUN_SUMMARY in the key-value store counts these.
  • For Only new jobs, use a different State key per feed. Seen jobs are forgotten after 90 days. Feed runs read at most 30 pages (3,000 listings) per search, so keep each search narrower than that.
  • Not available from the public API: number of open positions, company size and industry.

FAQ

Is it legal? The Actor reads only public job listings through the Jobbörse's public API, without logging in. It does not collect personal data: contact-person fields are never output (only an allow-list of job fields is copied), and email addresses, phone numbers (including WhatsApp links) and contact names in descriptions are replaced with [email removed], [phone removed] and [name removed]. Name removal is pattern-based (salutations such as "Frau ...", labels such as "Ansprechpartner: ..."), so an unusual phrasing can slip through; report it and we'll add the pattern. Employer company name and address are kept. You are responsible for using the data in line with GDPR, the Bundesagentur's terms and other laws that apply to you.

Is this an official Bundesagentur für Arbeit product? No. It's an independent tool that uses the public Jobbörse API (key jobboerse-jobsuche, documented at bund.dev).

Do I need a proxy? Normally not. If you see HTTP 403/429, enable Apify Proxy (datacenter). Residential proxies are not supported: if you pick the RESIDENTIAL group, the Actor logs a warning and uses Apify datacenter proxy instead.

Can I search several job titles at once? Yes. Each query is a separate search with its own Max jobs per search limit; a job found by several searches is output once per run.

Why are description and some flags null? They come from the job-details request, so they're null unless Fetch full job details is on.

Can I search in English? The Jobbörse is German: "Softwareentwickler" finds far more than "software developer". Output field names are English.

Integrations

  • API: run the Actor and fetch the dataset with the Apify API or the apify-client libraries for JavaScript and Python.
  • Make, Zapier, n8n: run it on a schedule and send new jobs to Google Sheets, Airtable, Slack or email.
  • MCP: AI agents can call this Actor through the Apify MCP server (mcp.apify.com).
  • Webhooks: get notified when a run finishes and pull the new items.

Changelog

  • 0.1 (November 2026): first release. All Jobbörse search filters, parsed geo and salary, optional full details, Only new jobs mode.

Ready-to-run examples

More scrapers by the same developer

Browse all my Actors on my Apify Store profile.

Support

Found a search that doesn't work, or need an extra field? Open an issue on the Issues tab with your input. Fixes are usually quick.