Arbeitsagentur Scraper - German Jobs, Salaries & Employers avatar

Arbeitsagentur Scraper - German Jobs, Salaries & Employers

Pricing

from $1.53 / 1,000 job delivereds

Go to Apify Store
Arbeitsagentur Scraper - German Jobs, Salaries & Employers

Arbeitsagentur Scraper - German Jobs, Salaries & Employers

Scrape jobs, apprenticeships and internships from the German Federal Employment Agency (Bundesagentur für Arbeit) by keyword, city, radius, working time, home office and contract: employer, location with coordinates, salary, start date and full description. Error rows are free.

Pricing

from $1.53 / 1,000 job delivereds

Rating

0.0

(0)

Developer

Scrapewise Data

Scrapewise Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Arbeitsagentur Scraper: German jobs, apprenticeships and internships with salary, employer and location

Arbeitsagentur Scraper collects job offers from the Jobbörse of the German Federal Employment Agency (Bundesagentur für Arbeit), the largest job board in Germany, without an account, cookies or a browser. Each job comes back as one clean row: title, occupation, employer, city, postal code, state and coordinates, working time, home office, contract type, salary when the employer publishes it, start date, publication dates, the partner job board it came from and, by default, the full job description.

It is used to build job market datasets for Germany, to track hiring by region, occupation or employer, to find apprenticeship (Ausbildung) and internship offers, to feed job aggregators and alert bots, and to give recruiting and HR teams a daily list of new openings.

At a glance

WhatPrice
Job deliveredUS$ 1.80 per 1,000 jobs (US$ 0.0018 each)
Run startUS$ 0.005 per run
  • 500 jobs with full descriptions = US$ 0.905. The description, the source partner and the employer profile cost nothing extra.
  • Error rows, duplicates and jobs skipped by onlyNew are never charged. maxItems is a hard cap, and a spending limit set on the run stops it cleanly with everything delivered so far.
  • Runs are fast: about 100 jobs per second without descriptions and 4 to 5 jobs per second with them.

Quick start

{
"queries": ["Softwareentwickler"],
"location": "Berlin",
"radiusKm": 25,
"maxItems": 100
}

Apprenticeships in Bavaria published in the last 7 days, newest first:

{
"queries": ["Mechatroniker", "Elektroniker"],
"offerType": "apprenticeship",
"location": "Bayern",
"postedWithinDays": 7,
"sortBy": "newest",
"maxItems": 0
}

Remote-friendly permanent full-time jobs, at least 50% home office:

{
"queries": ["Data Engineer"],
"minHomeOfficePercent": 50,
"contractType": "permanent",
"workingTime": ["full-time"],
"maxItems": 200
}

You can also paste a search link from the site, with every filter you picked there:

{
"startUrls": [
"https://www.arbeitsagentur.de/jobsuche/suche?angebotsart=1&was=Pflegefachkraft&wo=Hamburg&umkreis=25&arbeitszeit=tz"
]
}

Input

FieldWhat it does
queriesJob titles or keywords, one per line (Softwareentwickler, Pflegefachkraft, Data Engineer). Empty = search by location or employer only.
startUrlsSearch links from arbeitsagentur.de/jobsuche (filters in the link are kept), job pages (/jobsuche/jobdetail/...) or bare reference numbers like 10001-1234567890-S.
locationCity, postal code, German state or country (München, 80331, Bayern, Österreich). Empty = all of Germany.
radiusKmDistance around the location (site default 25 km; 0 = only the place).
offerTypejob, apprenticeship (Ausbildung and dual study), internship (Praktikum and trainee) or self-employment.
workingTimefull-time, part-time, shift (night and weekend) and mini job; any of them matches.
remoteOnlyOnly jobs where home office is possible.
minHomeOfficePercentOnly jobs with at least this share of home office (for example 50).
contractTypepermanent (unbefristet) or temporary (befristet).
postedWithinDays0 (today), 1, 7, 14 or 28; other values are rounded up to the next option.
employerExact employer name as shown on the site (Deutsche Bahn AG).
excludeTemporaryAgenciesLeave out Zeitarbeit / Arbeitnehmerüberlassung offers.
excludePrivateRecruitersLeave out offers from private recruitment agencies.
sortByrelevance (default), newest, modified, start date or distance.
includeDescriptionFull text, source partner, required education and contract length (default on).
includeCompanyProfileEmployer self-description and website, when the employer has a profile (default off, slower).
onlyNewFor schedules: delivers only jobs not delivered in earlier runs of the same search.
maxItemsCap for the whole run (default 50; 0 = no cap).
proxyConfigurationApify datacenter proxy by default.

searchQuery, keyword, was, wo, city, radius, umkreis, angebotsart, arbeitszeit, maxResults and urls are accepted too, so inputs written for other Arbeitsagentur tools keep working.

Output

Every job is one row with type: job:

