Arbeitsagentur Jobs – German Jobs, Bundesagentur Jobbörse avatar

Arbeitsagentur Jobs – German Jobs, Bundesagentur Jobbörse

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Arbeitsagentur Jobs – German Jobs, Bundesagentur Jobbörse

Arbeitsagentur Jobs – German Jobs, Bundesagentur Jobbörse

Keyword and place in, one row per job listing out from the Jobbörse of the Bundesagentur für Arbeit (Arbeitsagentur): title, employer, full text, salary range, home-office flag, location with coordinates, publish date. German jobs via the Jobsuche API, no browser; schedule it to see who is hiring.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

Perceptron Data

Perceptron Data

Maintained by Community

Actor stats

0

Bookmarked

12

Total users

5

Monthly active users

5 days ago

Last modified

Share

Arbeitsagentur Jobs

Give a keyword and a place, get one row per job from the Arbeitsagentur Jobbörse: title, employer, salary range, home office, location, full text. Filter by employer or date and schedule it daily to see who is hiring.

Limits: only jobs listed on the Jobbörse – almost all in Germany, a few abroad. The data comes from the JSON interface of the Jobbörse's own app, which is not offered to third parties and can change at any time. Salary appears only where the employer published it. One search reaches at most 10,000 hits; larger searches are split automatically.

Arbeitsagentur Jobs output: five electrician jobs in Berlin with employer, salary range, home office, publication date, details status and reference number – run of 12 October 2026

The Jobbörse of the Bundesagentur für Arbeit lists about 1 million postings (1,025,617 of all offer types on 12 October 2026). Unlike HTML scrapers, this actor reads the Jobbörse's JSON interface – the Jobsuche API, documented by the bundesAPI project – so no browser is needed. That means:

  • ⚡ Fast – no browser and no proxy needed. The interface serves the Jobbörse's own app and can change or be restricted at any time.
  • 📄 Full job descriptions — complete posting text, not just teasers
  • 💶 Salaries — salaryFrom / salaryTo for ranges, fixedSalary for fixed pay (hourly or yearly, see salaryInfo), apprenticeship pay per year
  • 🏠 Home office — flag, type and the share in percent; filter for "possible", "at least 50 %" or "fully remote"
  • 📍 Geo coordinates — lat/lon for 97 % of job locations (measured on 1,316 locations), street with house number
  • 🧾 Every row says where it came from — your search, the time it was retrieved, the source and whether the description was fetched
  • 🚫 No duplicates — the API repeats hits across pages; repeats are skipped, never stored, never charged
  • 📏 Coverage reported — every run writes a COVERAGE record: matches, distinct jobs found, repeats skipped, why it stopped

How to use – step by step

  1. Click Try for free on this page (a free Apify account is enough) – the form opens with "Elektriker" in Berlin.
  2. Enter a Search keyword (job title or profession; German terms find more) and a Location – a city with umlauts (München), a state as Hessen (Bundesland), or empty for all of Germany – plus the Search radius (km).
  3. Optional filters: Offer type, Published within last N days, Employer name filter (exact spelling), Working time, Home office, Exclude temp agencies (Zeitarbeit).
  4. Set Maximum results (default 200) and click Start. The default run with descriptions takes about 12 seconds (measured locally, 12 October 2026).
  5. Open the Output tab: the Jobs view shows title, employer, salary, home office, publication date and whether the description was fetched. Export as CSV, Excel or JSON, or read the rows through the API.
  6. For a daily job alert, schedule the run with Published within last N days = 1.

Use cases

  • Job-market analytics — demand by region, profession, salary levels
  • HR / recruiting tech — feed fresh German job postings into your product
  • Job alerts — schedule daily runs with publishedSince: 1 for new listings
  • Lead generation — companies that are hiring are companies that are buying (employerId identifies the employer across postings)
  • AI agents — clean input/output schema, works out of the box via MCP

Input example

{
"keyword": "Pflegefachkraft",
"location": "München",
"radiusKm": 50,
"publishedSince": 7,
"homeOffice": "possible",
"excludeTemporaryEmployment": true,
"includeDetails": true,
"maxItems": 500
}

