Arbeitsagentur Jobs Monitor – New German Job Listings avatar

Arbeitsagentur Jobs Monitor – New German Job Listings

Pricing

from $0.99 / 1,000 job returneds

Go to Apify Store
Arbeitsagentur Jobs Monitor – New German Job Listings

Arbeitsagentur Jobs Monitor – New German Job Listings

Search the job board of the German Federal Employment Agency (Bundesagentur für Arbeit) by keyword, place, radius, offer type, working time and contract. One row per job: title, employer, location, salary, dates, links. Monitoring mode returns only new jobs.

Pricing

from $0.99 / 1,000 job returneds

Rating

0.0

(0)

Developer

NeverEmpty

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Categories

Share

Search the job board of the German Federal Employment Agency (Bundesagentur für Arbeit, "Jobsuche") and get one row per job: title, employer, occupation, place with coordinates, working time, contract, salary when the listing gives one, publication dates, the job page and the external apply link.

Turn on monitoring mode, put the run on a schedule, and each run returns only the jobs that were not there before. You do not download the same thousand listings every hour and compare them yourself.

  • No login, no browser, no proxy needed. The Actor reads the same public search interface that the agency's own job search page uses.
  • Search terms are German, exactly as on the job board: Pflegefachkraft, Softwareentwickler, Lagerhelfer, Erzieher, Elektroniker, Kaufmann für Büromanagement.
  • A run that returns nothing always says why, in a row that is not charged.

What you can search by