FieldWhat it is
referenceNumber, urlThe job's reference number (Referenznummer) and its page on arbeitsagentur.de
title, occupation, allOccupationsJob title as written by the employer, and the occupations the agency assigned
offerTypeARBEIT, AUSBILDUNG, PRAKTIKUM_TRAINEE or SELBSTAENDIGKEIT
companyName, employerIdEmployer name and the site's anonymous employer id (same id = same employer)
city, postalCode, region, country, latitude, longitudeFirst work location; locations lists all of them
distanceKmDistance from the searched location
workingTime, isFullTimefullTime, partTimeMorning, partTimeAfternoon, partTimeEvening, partTimeFlexible, shiftNightWeekend, miniJob
remotePossible, remotePercent, remoteArrangementHome office flag, share and arrangement (NACH_VEREINBARUNG = by agreement)
contractDuration, contractMonthsUNBEFRISTET, BEFRISTET or KEINE_ANGABE, and the length of fixed-term contracts
startDate, publishedAt, firstPublishedAt, modifiedAtStart date and publication dates
salaryMin, salaryMax, salaryCurrency, salaryPeriodSalary when published (hour, year...), in EUR
salaryInfo, salaryKindThe raw salary type (JAHRESGEHALT, STUNDENLOHN, AUSBILDUNGSVERGUETUNG_NACH_JAHREN...) and fixed or range
isTemporaryAgency, isPrivateRecruiterZeitarbeit and private recruiter flags
suitableForCareerChangers, disabilityRequiredQuereinstieg flag and the severe-disability offer flag
requiredEducation, trainingTypeSchool leaving certificate asked for, and AUSBILDUNG or DUALES_STUDIUM
sourcePartner, sourcePartnerUrl, externalUrl, boxNumberPartner job board the offer came from, its link, and the box number (Chiffre) of anonymous offers
descriptionFull job description (with includeDescription)
companyDescription, companyWebsiteEmployer profile (with includeCompanyProfile)
sourceQuery, scrapedAtThe keyword or link that found the job, and when

One real row (description shortened):

{
"type": "job",
"referenceNumber": "10001-1003713573-S",
"title": "Data Engineer Waffensystemdaten (m/w/d)",
"occupation": "Data Engineer",
"allOccupations": ["Data Engineer", "Informatiker/in"],
"offerType": "ARBEIT",
"companyName": "IABG Industrieanlagen Betriebs-GmbH",
"city": "Ottobrunn",
"postalCode": "85521",
"region": "BAYERN",
"country": "DEUTSCHLAND",
"latitude": 48.054645,
"longitude": 11.6603415,
"distanceKm": 12,
"workingTime": ["fullTime"],
"contractDuration": "UNBEFRISTET",
"startDate": "2026-10-05",
"publishedAt": "2026-09-16",
"salaryMin": 65000.0,
"salaryMax": 85000.0,
"salaryCurrency": "EUR",
"salaryPeriod": "year",
"sourcePartner": "arbeitsagentur.de",
"url": "https://www.arbeitsagentur.de/jobsuche/jobdetail/10001-1003713573-S",
"description": "### **Beschreibung der Stelle**\n\nSie begeistern sich für Data Engineering und möchten Daten komplexer technischer Systeme nutzbar machen?...",
"companyWebsite": "http://www.iabg.de",
"sourceQuery": "Data Engineer"
}

Errors you may see

Every error is a row with errorCode and is never charged:

errorCodeMeaning
INVALID_INPUTA field has a wrong value (the message lists the accepted ones), or the site rejected the search
INVALID_URLNot an arbeitsagentur.de search link, job link or reference number
NOT_FOUNDThe job link points to an offer that expired or was removed
NO_RESULTSThe search and filters match no job; try a broader keyword or fewer filters
BLOCKEDThe site refused every attempt for this search; run it again in a few minutes

Integrations, scheduling and AI agents

  • Schedule a daily run with onlyNew on in Apify schedules to get only the jobs published since the last run, ready for alerts.
  • Export as JSON, CSV, Excel or XML, or read the dataset from the Apify API.
  • Connect it to Make, n8n, Zapier, Slack or Google Sheets through Apify integrations.
  • AI agents: call it as a tool through the Apify MCP server in Claude, ChatGPT, Cursor or any MCP client, for example "list the permanent nursing jobs in Hamburg published this week with their salary".

FAQ

Do I need an account or an API key? No. The Actor uses the public job search the website and the official app use, with the public key they publish. Nothing to sign up for.

Does it cover Austria and other countries? The Jobbörse also lists offers abroad (mostly Austria, from the Austrian public employment service). Set location to Österreich or a city there.

How many jobs can one search return? The site serves at most 10,000 jobs per search. For a bigger slice, split it by location, occupation or offer type; duplicates across searches in the same run are delivered only once.

Why do some jobs have no salary? Most employers in Germany do not publish one. When they do, it comes as a fixed amount or a range per hour, month or year.

Are contact persons included? No. The Actor returns company data only. Emails, phone numbers and the names of contact persons in the description are replaced by [contact removed].

Is it legal? The Actor reads public job offers only. You are responsible for how you use the data under the laws that apply to you, including the GDPR.

Something broke or a field is missing? Open an issue on the Actor page; issues are answered within a day.

Limitations

  • At most 10,000 jobs per search (a limit of the site).
  • postedWithinDays follows the site options (today, 1, 7, 14 and 28 days).
  • employer needs the exact employer name; a partial name returns nothing.
  • Descriptions are in the language the employer wrote them, almost always German.
  • Contact removal works on patterns; an unusual way of writing a name may slip through. Report it and it is fixed.

Changelog

  • 16 Oct 2026: first version. Keyword, location, radius, offer type, working time, home office, contract, date, employer, agency filters and sorting; search and job links; full description and employer profile; onlyNew for schedules.