Search by employer alone — the name must be written exactly as the job board lists it:

{ "employer": "Deutsche Bahn AG", "maxItems": 1000 }

Output example

A real row from a run on 12 October 2026 (description shortened):

{
"title": "Elektriker (m/w/d)",
"profession": "Elektroinstallateur/in",
"company": "homeworkbuddy UG (haftungsbeschränkt)",
"employerId": "EG75WjuBVG4QRk1a3Hmg8KfsmazfsaEYvjavAX6ZIW8=",
"offerType": "ARBEIT",
"salaryFrom": 15.19,
"salaryTo": 24.14,
"fixedSalary": null,
"salaryType": "GEHALTSSPANNE",
"salaryInfo": "STUNDENLOHN",
"contractDuration": "UNBEFRISTET",
"workingTime": { "fullTime": true, "shiftNightWeekend": false, "partTimeFlexible": false },
"entryFrom": "2026-10-07",
"firstPublished": "2026-09-10",
"lastModified": "2026-10-07T13:36:03.127",
"locations": [
{ "street": "Wallstr. 9", "zip": "10179", "city": "Berlin", "district": null,
"region": "BERLIN", "country": "DEUTSCHLAND", "lat": 52.511139, "lon": 13.404789 }
],
"distanceKm": 1,
"refnr": "10001-1003683867-S",
"jobUrl": "https://www.arbeitsagentur.de/jobsuche/jobdetail/10001-1003683867-S",
"postingPartner": { "name": "arbeitsagentur.de", "url": "http://www.arbeitsagentur.de" },
"description": "**Stellenbeschreibung**\n\nAls Elektriker (m/w/d) sind Sie der Experte für …",
"detailStatus": "ok",
"query": { "keyword": "Elektriker", "location": "Berlin", "radiusKm": 25, "offerType": "1" },
"source": "Bundesagentur für Arbeit, Jobsuche API (search /pc/v6/jobs, details /pc/v4/jobdetails)",
"subsearch": null,
"retrievedAt": "2026-10-12T12:58:58Z"
}

Further fields when the posting has them: fixedSalary, apprenticeshipPay (year1–year4), fixedTermUntil, fixedTermMonths, homeOfficePossible, homeOfficeType, homeOfficePercent, miniJob, careerChangersWelcome, trainingType, degreeProgram, entryUntil, externalUrl, and from the description request temporaryEmployment (Zeitarbeit), privateRecruiter and requiredEducation. Values are passed on as the job board sends them (German codes such as UNBEFRISTET, STUNDENLOHN); nothing is estimated.

postingPartner is the partner system the ad came from — often the job board itself or another job portal, sometimes the employer's own career site. It is not the employer's website.

detailStatus – was the description fetched?

ValueMeaning
okdescription fetched
skippedincludeDetails was off
blockedthe API refused or throttled the description request, also on a second attempt at the end of the run
errorthe API did not answer properly, also on a second attempt

Jobs that were deleted between the search and the description request are left out — they are no longer postings. If the API refuses descriptions for eight requests in a row, the run stops and says so instead of storing rows without descriptions.

Coverage record

