Arbeitsagentur Scraper — German Federal Job Board
Pricing
from $1.50 / 1,000 job results
Arbeitsagentur Scraper — German Federal Job Board
Scrape jobs from arbeitsagentur.de — Germany's federal job board with 1M+ offers. Full description, employer profile + website, coordinates, parsed salary, recruiter emails & phones, and the external apply URL. Jobs, Ausbildung, Praktikum. Any URL or keyword filters. JSON/CSV out.
Pricing
from $1.50 / 1,000 job results
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Share
Arbeitsagentur Scraper — German Federal Job Board (Bundesagentur für Arbeit)
Extract structured job data from arbeitsagentur.de — Germany's largest job board, run by the Federal Employment Agency with over a million live offers. Get the full description, employer profile, precise coordinates, working-time flags, and the external apply URL for every job — regular positions, apprenticeships (Ausbildung), internships, and self-employment offers alike. Paste any Jobsuche search URL or use the built-in keyword/location filters; results arrive as clean JSON or CSV, one row per job.
How it works

✨ Why use this scraper?
- Germany's biggest job source — the Bundesagentur für Arbeit aggregates 1M+ offers nationwide, including postings syndicated from partner boards (HeyJobs, Softgarden, employer ATS feeds).
- Complete rows in one fetch — full description, employer self-presentation with homepage link, lat/lng coordinates, and all working-time flags come from a single page load. No follow-up calls, no missing columns.
- External apply URL captured — when a posting redirects to the employer's own application page, the direct URL lands in
externalApplyUrl. - Contacts and wages mined from descriptions — recruiter emails, phone numbers, and URLs are extracted into
extractedEmails/extractedPhones/extractedUrls, and German wage strings ("12,82 EUR/Std.", "2.800 € bis 3.200 € monatlich") are parsed into a structuredsalaryobject with min/max, currency, and pay period. - All four offer types — regular jobs (Arbeit), apprenticeships (Ausbildung/Duales Studium), internships/trainee positions (Praktikum), and self-employment (Selbständigkeit).
- Search exactly like the site — keyword, location, radius, offer type, publication age, and working-time filters map 1:1 to the site's own search form; or paste any Jobsuche URL with your filters already applied.
- No browser, no drama — the data comes from the page's embedded server-side JSON, so runs are fast, cheap, and resilient to cosmetic layout changes.
🎯 Use cases
| Who | What for |
|---|---|
| Recruiters & staffing agencies | Monitor fresh postings in a region or profession; identify employers hiring at scale |
| Job boards & aggregators | Syndicate German federal job data into your own product with stable structured fields |
| HR-tech & analytics teams | Track labour-market demand by profession, region, and contract type over time |
| Ausbildung platforms | Pull every apprenticeship offer (angebotsart=4) with employer contacts and locations |
| Lead generation | Find companies that are actively hiring — each row carries the employer name, profile, and website |
| Researchers & journalists | Study the German labour market with coordinates, working-time, and contract metadata |
📥 Supported inputs
| Input | Example | What happens |
|---|---|---|
| Search URL | https://www.arbeitsagentur.de/jobsuche/suche?was=Software&wo=Berlin | Walks all result pages, scrapes each job |
| Search URL with any site filters | ...suche?angebotsart=4&wo=Hamburg&umkreis=25 | Filters pass through unchanged |
| Direct job URL | https://www.arbeitsagentur.de/jobsuche/jobdetail/12444-563465373301945-DT-S | Scrapes that one job |
| Built-in filters (no URL) | keyword: "Pflege", location: "Hamburg", offerType: "apprenticeship" | Builds the search URL for you |
Not supported: other arbeitsagentur.de services (Berufenet profiles, training courses / Weiterbildungssuche, employer accounts), and any content that requires a login.
🔄 How it works
- Classify every start URL — search page vs direct job detail.
- Walk each search's result pages (25 jobs per page) and collect job reference numbers, streaming details in parallel while pagination continues.
- Fetch each job's detail page and parse the complete job record from the page's embedded server-side JSON — no fragile DOM selectors.
- Merge the employer self-presentation (description, homepage, career links) and all job locations with coordinates into the same row.
- Push one normalized row per job to the dataset — JSON, CSV, or Excel export via the Apify platform.
⚙️ Input parameters
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | — | Jobsuche search URLs and/or direct job URLs. When set, the filters below are ignored |
keyword | string | — | Search keyword (was) — title, skill, or profession |
location | string | — | City, region, or postcode (wo) |
radiusKm | integer | — | Radius around the location in km (up to 200) |
offerType | string | job | job, self-employment, apprenticeship, or internship-trainee |
publishedSinceDays | integer | — | Site-side filter: only offers published in the last N days |
workingTime | array | — | full-time, part-time, shift-night-weekend, home-office, mini-job |
postedWithinHours | integer | — | Post-scrape recency gate (24 = last day) for monitoring runs |
enrichEmails | boolean | false | Experimental: discover an employer contact email from the company website |
maxItems | integer | 1000 | Hard cap on jobs collected |
maxConcurrency | integer | 10 | Parallel detail fetches |
proxy | object | Apify auto | Proxy configuration; default works fine |
📊 Output overview
Each dataset row is one job. The canonical core (identity, company, location, dates, description, apply flow) is always present — fields the source doesn't provide are null, never missing. Arbeitsagentur-specific extras follow the core: profession classification, all job locations with coordinates, working-time flags, employer self-presentation, partner-board attribution, flags like isStaffingAgency / suitableForCareerChangers, plus contacts and wage figures mined from the description text (extractedEmails, extractedPhones, extractedUrls, structured salary).
📦 Output sample
Real row (trimmed) from a live run:
{"type": "job","source": "arbeitsagentur.de","jobId": "12444-563465373301945-DT-S","jobUrl": "https://www.arbeitsagentur.de/jobsuche/jobdetail/12444-563465373301945-DT-S","title": "Senior SAP Software Architect (m/w/d)","companyName": "Deutsche Telekom AG","companyWebsite": "http://www.telekom.com/","companyDomain": "telekom.com","location": "Magdeburg","remote": false,"employmentTypes": ["full-time"],"postedDate": "2026-07-12","modifiedDate": "2026-07-13T12:01:24.433","description": "**Über T-Systems International GmbH**\nBei T-Systems bieten wir unseren Geschäftskunden die richtigen Systemlösungen für ihr digitales Business. …","applyType": "internal","applyUrl": "https://www.arbeitsagentur.de/jobsuche/jobdetail/12444-563465373301945-DT-S","externalApplyUrl": null,"refNumber": "12444-563465373301945-DT-S","offerType": "job","profession": "Software-Architect","companyDescription": "Die Deutsche Telekom ist Europas größtes Telekommunikationsunternehmen und weltweit in mehr als 50 Ländern vertreten. …","companyLinks": [{ "url": "http://www.telekom.com", "kind": "Homepage" },{ "url": "https://karriere.telekom.com/berufseinstieg", "kind": "Karriereseite" }],"partnerName": "Deutsche Telekom AG","postcode": "39124","region": "SACHSEN_ANHALT","country": "DEUTSCHLAND","coordinates": { "latitude": 52.1577066, "longitude": 11.6419235 },"locations": [{ "postcode": "39124", "city": "Magdeburg", "region": "SACHSEN_ANHALT", "country": "DEUTSCHLAND", "coordinates": { "latitude": 52.1577066, "longitude": 11.6419235 } },{ "postcode": "80335", "city": "München", "region": "BAYERN", "country": "DEUTSCHLAND", "coordinates": { "latitude": 48.1450237, "longitude": 11.5540846 } }],"workingTime": { "fullTime": true, "partTimeFlexible": false, "shiftNightWeekend": false },"homeOfficePossible": false,"suitableForCareerChangers": false,"isStaffingAgency": false,"isPrivateRecruiter": false,"entryDate": "2026-07-12","extractedEmails": [],"extractedPhones": [],"salary": null,"scrapedAt": "2026-07-14T04:08:57.540Z"}
Staffing-agency postings additionally carry mined contacts and parsed wages (real values from the same run):
{"title": "Reinigungskraft (m/w/d)","companyName": "Aleksander Djoric NEW Gebäudereinigung","salary": { "currency": "EUR", "min": 15, "max": 15, "unit": "hour", "raw": "15,00 €" }}
{"title": "Reinigungskraft (m/w/d)","companyName": "ISD Immobilien Service Deutschland GmbH & Co. KG","applyType": "email","applyEmail": "bewerbermanagement@isd-service.de","extractedEmails": ["bewerbermanagement@isd-service.de"],"extractedPhones": ["030/89775634"]}
🗂 Key output fields
| Group | Fields |
|---|---|
| Identity | jobId / refNumber (the site's referenznummer), jobUrl, title, offerType, cipherNumber |
| Profession | profession (the BA's official classification), alternativeProfessions |
| Company | companyName, companyWebsite, companyDomain, companyDescription, companyLinks[], employerHash |
| Partner attribution | partnerName, partnerUrl — the syndicating partner board when the posting came via one |
| Location | location, postcode, region, country, coordinates (lat/lng), locations[] — every advertised site with its own coordinates |
| Working time | employmentTypes[], workingTime{} flags, homeOfficePossible, remote, contractType (permanent / fixed-term), isMarginalEmployment |
| Dates | postedDate, firstPublishedDate, modifiedDate, entryDate, closingDate |
| Apply flow | applyType (internal / external / email), applyUrl, applyEmail, externalApplyUrl — the direct employer application link when the posting uses one |
| Mined from description | extractedEmails[], extractedPhones[], extractedUrls[] — recruiter contacts found in the posting text; salary{min, max, currency, unit, raw} — parsed German wage figures (hourly/monthly/yearly) |
| Signals | isStaffingAgency (Arbeitnehmerüberlassung), isPrivateRecruiter, suitableForCareerChangers, forSeverelyDisabled |
| Enrichment (opt-in) | contactEmail, contactWebsite, emailEnrichment{} |
❓ FAQ
How many jobs can I scrape?
The site reports ~1M+ live offers nationwide. A single search caps at what the site itself will paginate; split large pulls by region, profession, or offer type for full coverage. Use maxItems to control billing.
Does it include apprenticeships (Ausbildung)?
Yes — set offerType: "apprenticeship" (or paste a search URL with angebotsart=4). Internships/trainee positions and self-employment offers work the same way.
Is the salary included?
The site has no structured salary field, but many postings (especially staffing agencies) state wages in the description text — those are parsed into salary with min/max, currency, and unit (hour/month/year), with the original string kept in salaryRaw. Postings with no stated wage have salary: null.
What do the applyType values mean?
external — the posting links out to the employer's own application page (URL in externalApplyUrl). email — no external link, but a contact email was found in the description (in applyEmail). internal — applications go through the job's arbeitsagentur.de page (applyUrl).
Why do some rows have several locations?
Employers can advertise one posting for multiple sites. Every advertised location is kept, each with its own postcode and coordinates; the top-level location/coordinates are the first one.
Do I need a special proxy? No — the default Apify proxy works. If you ever see repeated 403s, switch the proxy input to RESIDENTIAL with country DE.
💬 Support
- 🐛 Found a bug or need a field added? Open an issue on the actor's Issues tab in Apify Console.
- 💡 Custom requirements (different output shape, scheduled deliveries, other job boards)? Message me through Apify — details in Additional services below.
🛠 Additional services
Need something beyond this actor? I build and maintain custom scraping solutions:
- Custom scrapers for any job board, directory, or listing site
- Data pipelines — scheduled runs, deduplication, delivery to your DB/S3/webhook
- Monitoring setups — daily fresh-postings feeds filtered to your criteria
🔎 Explore more scrapers
More job-board and directory scrapers from the same author are available on my Apify profile — including UK boards (CharityJob, Goodmoves, s1jobs, TotalJobs), business directories, and real-estate portals.
⚠️ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the Bundesagentur für Arbeit (German Federal Employment Agency) or any of its subsidiaries or partner job boards. All trademarks mentioned are the property of their respective owners.
The scraper accesses only publicly available job listing pages — no authenticated endpoints, employer-only features, or content behind an arbeitsagentur.de login. Users are responsible for ensuring their use complies with arbeitsagentur.de's terms of use, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organisation.
SEO Keywords
arbeitsagentur scraper, scrape arbeitsagentur, arbeitsagentur api, bundesagentur für arbeit scraper, jobsuche scraper, german job board scraper, germany jobs api, scrape german jobs, jobbörse scraper, ausbildung scraper, apprenticeship data germany, german labour market data, job postings dataset germany, recruiting data germany, hiring trends germany, job market analytics, stellenangebote scraper, arbeitsagentur jobs export, Apify arbeitsagentur, indeed germany alternative scraper, stepstone alternative scraper