🦖 TinyRex Data Toolspractical guides for web data APIs

How to export jobs from the Bundesagentur für Arbeit (Arbeitsagentur) and EURES

Updated 2026-10-08 · Tool used: Arbeitsagentur Jobs Scraper - Germany, Austria, CH & EURES on Apify · Price: $1 per 1,000 jobs with full descriptions

The Bundesagentur für Arbeit runs Germany's largest job database (over a million listings) and has a public Jobsuche API, but it needs specific headers, paging and a separate call per job for the description. EURES adds vacancies from Austria (AMS), Switzerland and the rest of the EU in a different format.

This guide shows how to search both by keyword and location and get one normalized dataset with full descriptions, salary (when published), postal code, coordinates, working time and contract type.

Open Arbeitsagentur Jobs Scraper on Apify →

Steps

  1. Enter keywords (e.g. Elektriker, Data Analyst) and pick sources.
  2. Set Arbeitsagentur locations and radius, and EURES country codes (at, ch...).
  3. Export to CSV/JSON, or schedule with publishedWithinDays for a daily feed of new jobs.

Example input

{
  "keywords": [
    "Data Analyst",
    "Elektriker"
  ],
  "sources": [
    "arbeitsagentur",
    "eures"
  ],
  "baLocations": [
    "Berlin",
    "München"
  ],
  "baRadiusKm": 25,
  "euresLocations": [
    "at",
    "ch"
  ],
  "publishedWithinDays": 7,
  "maxResultsPerSearch": 200
}

Example output (one item, shortened)

{
  "source": "arbeitsagentur",
  "jobId": "10001-1003690738-S",
  "title": "Junior Data Analyst militärische Fahrzeuge (m/w/d)",
  "employer": "IABG Industrieanlagen Betriebs-GmbH",
  "occupation": "Data-Analyst/in",
  "occupations": [
    "Data-Analyst/in"
  ],
  "offerType": "job",
  "location": "85521 Ottobrunn",
  "city": "Ottobrunn",
  "postalCode": "85521",
  "region": "BAYERN",
  "country": "DE",
  "latitude": 48.054645,
  "longitude": 11.6603415,
  "locations": [
    {
      "city": "Ottobrunn",
      "postalCode": "85521",
      "region": "BAYERN",
      "country": "DE",
      "latitude": 48.054645,
      "longitude": 11.6603415
    },
    {
      "city": "Berlin",
      "postalCode": null,
      "region": "BERLIN",
      "country": "DE",
      "latitude": 52.4926833,
      "longitude": 13.4025753
    },
    {
      "city": "Hamburg",
      "postalCode": null,
      "region": "HAMBURG",
      "country": "DE",
      "latitude": 53.5460482,
      "longitude": 10.0393137
    }
  ],
  "workTime": [
    "fulltime"
  ],
  "contractType": "permanent",
  "homeOffice": true,
  "salary": {
    "min": 45000,
    "max": 65000,
    "currency": "EUR",
    "period": "year"
  },
  "startDate": "2026-09-29",
  "postedAt": "2026-09-11",
  "updatedAt": "2026-09-29T16:47:05.688",
  "careerChangersWelcome": null,
  "privateRecruiter": null,
  "numberOfPosts": null,
  "url": "https://www.arbeitsagentur.de/jobsuche/jobdetail/10001-1003690738-S",
  "externalUrl": null,
  "languages": [],
  "descriptionText": "**Beschreibung der Stelle**\n\nWollen Sie unser Team der Datenanalyse für militärische Fahrzeuge verstärken?\nMöchten Sie Verantwortung für die Auswertung von verschiedenen technischen Daten übernehmen? Haben Sie Lust sich ...",
  "searchKeyword": "Data Analyst",
  "searchLocation": "Berlin",
  "scrapedAt": "2026-10-07T23:22:21.558Z"
}

Every run's dataset can be downloaded as JSON, CSV, Excel, XML or HTML from the Apify Console, or via https://api.apify.com/v2/datasets/<datasetId>/items?format=csv.

Run it from code

Python

from apify_client import ApifyClient  # pip install apify-client

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
  "keywords": [
    "Data Analyst",
    "Elektriker"
  ],
  "sources": [
    "arbeitsagentur",
    "eures"
  ],
  "baLocations": [
    "Berlin",
    "München"
  ],
  "baRadiusKm": 25,
  "euresLocations": [
    "at",
    "ch"
  ],
  "publishedWithinDays": 7,
  "maxResultsPerSearch": 200
}
run = client.actor("tinyrex/dach-jobs-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

JavaScript / Node.js

import { ApifyClient } from 'apify-client'; // npm i apify-client

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('tinyrex/dach-jobs-scraper').call({
  "keywords": [
    "Data Analyst",
    "Elektriker"
  ],
  "sources": [
    "arbeitsagentur",
    "eures"
  ],
  "baLocations": [
    "Berlin",
    "München"
  ],
  "baRadiusKm": 25,
  "euresLocations": [
    "at",
    "ch"
  ],
  "publishedWithinDays": 7,
  "maxResultsPerSearch": 200
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

curl (no SDK)

# Runs the actor and returns the results directly (CSV here; use format=json for JSON)
curl -X POST "https://api.apify.com/v2/acts/tinyrex~dach-jobs-scraper/run-sync-get-dataset-items?format=csv" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords": ["Data Analyst", "Elektriker"], "sources": ["arbeitsagentur", "eures"], "baLocations": ["Berlin", "München"], "baRadiusKm": 25, "euresLocations": ["at", "ch"], "publishedWithinDays": 7, "maxResultsPerSearch": 200}' > results.csv

Get your API token in Apify Console → Settings → API & Integrations. The free Apify plan includes monthly credit that is enough to try this.

Use it from an AI agent (MCP)

The Apify MCP server exposes this actor as a tool for Claude, Cursor, VS Code, n8n and other MCP clients. Add this to your client's MCP config (or use the OAuth flow at mcp.apify.com instead of a token):

{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=tinyrex/dach-jobs-scraper",
      "headers": {
        "Authorization": "Bearer <YOUR_APIFY_TOKEN>"
      }
    }
  }
}

Then ask in plain language, e.g. "Bundesagentur für arbeit jobs api for this list and give me a table".

Pricing

Pay per result: $1 per 1,000 jobs with full descriptions. You can cap the cost of every run in the run options.

FAQ

Does the Arbeitsagentur have an official jobs API?

Yes, the public Jobsuche API that powers arbeitsagentur.de. The actor uses it (and the EURES public search), so results match the official portals.

Can I get jobs in Austria and Switzerland?

Yes, through EURES, which aggregates vacancies from the AMS and other European public employment services.

Are full descriptions included?

Yes, at the same price of $1 per 1,000 jobs.

Try it on Apify →

More guides