InputMeaningExample
whatJob title, occupation or keyword (the board's "was")Pflegefachkraft
whereCity or five-digit postal code (the board's "wo")Berlin, München, 10115
radiusKmDistance around the place, 0 to 200 km25
offerTypejob, apprenticeship, internship-trainee, self-employmentapprenticeship
workingTimefull-time, part-time, shift-night-weekend, mini-jobpart-time
contractpermanent or fixed-termpermanent
publishedWithinDaysOnly jobs published in the last N days: 0, 1, 7, 14 or 287
maxJobsStop after this many rows (default 100, up to 10000)500
monitoringModeReturn only new jobs since the previous run of the same searchtrue

Every filter is applied by the job board itself. Each one was checked against the returned rows on 2026-10-05 (for example: offerType: apprenticeship returned 50 of 50 rows of type AUSBILDUNG; contract: fixed-term returned 50 of 50 rows marked BEFRISTET).

Example: nursing jobs within 25 km of Berlin

{
"what": "Pflegefachkraft",
"where": "Berlin",
"radiusKm": 25,
"maxJobs": 100
}

Example: watch for new software developer jobs around Munich

{
"what": "Softwareentwickler",
"where": "München",
"radiusKm": 50,
"monitoringMode": true
}

Schedule this run (for example every hour). The first run only remembers what is listed. Every later run returns the new jobs.

What a row looks like

{
"status": "ok",
"refnr": "12618-177311-S",
"title": "Pflegefachkraft in der stationären Pflege",
"employer": "AWO Pflege Schleswig-Holstein gGmbH",
"occupation": "Pflegefachmann/-frau (Ausbildung)",
"allOccupations": ["Pflegefachmann/-frau (Ausbildung)"],
"offerTypeCode": "ARBEIT",
"city": "Lübeck",
"postalCode": "23562",
"region": "SCHLESWIG_HOLSTEIN",
"country": "DEUTSCHLAND",
"latitude": 53.8306119,
"longitude": 10.7169372,
"locationsCount": 1,
"locations": [{ "city": "Lübeck", "postalCode": "23562", "region": "SCHLESWIG_HOLSTEIN", "country": "DEUTSCHLAND", "latitude": 53.8306119, "longitude": 10.7169372 }],
"fullTime": false,
"partTime": true,
"shiftNightWeekend": true,
"miniJob": false,
"homeOfficePossible": false,
"careerChangersWelcome": false,
"contract": "permanent",
"contractCode": "UNBEFRISTET",
"fixedTermMonths": null,
"fixedTermUntil": null,
"salaryMin": 40000,
"salaryMax": 50000,
"salaryPeriod": "year",
"salaryCode": "JAHRESGEHALT",
"startDate": "2026-10-04",
"firstPublishedDate": "2026-10-04",
"publishedFrom": "2026-10-04",
"modifiedAtLocal": "2026-10-04T16:45:40.618",
"jobUrl": "https://www.arbeitsagentur.de/jobsuche/jobdetail/12618-177311-S",
"externalUrl": "https://www.awo-jobs.de/index.php?id=114&uid=177311",
"searchedWhat": "Pflege",
"searchedWhere": null,
"resolvedPlace": null,
"scrapedAt": "2026-10-05T09:00:00.000Z"
}

Notes on the columns:

  • A value the listing does not give is null. Nothing is filled with 0, false or an empty string. fullTime, partTime, homeOfficePossible and the other yes/no columns are null when the listing does not say.
  • Salary is what the employer entered: a range (salaryMin to salaryMax) or one fixed amount (then both are the same). salaryPeriod is year or hour; other ways of stating pay keep the board's own code in salaryCode and leave salaryPeriod empty. The board does not send a currency. Most listings give no salary: in 500 listings for "Pflege" read on 2026-10-05, 134 carried a figure.
  • offerTypeCode, contractCode, salaryCode, region, country are the board's own German codes, unchanged (ARBEIT, AUSBILDUNG, PRAKTIKUM_TRAINEE, SELBSTAENDIGKEIT; UNBEFRISTET, BEFRISTET, KEINE_ANGABE).
  • jobUrl is the job's page on arbeitsagentur.de. externalUrl is the employer's or partner board's page when the listing has one (183 of the same 500).
  • modifiedAtLocal is the board's timestamp as sent, without a time zone (German local time).
  • resolvedPlace is how the board understood where. locations lists every workplace of a job with several (the first one fills city, postalCode and the coordinates).
  • In monitoring mode each row also has change: "new-job" and previousCheckedAt.

Not in the rows, on purpose: street addresses, contact persons, phone numbers, e-mail addresses and the full description text. They are not part of the search result list, and the Actor does not open the detail and contact pages (some of them sit behind a CAPTCHA, which this Actor never tries to pass).

Monitoring mode

  1. First run of a search: the jobs published today and yesterday are remembered. No job row is returned, nothing is charged. The dataset holds one baseline-saved row that says so.
  2. Every later run of the same search: the Actor asks the board only for recently published jobs (the last 1, 7, 14 or 28 days, whichever covers the time since the previous completed run), compares them with what it remembers and returns the ones it has not seen. Each is charged as one job-returned.
  3. A run that finds nothing new returns one no-new-jobs row and is charged one search-checked event.

Details that matter:

  • The memory is kept per search (what, where, radiusKm, offerType, workingTime, contract). A different search has its own memory. maxJobs and publishedWithinDays are not used in monitoring mode; a monitoring run returns every new job.
  • "New" means: published on or after the day before the first monitoring run, and not seen at an earlier run. Older listings are never reported as new. A job that an employer takes down and publishes again under a new reference number is a new job.
  • If the maximum total charge of a run is too small for all new jobs, the rest are not remembered and come back at the next run.
  • If the board cannot be read, nothing is charged and nothing is remembered; the next run looks at the same days again.
  • Do not schedule two runs of the same search at the same moment: the memory is a key-value store without locking, and one run could overwrite the other's record.
  • resetMonitoringState: true forgets the memory of this one search.

Rows that are not jobs (never charged)

statusWhen
no-jobsThe board says the search holds 0 jobs
no-new-jobsMonitoring: nothing new since the previous run
baseline-savedMonitoring: first run of this search
no-such-locationThe board does not know the place in where
invalid-inputAn input value could not be used; nothing was read
source-unreadable / source-blockedThe board did not answer, answered in an unknown format, or refused (HTTP 403/429)
partly-readA later page could not be read; the jobs read before it are returned
limit-reachedThe search holds more than the 10,000 jobs the board lets anyone page through
budget-reached / not-readThe maximum total charge of the run was reached

Limits you should know

  • publishedWithinDays takes only 0, 1, 7, 14 or 28. Measured on 2026-10-05: the board silently ignores any other number (2, 3, 5, 10, 30, 60 and 100 all returned the full unfiltered result), so the Actor rejects other values instead of returning rows you did not ask for.
  • 10,000 jobs per search. The board refuses to page beyond that (HTTP 400). Narrow the search by place, radius, offer type or days to reach everything.
  • The board's order is by relevance, not by date, and it can shift a little between pages. The Actor removes a job that shows up on two pages; a job that slips between two pages can be missing from a large one-off run. Monitoring runs look at overlapping days, so such a job is picked up at the next run.
  • Search terms are matched by the board. The Actor does not re-filter the results; what the agency's own search returns for your words is what you get.
  • The Actor sends one request at a time with a pause between requests, and does not retry a refusal.

Pricing

  • job-returned: one per job row.
  • search-checked: monitoring mode only, one per run that read the search completely and found no new job.
  • No start fee. Rows that explain an empty or partial result are free. The first monitoring run of a search is free.

Data source

Public job search of the Bundesagentur für Arbeit (arbeitsagentur.de). This Actor is not affiliated with the agency.

Thanks for using this Actor

We build these tools for people who run them every day, and we improve them from what users tell us.

  • Missing a field, or need another filter? Tell us in the Issues tab. If the data is there, we add it.
  • Found a bug or a wrong value? Post the run ID in the Issues tab. Wrong data is the thing we fix first.

If this Actor saved you time, a short review helps other people find it.