Germany Jobs Scraper: Arbeitsagentur Jobbörse API (1M+ Jobs) avatar

Germany Jobs Scraper: Arbeitsagentur Jobbörse API (1M+ Jobs)

Pricing

from $0.60 / 1,000 jobs

Go to Apify Store
Germany Jobs Scraper: Arbeitsagentur Jobbörse API (1M+ Jobs)

Germany Jobs Scraper: Arbeitsagentur Jobbörse API (1M+ Jobs)

Scrape job ads from the official Jobbörse of the Bundesagentur für Arbeit (1M+ German jobs) through its public API: keyword and city search with radius, work time, contract, salary, home office, coordinates, full description and only-new alerts. No contact persons.

Pricing

from $0.60 / 1,000 jobs

Rating

0.0

(0)

Developer

Julian Genuario

Julian Genuario

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Features

Limited permissions

Share

Get job ads from Germany's largest job board, the official Jobbörse of the Bundesagentur für Arbeit (Federal Employment Agency), with more than 1 million open positions, as a clean spreadsheet or API feed:

  • Search by job title or keyword and city, postal code or region with radius, for jobs, internships / trainee programs or self-employment.
  • Filters: published in the last N days, full-time / part-time / shift / home office / mini-job, permanent or fixed-term, no temporary agencies (Zeitarbeit), no private recruiters, employer name.
  • Data per job: title, company, occupation, city, ZIP, region, coordinates, all locations, distance, work time, salary (when given, with period), home office %, contract type and duration, start date, publication and update dates, link to the ad and the employer's external link.
  • Full description (optional) with temporary-agency and private-recruiter flags.
  • Only new jobs since the last run, for daily alerts.

It uses the public REST API of the Bundesagentur (the same one its website uses), not page scraping: fast, stable and complete.

What does Germany Jobs Scraper do?

It is an Arbeitsagentur scraper / Jobbörse API client for job market research, recruiting, lead generation (companies that are hiring) and job aggregators. Each keyword is searched in each location, results are deduplicated across searches, and every row has the same English field names.

Who uses it

  • Recruiters and staffing agencies: find companies hiring for a role in a region, every morning.
  • Job boards and aggregators: import German jobs with coordinates and salary.
  • Sales teams (B2B lead generation): companies that hire developers, nurses or drivers are companies that grow.
  • Labour-market researchers and journalists: salaries, home-office share and contract types by occupation and region.

How to use it

  1. Click Try for free (a free Apify account is enough).
  2. Type job titles (one per line) and locations, and pick the filters.
  3. Click Start.
  4. Download the results from the Output tab as JSON, CSV, Excel or HTML, or read them with the API.
  5. For alerts: turn on Only new jobs, give the search an alert name and schedule the task daily. Connect Slack, e-mail or Google Sheets with Apify integrations.

Input

{
"keywords": ["Softwareentwickler", "Data Scientist"],
"locations": ["Berlin", "München"],
"radiusKm": 25,
"offerType": "job",
"publishedWithinDays": 7,
"workTime": ["fullTime"],
"contract": "permanent",
"excludeTempAgencies": true,
"includeDetails": true,
"onlyNew": false,
"maxItems": 1000
}

Output

{
"referenceNumber": "10001-1003891446-S",
"title": "Softwareentwicklerin (w/m/d)",
"company": "GASAG AG",
"occupation": "Softwareentwickler/in",
"offerType": "ARBEIT",
"city": "Berlin",
"postalCode": "10829",
"region": "BERLIN",
"lat": 52.480611,
"lon": 13.356027,
"distanceKm": 6,
"workTime": ["full-time"],
"homeOffice": true,
"homeOfficePercent": 50,
"contractDuration": "BEFRISTET",
"fixedTermMonths": 24,
"salary": 72600,
"salaryPeriod": "year",
"startDate": "2026-10-22",
"publishedAt": "2026-10-21",
"temporaryAgency": false,
"privateRecruiter": false,
"url": "https://www.arbeitsagentur.de/jobsuche/jobdetail/10001-1003891446-S",
"description": "Wir suchen dich an unserem Standort in Berlin ...",
"matchedKeyword": "Softwareentwickler",
"source": "Bundesagentur für Arbeit (Jobbörse)"
}

Pricing

Pay per event:

  • USD 0.60 per 1,000 jobs (job).
  • + USD 0.40 per 1,000 full descriptions (detail), only when "Full job description" is on and the description was retrieved.

Not charged: duplicates across your searches and, with "Only new", jobs already delivered in earlier runs. Your max charge per run is respected.

Privacy

Only company-level data is returned. The API's contact-person fields are never read, and e-mail addresses and phone numbers are removed from descriptions. The data comes from the Bundesagentur für Arbeit (credit it as the source).

Limitations

  • The API returns at most 10,000 results per search: split very broad searches by region or keyword.
  • Salary is only present when the employer published it (a minority of ads).
  • Locations must be in Germany; unknown place names are reported in the run summary.

Why this Actor

  • Official API, not page scraping: the same public REST API the Arbeitsagentur website uses. No proxies, no browser, no blocked runs.
  • No search URL needed: type job titles and cities; every keyword is searched in every location and the results are deduplicated.
  • Simple, low price: USD 0.60 per 1,000 jobs, and USD 0.40 per 1,000 full descriptions only if you turn them on. No start fee worth mentioning (USD 0.00005).
  • Daily alerts that cost cents: with Only new jobs you pay only for ads you have not seen yet.

Cost examples (measured)

RunRowsCost
"Softwareentwickler" in Berlin, last 7 days, with full descriptions45 jobs + 45 descriptionsabout USD 0.045
All jobs in Germany, default limit (1,000)982 jobs (duplicates free)about USD 0.59
20 job titles x 5 cities, daily, Only new jobsusually 100-400 new jobs a dayUSD 0.06-0.24 a day

Use it from your code, an integration or an AI agent

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("latamdatatools/germany-jobs-arbeitsagentur").call(run_input={
"keywords": ["Pflegefachkraft", "Softwareentwickler"],
"locations": ["Hamburg", "München"],
"publishedWithinDays": 7,
"excludeTempAgencies": True,
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["company"], job["title"], job["city"], job["salary"])
  • Schedules + Only new jobs = a daily feed. Send it to Google Sheets, Slack, HubSpot, Make, Zapier or n8n from the Integrations tab.
  • AI agents: use it as a tool from Claude, Cursor and other MCP clients through the Apify MCP server (mcp.apify.com).

FAQ

Is there an official API? Yes: the Jobbörse is served by the BA's public REST API (documented by the community at bund.dev). This Actor uses it with polite pacing (about 4 requests per second).

Can I call it from my own code or from an AI agent? Yes, with the Apify API, the JavaScript / Python clients, or as a tool from Claude, Cursor and other MCP clients through the Apify MCP server (mcp.apify.com).

Which export formats are available? JSON, JSONL, CSV, Excel (XLSX), XML, RSS and HTML table.