Arbeitsagentur Scraper — German Federal Job Board avatar

Arbeitsagentur Scraper — German Federal Job Board

Pricing

from $1.50 / 1,000 job results

Go to Apify Store
Arbeitsagentur Scraper — German Federal Job Board

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

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

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

How Arbeitsagentur Scraper 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 structured salary object 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

WhoWhat for
Recruiters & staffing agenciesMonitor fresh postings in a region or profession; identify employers hiring at scale
Job boards & aggregatorsSyndicate German federal job data into your own product with stable structured fields
HR-tech & analytics teamsTrack labour-market demand by profession, region, and contract type over time
Ausbildung platformsPull every apprenticeship offer (angebotsart=4) with employer contacts and locations
Lead generationFind companies that are actively hiring — each row carries the employer name, profile, and website
Researchers & journalistsStudy the German labour market with coordinates, working-time, and contract metadata

📥 Supported inputs

InputExampleWhat happens
Search URLhttps://www.arbeitsagentur.de/jobsuche/suche?was=Software&wo=BerlinWalks all result pages, scrapes each job
Search URL with any site filters...suche?angebotsart=4&wo=Hamburg&umkreis=25Filters pass through unchanged
Direct job URLhttps://www.arbeitsagentur.de/jobsuche/jobdetail/12444-563465373301945-DT-SScrapes 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

  1. Classify every start URL — search page vs direct job detail.
  2. Walk each search's result pages (25 jobs per page) and collect job reference numbers, streaming details in parallel while pagination continues.
  3. Fetch each job's detail page and parse the complete job record from the page's embedded server-side JSON — no fragile DOM selectors.
  4. Merge the employer self-presentation (description, homepage, career links) and all job locations with coordinates into the same row.
  5. Push one normalized row per job to the dataset — JSON, CSV, or Excel export via the Apify platform.

⚙️ Input parameters

FieldTypeDefaultDescription
startUrlsarrayJobsuche search URLs and/or direct job URLs. When set, the filters below are ignored
keywordstringSearch keyword (was) — title, skill, or profession
locationstringCity, region, or postcode (wo)
radiusKmintegerRadius around the location in km (up to 200)
offerTypestringjobjob, self-employment, apprenticeship, or internship-trainee
publishedSinceDaysintegerSite-side filter: only offers published in the last N days
workingTimearrayfull-time, part-time, shift-night-weekend, home-office, mini-job
postedWithinHoursintegerPost-scrape recency gate (24 = last day) for monitoring runs
enrichEmailsbooleanfalseExperimental: discover an employer contact email from the company website
maxItemsinteger1000Hard cap on jobs collected
maxConcurrencyinteger10Parallel detail fetches
proxyobjectApify autoProxy 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

GroupFields
IdentityjobId / refNumber (the site's referenznummer), jobUrl, title, offerType, cipherNumber
Professionprofession (the BA's official classification), alternativeProfessions
CompanycompanyName, companyWebsite, companyDomain, companyDescription, companyLinks[], employerHash
Partner attributionpartnerName, partnerUrl — the syndicating partner board when the posting came via one
Locationlocation, postcode, region, country, coordinates (lat/lng), locations[] — every advertised site with its own coordinates
Working timeemploymentTypes[], workingTime{} flags, homeOfficePossible, remote, contractType (permanent / fixed-term), isMarginalEmployment
DatespostedDate, firstPublishedDate, modifiedDate, entryDate, closingDate
Apply flowapplyType (internal / external / email), applyUrl, applyEmail, externalApplyUrl — the direct employer application link when the posting uses one
Mined from descriptionextractedEmails[], extractedPhones[], extractedUrls[] — recruiter contacts found in the posting text; salary{min, max, currency, unit, raw} — parsed German wage figures (hourly/monthly/yearly)
SignalsisStaffingAgency (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