Arbeitsagentur Jobs Scraper: Bundesagentur für Arbeit API avatar

Arbeitsagentur Jobs Scraper: Bundesagentur für Arbeit API

Pricing

from $0.60 / 1,000 jobs

Go to Apify Store
Arbeitsagentur Jobs Scraper: Bundesagentur für Arbeit API

Arbeitsagentur Jobs Scraper: Bundesagentur für Arbeit API

German jobs from the official Arbeitsagentur Jobbörse API by keyword + place: title, company, address, occupation, full/part-time, remote, salary when given, dates, link. No login. Pay per job ($0.0009 or less) plus a $0.001 start fee per run.

Pricing

from $0.60 / 1,000 jobs

Rating

0.0

(0)

Developer

PlainRows

PlainRows

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

17 hours ago

Last modified

Share

Arbeitsagentur Jobs Scraper (Bundesagentur für Arbeit Jobbörse API)

Get German job ads from the Jobbörse of the Bundesagentur für Arbeit (arbeitsagentur.de), the largest job board in Germany, for any keyword and place: job title, company, work address (street, postal code, city, state, coordinates), occupation, offer type, full-time / part-time, home office, contract duration, salary when the ad gives it, start and publication dates, and link. Type keywords + German places with a radius and filters, or paste Jobbörse search URLs.

The Actor uses the official public job search API of the Bundesagentur für Arbeit (the one behind the Jobbörse website, documented on jobsuche.api.bund.dev): no login, no account, no browser, no proxy. It reads one page of 100 jobs at a time per search, with a pause between pages.

Typical uses

  • German job market research: how many data, nursing, logistics or engineering jobs are open in Berlin, Munich or Hamburg, with which salary and working time.
  • Recruitment agencies and sales teams: which German companies are hiring, for what, where (lead lists with company and work address).
  • Job boards and alerts: feed new German jobs into your own site, Slack, Google Sheets or an AI agent every day (publishedWithinDays: 1).
  • Salary and remote analysis: share of ads with a salary range, of part-time or home-office jobs in your field.
  • Spreadsheets, BI and AI agents: clean rows for Google Sheets, n8n, Make, Zapier or an MCP client.

What you get

One row per job ad:

FieldDescription
search, query, locationYour search, the keyword and the place searched
referenceNumber, urlReference number of the ad (unique) and link to the ad on arbeitsagentur.de
externalUrlLink to the partner job board when the ad comes from one (tracking parameters removed)
jobTitleJob title
companyEmployer of the ad (never a contact person)
occupation, occupationsMain occupation and all occupations of the ad
street, postalCode, city, district, region, countryWork address as the ad gives it (state names like Nordrhein-Westfalen, country Germany or Austria)
latitude, longitude, distanceKmCoordinates of the work place, distance from the place searched
otherCitiesOther work places of the same ad
offerTypeJob, Apprenticeship / dual study, Internship / trainee or Self-employment
fullTime, workingTimes, miniJobFull-time flag; all working times (Part-time (morning), Shift, night or weekend…); mini job
remotePossible, remoteType, remotePercentHome office possible, how (By arrangement…), share in percent when given
contractDuration, fixedTermMonths, fixedTermUntilPermanent or Fixed-term, and its length when given
salaryInfo, salaryMin, salaryMax, salaryCurrencyYearly salary, Hourly wage…, with the range in EUR when the ad gives it
careerChangersWelcomeSuitable for career changers (Quereinstieg)
startDate, publishedAt, firstPublishedAt, updatedAtStart date, current and first publication, last change
page, position, totalResultsWhere the job was, and how many jobs the API reports
observedAtWhen the API was read (UTC)

Missing values are always null, never guessed. No contact name, e-mail or phone number is collected. A search without jobs (or refused, or unreadable) gets one free row with found: false, a status and a message.

Example row

{
"search": "Data Engineer in Berlin",
"found": true,
"referenceNumber": "16752-r5446-S",
"jobTitle": "Data Engineer* / Machine Learning Engineer*",
"company": "inovex GmbH",
"url": "https://www.arbeitsagentur.de/jobsuche/jobdetail/16752-r5446-S",
"occupation": "Data Engineer",
"city": "Berlin",
"region": "Berlin",
"country": "Germany",
"latitude": 52.4926833,
"longitude": 13.4025753,
"offerType": "Job",
"fullTime": true,
"workingTimes": ["Full-time"],
"salaryInfo": "Yearly salary",
"salaryMin": 65000,
"salaryMax": 75000,
"salaryCurrency": "EUR",
"startDate": "2026-08-10",
"publishedAt": "2026-01-21",
"firstPublishedAt": "2025-05-22",
"distanceKm": 3,
"status": "FOUND"
}

Input

{
"keywords": ["Data Engineer", "Pflegefachkraft"],
"locations": ["Berlin", "München"],
"radiusKm": 25,
"offerType": "job",
"workingTime": ["fullTime", "homeOffice"],
"publishedWithinDays": 7,
"maxJobsPerSearch": 200
}
  • keywords and locations: each keyword is searched in each place (town, postal code or region). With no place, across Germany; with places but no keyword, all jobs of those places.
  • radiusKm: 0 to 200 km around each place (default 25), like the Jobbörse.
  • offerType: any (default), job, apprenticeship, internship or self-employment.
  • workingTime: any of fullTime, partTime, shiftNightWeekend, homeOffice, miniJob.
  • publishedWithinDays: only jobs published in the last 0 to 100 days.
  • maxJobsPerSearch: 1 to 10,000 (default 100). The API returns 100 jobs per page and stops at 10,000 jobs per search: split a larger search by place or filter.
  • searchUrls: Jobbörse search pages (https://www.arbeitsagentur.de/jobsuche/suche?was=…&wo=…) with their own filters.

Up to 100 searches per run. Jobs found by two of your searches are returned and billed once.

Pricing

Pay per event: one event per job returned, plus a small start fee per run ($0.001).

PlanPer jobPer 1,000 jobs
Free$0.0009$0.90
Bronze$0.0008$0.80
Silver$0.0007$0.70
Gold$0.0006$0.60

Free: searches without jobs, answers that are refused or cannot be read, ads without a company or reference number, duplicates and input mistakes. On the free Apify plan, a run reads up to 3 searches and 20 jobs per search.

FAQ

Is it legal? The Actor uses the official public job search API of the Bundesagentur für Arbeit, a German federal agency, with its public access key, at a slow pace. It returns job ads that anyone can see on arbeitsagentur.de without an account, and no personal data: no contact person, e-mail or phone number. You are responsible for how you use the data.

Does it return the full job description? Not yet: the search API gives every field above but not the description text. Open url for the full ad. A version that also reads the description is planned if users ask for it.

Why only 10,000 jobs per search? The API itself stops there. Split a broad search (e.g. all jobs in Germany) by place, offer type or working time.

Are Austrian or other foreign jobs included? Yes when the Jobbörse lists them for your search (some German employers post jobs in Austria): see country. Add a German place to stay in Germany.

Which language? Labels (offer type, working time, contract duration, salary type) are in English; titles and occupations stay in German, as published.

Why are some searches empty or BLOCKED? If the API refuses a request (rate limit), the Actor stops that search and charges nothing beyond the results already delivered. If this happens after the first page, the run summary warns that the search stopped early and its results are partial. Try again later.

More PlainRows tools

Same pay-per-result pricing, same clean JSON, built to chain together in n8n, Make, Zapier or AI agents.

Support

Open an issue on the Actor's page: issues are read and answered. Need another field, a higher limit or a custom version for your workflow? Ask in an issue.