{
  "id": 18100193,
  "title": "Germany has a free public API with every job posting in the country — so I built a scraper that turns it into recruiter lead lists",
  "url": "https://urgent.news/2026/11/04/germany-has-a-free-public-api-with-every-job-posting-in-the-country",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-11-04T09:41:14.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/test_1_dd922a9a4a3bed6e4a/germany-has-a-free-public-api-with-every-job-posting-in-the-country-so-i-built-a-scraper-that-2283"
  },
  "original_language": "en",
  "account": "Most individuals are unaware that Germany's Federal Employment Agency operates a complimentary public API known as Jobsuche, encompassing virtually all registered job advertisements within the nation. The API requires no authentication and has no rate-limit restrictions, making it an official data source. I integrated it into an Apify Actor, which proved to be more valuable than initially anticipated. Here are some noteworthy aspects of the API:\n\nThe Arbeitsagentur search endpoint, akin to arbeitnow but official, provides structured JSON output containing job titles, employers, salary ranges, precise locations with coordinates, remote-work indicators (homeoffice möglich), contract types, and posting dates. This data serves as the foundation for arbeitsagentur.de/jobsuche - Germany's premier job board.\n\nDuring the development process, I encountered a snag: boolean filters operate exclusively, not inclusively. For instance, zeitarbeit=true signifies only temporary agency jobs, not temporary agency jobs in addition to other job types. Combining two filters results in zero results. It took a genuine API call to identify this issue.\n\nThe most valuable component of this API, in my opinion, lies in the raw job listings themselves. While job listings are a common commodity, the real value for recruiters and lead generation lies in understanding who is hiring currently and the compensation offered. Thus, the actor also generates a second dataset - company summaries aggregated from the listings. By inputting \"vertrieb, München,\" the actor produces a list of companies with open sales roles in Munich, along with the number of such roles and their locations. This list represents a product that a recruiter would likely purchase, and it emerges as a free byproduct of the same API calls.\n\nThe actor is publicly accessible on the Apify Store (pay-per-event, approximately $0.75/1k results): Actor link: https://apify.com/dach_data_tools/arbeitsagentur-jobs-scraper Ready-to-use example: https://apify.com/dach_data_tools/arbeitsagentur-jobs-scraper/examples/who-is-hiring-munich Remote job listings across Germany: https://apify.com/dach_data_tools/arbeitsagentur-jobs-scraper/examples/remote-jobs-germany I have also created a similar tool for German company registry data (northdata - legal names, HRB, executive officers): https://apify.com/dach_data_tools/northdata-scraper I am available to address any inquiries regarding the API's functionalities - the documentation tends to understate the comprehensive nature of the data available.",
  "summary": "Most people don't know this: the Bundesagentur für Arbeit (Germany's Federal Employment Agency) runs a free public API — Jobsuche — covering basically every registered job posting in the country. No auth needed, no rate-limit games, official data source. I wrapped it in an Apify Actor and it turned out more useful than expected. Quick writeup of what's interesting: The API nobody talks about The…",
  "key_points": [],
  "editors_take": "Turning unauthenticated government data into structured lead lists transforms a public utility into a commercialized intelligence tool for recruiters seeking to identify hiring trends and compensation benchmarks.",
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}