Every run stores a free COVERAGE record in its key-value store (also linked in the run's output tab):

{
"apiTotal": 848, "apiTotalsSeen": [846, 848], "target": 848, "delivered": 847,
"complete": false, "duplicatesSkipped": 5, "foundBySecondPass": 4, "passes": 2,
"deletedSinceSearch": 0, "detailStatus": { "skipped": 847 },
"stoppedBecause": null, "locationMode": "UMKREISSUCHE", "locationRecognisedAs": "Berlin",
"statusMessage": "Done: 847 of 848 jobs stored (846–848 matches by the API's replicas; …)"
}

That is a real run: Elektriker within 25 km of Berlin, all hits. The job board answers from several servers that disagree slightly — the total of the same search alternated between 846 and 848, and hits moved across page borders. A first pass found 843 distinct jobs and 5 repeats; a second pass found 4 more.

Limits – measured, not assumed

  • 10,000 hits per search. The API stops at page 100 × 100 ("Ergebnismenge überschritten"). With maxItems above 9,000, a larger search is split automatically: into the 16 federal states plus postings abroad (Austria, Switzerland and other neighbours), and states above 10,000 further by temporary-agency yes/no, fixed-term status and private recruiters — parts whose counts add up exactly to the whole. Measured on 12 October 2026:

    Search (nationwide)MatchesDistinct jobs deliveredPartsTime without descriptions
    Pflege, jobs119,053118,166 (99.3 %)3614 min
    Software, all offer types25,61325,330 (98.9 %)273 min

    One plain search reaches at most 10,000 rows (Software: 9,678 of them distinct). The rest are postings without a federal state or country, or hits the API's servers moved while paging — the run reports the number. If maxItems is smaller than the matches, all parts are read side by side in proportion to their size, so a sample of 12,000 nursing jobs holds every state in its share (North Rhine-Westphalia 20 %, Bavaria 16 %, …), not just the first states of the alphabet.

  • Speed (measured locally, 12 October 2026): about 19 jobs per second with descriptions, about 140 per second without. The default run (200 jobs with descriptions) takes about 12 seconds. A run has a 1-hour timeout by default; a run that reaches it stops cleanly and says how far it got.

  • Employer names must be exact. Deutsche Bahn finds 0 jobs, Deutsche Bahn AG 3,682. When the employer filter finds nothing, the run lists the spellings that do match.

  • Locations need umlauts and, for states, the suffix (Bundesland). Muenchen is not recognised (the run checks München for you and says so); plain Hessen or Sachsen are villages of that name, Hessen (Bundesland) is the state.

  • Home office is its own filter. The old working-time value "home office" returns 0 jobs at the API; this actor uses the job board's home-office filter instead (Software: 2,987 jobs with home office possible, 127 fully remote).

Tips

  • German search terms find more jobs (Koch beats cook).
  • Leave location empty for nationwide searches.
  • Set includeDetails: false for large volume runs where you only need structured metadata — about seven times faster.
  • For daily monitoring, create a Schedule with publishedSince: 1 and connect a webhook or export integration.

Data & fair use

The data comes from the JSON interface of the Jobbörse (Jobsuche API) of the Bundesagentur für Arbeit, using the client id the bundesAPI project documents. This actor is not affiliated with or endorsed by the Bundesagentur für Arbeit. Only public job postings and employer information are accessed — no applicant or personal data. The actor throttles its requests, slows down for everyone when the API asks it to, and never rotates IP addresses.

What does a run cost?

$0.01 per run start (default memory 1 GB), then per stored job — cheaper on bigger Apify plans:

Your Apify planPer job
Free$0.001
Starter$0.00075
Scale$0.0006
Business & Enterprise$0.0005
Job postings (Free plan)Cost
100$0.11
1,000$1.01
10,000$10.01

Repeated hits are skipped before storing, so you never pay twice for the same job. A run that the source refuses entirely stores nothing and costs only the start. includeDetails changes the run time, not the price.

Changelog

  • 12 October 2026 – Repeated hits are skipped and never charged; a refused request is reported as blocked, never as "0 jobs"; searches above 10,000 hits are split by federal state; job locations carry coordinates; every row carries the search, the retrieval time and the source, and every run writes a free COVERAGE record.

Auf Deutsch: Stellenangebote der Arbeitsagentur exportieren

Stichwort und Ort rein, je Stellenangebot eine Zeile raus: Titel, Arbeitgeber, Gehaltsspanne, Homeoffice, Arbeitsort mit Koordinaten und auf Wunsch der volle Text – aus der Jobbörse der Bundesagentur für Arbeit. Täglich geplant zeigt er, welche Arbeitgeber gerade einstellen.

Gelesen wird die JSON-Schnittstelle der Jobbörse (arbeitsagentur.de) – kein HTML-Scraping, kein Proxy. Die Schnittstelle dient der App der Jobbörse und kann sich jederzeit ändern.

Gesucht wird nach Stichwort, Ort und Umkreis, gefiltert nach Angebotsart (Arbeit, Ausbildung, Praktikum, Selbstständigkeit), Arbeitszeit, Homeoffice, Arbeitgeber und Veröffentlichungsdatum; Zeitarbeitsfirmen lassen sich ausschließen. Jede Zeile enthält Stellentitel, Beruf, Arbeitgeber mit stabiler Arbeitgeber-ID, Gehaltsspanne oder Festgehalt, Homeoffice-Anteil, Befristung, Eintrittsdatum, Arbeitsorte mit Koordinaten und auf Wunsch die vollständige Stellenbeschreibung — dazu die Suchanfrage, den Abrufzeitpunkt und die Quelle.

Ehrliche Grenzen: Eine Suche liefert höchstens 10.000 Treffer; größere Suchen teilt der Actor automatisch nach Bundesländern auf und meldet im Datensatz COVERAGE, wie viel er erreicht hat. Doppelte Treffer der Schnittstelle werden aussortiert und nicht berechnet. Arbeitgebernamen müssen exakt geschrieben sein („Deutsche Bahn AG“), Orte mit Umlaut („München“), Bundesländer mit Zusatz („Hessen (Bundesland)“) — ist etwas nicht erkannt, sagt der Lauf es.

FAQ

Is there an official Arbeitsagentur API for third parties? No. The Jobbörse has a JSON interface for its own app, documented by the bundesAPI project, and this actor reads it. The raw interface returns nested German field names, repeats hits across pages, stops at 10,000 hits per search and needs a separate call per job description. This actor handles all of that.

How do I get new jobs only? Set publishedSince to 1 and schedule the actor daily. Each run then returns only what was posted since yesterday.

Can I search all of Germany at once? Yes — leave location empty. One search at the job board stops at 10,000 hits; set maxItems above 9,000 and the actor splits the search by federal state (and further where needed) and reports the coverage it reached in COVERAGE.

Why do some jobs have no salary? Salary fields are optional for employers in Germany. salaryFrom / salaryTo are filled when the employer published a range, fixedSalary when it published a fixed amount; otherwise they stay empty rather than being estimated.

Why does a run find slightly fewer jobs than the total shown? The job board answers from several servers whose totals differ by a few jobs and whose order shifts between pages. The actor reads a search twice when needed and reports in COVERAGE what it found and what the API claimed.

Does this include applicant or personal data? No. Only public job postings and the employer information attached to them.

How do I export to Excel? Run the actor, then export the dataset as CSV or XLSX from the Apify console, or pull it through the API into Google Sheets.

More from Perceptron Data

ActorWhat it does
Advertiser Check (Google & Bing)Company list in, one row per company out: Google ads, Bing ads, ad counts, accounts
Imprint & VAT CheckDomains in, company rows out: legal name, address, register number and EU VAT ID checked against VIES (Swiss UIDs excluded)
Free Imprint & Contact CheckThe same company row, free, for up to 10 websites per run
PDF to MarkdownPDF, Word, Excel and PowerPoint to Markdown for AI – tables as JSON, OCR for scans
Research AgentA question in, cited passages out – every source graded by evidence level
App Store & Google Play DataApp IDs or App Store keywords in, one row per app out, plus App Store reviews
kununu Employer DataEmployer score vs. industry, salary ranges, benefits and reviews for DACH companies
Messe München ExhibitorsExhibitor lists of bauma, IFAT, BAU and more
Koelnmesse ExhibitorsExhibitor lists of Anuga, ISM, imm cologne and more
TED TendersEU public tenders and contract awards from TED
MaStR Energy AssetsSolar, wind and storage units in Germany with operator and capacity
EUDAMED Medical DevicesEU medical devices, manufacturers and certificates
Data Source FinderFree: tells you which ready-made scraper covers your data source

Support

Bug reports are welcome in the Issues tab.