# Arbeitsagentur Jobs Scraper — German Federal Job Board (`hipersoft/arbeitsagentur-jobs-scraper`) Actor

Scrape jobs from the Bundesagentur für Arbeit (arbeitsagentur.de): title, employer, occupation, salary range, address with coordinates, work time, contract, home office, dates and full description. Search by keyword, city and radius across 1M+ German jobs.

- **URL**: https://apify.com/hipersoft/arbeitsagentur-jobs-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.001 / job

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Arbeitsagentur Jobs Scraper: German Federal Job Board (Bundesagentur für Arbeit)

**Arbeitsagentur Jobs Scraper** extracts job listings from the **Bundesagentur für Arbeit Jobsuche (arbeitsagentur.de)**, Germany's largest job board with **more than a million open positions**. Each job includes the **title, employer, occupation, salary range, full address with GPS coordinates, work-time model, contract type, home-office option, start date, publication dates** and, optionally, the **full job description**. You can search by keyword, city and radius, then export to **CSV, Excel or JSON**.

### What does Arbeitsagentur Jobs Scraper do?

The Bundesagentur für Arbeit (Federal Employment Agency) runs the official German job exchange, where employers, recruiters and staffing agencies post jobs, apprenticeships and internships across every industry. This scraper turns that job board into a clean dataset:

- 🇩🇪 **Search all of Germany** or any city, postal code or region with a radius.
- 🔎 **Any keyword or job title**: Softwareentwickler, Pflegefachkraft, Lagerhelfer, Elektriker, Buchhalter…
- 💶 **Salary ranges** where the employer provides them (annual or hourly).
- 📍 **Exact location**: street, postal code, city, state and latitude/longitude.
- 🕒 **Work time and contract**: full-time, part-time, shifts, mini-job, home office, permanent or fixed-term.
- 🎓 **Jobs, apprenticeships (Ausbildung), internships and self-employment** offers.
- 📝 **Full job descriptions** and the recruiting partner, if you want them.
- 🚫 **Filter out temp agencies (Zeitarbeit)** to get direct employers only.

### What data can you scrape from arbeitsagentur.de?

| Field | Description |
|---|---|
| Title | Job title (Stellenangebotstitel) |
| Company | Employer name (Firma) |
| Occupation | Main occupation (Hauptberuf) and all related occupations |
| Reference number | Arbeitsagentur reference number (Referenznummer) |
| Job link | Link to the job on arbeitsagentur.de |
| Address | Street, postal code, city, state, country |
| Coordinates | Latitude and longitude |
| Work time | Full-time, part-time, shift/night/weekend, mini-job |
| Home office | Whether home office is possible |
| Contract | Permanent or fixed-term |
| Salary | Salary type and min/max range |
| Start date | Earliest start date |
| Dates | First published, current publication, last updated |
| Career changers | Suitable for career changers (Quereinsteiger) |
| Description | Full job description (optional) |
| Temp agency / recruiter flags | Arbeitnehmerüberlassung, private recruiter (with description) |
| Partner | Recruiting partner name and website (with description) |

### Use cases for German job data

- **Recruiting and staffing agencies**: find companies hiring for the roles you place, by region.
- **Sales lead generation**: hiring companies are growing companies. Build B2B lead lists by industry and city.
- **Labour market research**: track demand for occupations such as nurses, truck drivers and IT specialists across German regions.
- **Salary benchmarking**: collect posted salary ranges by occupation and location.
- **Job boards and aggregators**: import fresh German jobs into your own site or app.
- **Relocation and expat services**: find English-friendly or specific jobs in German cities.

### How to scrape jobs from the Arbeitsagentur

1. Click **Try for free** to open Arbeitsagentur Jobs Scraper in Apify Console.
2. Enter **job titles or keywords** and a **location** with a **radius**.
3. Optionally choose the **offer type**, **work time**, **contract**, **published within** days, or **exclude temp agencies**.
4. Switch on **Include full job description** if you need the job text.
5. Click **Start**, then download the jobs as **CSV, Excel or JSON**.

### Input

#### Example input

```json
{
  "keywords": ["Softwareentwickler", "Pflegefachkraft"],
  "location": "Berlin",
  "radiusKm": 25,
  "offerType": "job",
  "workTime": ["fullTime"],
  "contractType": "permanent",
  "publishedWithinDays": 7,
  "excludeTempAgencies": true,
  "includeDescription": true,
  "maxItems": 500
}
```

| Field | Description |
|---|---|
| **Job titles or keywords (was)** | One search per keyword. Leave empty for all jobs. |
| **Location (wo)** | City, postal code or region. Leave empty for all of Germany. |
| **Radius (km)** | Search radius around the location. |
| **Offer type** | Jobs, apprenticeships, internships, self-employment or any. |
| **Work time** | Full-time, part-time, shift/night/weekend, home office, mini-job. |
| **Contract** | Permanent or fixed-term. |
| **Published within (days)** | Only recent jobs (1–100 days). |
| **Exclude temp agencies** | Leave out Zeitarbeit / staffing agencies. |
| **Include full job description** | Adds the description and recruiting partner. |
| **Max jobs** | Stop after this many jobs (0 = no limit). |

#### Get new jobs every day

Set **Published within (days)** to `1` and create an Apify [schedule](https://docs.apify.com/platform/schedules) to collect every new matching job each morning.

### Output

#### Job example

```json
{
  "referenceNumber": "19069-423893-S",
  "title": "Python dev",
  "company": "Join Solutions GmbH",
  "occupation": "Softwareentwickler/in",
  "url": "https://www.arbeitsagentur.de/jobsuche/jobdetail/19069-423893-S",
  "city": "Berlin",
  "postalCode": "10119",
  "street": "Torstraße 1",
  "region": "BERLIN",
  "latitude": 52.52751,
  "longitude": 13.4153145,
  "workTime": ["full-time"],
  "homeOffice": false,
  "contract": "permanent",
  "salaryType": "JAHRESGEHALT",
  "salaryMin": 50000,
  "salaryMax": 65000,
  "startDate": "2026-09-30",
  "firstPublished": "2026-08-31",
  "publishedFrom": "2026-09-28",
  "description": "## Building Digital Products for the Cinema Industry …",
  "isTempAgency": false,
  "partnerName": "Join Solutions GmbH",
  "partnerUrl": "https://www.join.com"
}
```

#### Output schema

| Field | Type | Description |
|---|---|---|
| `referenceNumber` | string | Arbeitsagentur reference number. |
| `title` | string | Job title. |
| `company` | string | Employer. |
| `occupation` | string | Main occupation. |
| `allOccupations` | array | All occupations linked to the job. |
| `offerType` | string | `ARBEIT`, `AUSBILDUNG`, `PRAKTIKUM_TRAINEE`, `SELBSTAENDIGKEIT`. |
| `url` | string (URL) | Job page. |
| `city`, `postalCode`, `street`, `region`, `country` | string | Job address. |
| `latitude`, `longitude` | number | Coordinates. |
| `allLocations` | array | All job locations. |
| `workTime` | array | Working-time models. |
| `homeOffice` | boolean | Home office possible. |
| `contract` | string | `permanent` or `fixed-term`. |
| `salaryType` | string | Annual or hourly salary. |
| `salaryMin`, `salaryMax` | number | Salary range. |
| `startDate` | string | Earliest start date. |
| `suitableForCareerChangers` | boolean | Open to career changers. |
| `firstPublished`, `publishedFrom` | string | Publication dates. |
| `updatedAt` | string | Last update. |
| `description` | string | Full job description (optional). |
| `isTempAgency` | boolean | Temporary staffing job (with description). |
| `isPrivateRecruiter` | boolean | Posted by a private recruiter (with description). |
| `partnerName`, `partnerUrl` | string | Recruiting partner (with description). |
| `searchTerm` | string | Keyword that found the job. |
| `scrapedAt` | string (ISO date) | When the row was collected. |

### How much does it cost to scrape the Arbeitsagentur?

Arbeitsagentur Jobs Scraper uses **pay-per-job** pricing: a small fixed price per job, with automatic discounts on higher Apify plans. See the **Pricing** tab for the exact price.

### More job data

- [StepStone Scraper](https://apify.com/hipersoft/stepstone-scraper): jobs from StepStone Germany and Europe.
- [Indeed Scraper](https://apify.com/hipersoft/indeed-scraper): jobs from Indeed.
- [LinkedIn Jobs Scraper](https://apify.com/hipersoft/linkedin-jobs-scraper): jobs from LinkedIn.
- [Company Jobs Scraper](https://apify.com/hipersoft/company-jobs-scraper): jobs straight from company career pages.

### FAQ

**How many jobs are on the Arbeitsagentur job board?**
Usually well over a million jobs, apprenticeships and internships. Narrow it down with keywords, location and filters.

**Can I search in English?**
Most listings are in German, so German job titles (e.g. `Softwareentwickler`, `Pflegefachkraft`) give the best results. English titles like `Python` also work.

**Are salaries included?**
Yes, when the employer provides a salary range. You get `salaryMin`, `salaryMax` and whether it's annual or hourly.

**Can I exclude temporary staffing agencies?**
Yes. Switch on **Exclude temp agencies (Zeitarbeit)**.

**Can I get apprenticeships (Ausbildungsplätze)?**
Yes. Set **Offer type** to Apprenticeships.

**How fresh is the data?**
Every run reads the live job board. Use **Published within (days)** for only the newest jobs.

**What formats can I export?**
CSV, Excel, JSON, XML, HTML and RSS, or read the results through the Apify API.

**Can I integrate Arbeitsagentur Jobs Scraper with other apps?**
Arbeitsagentur Jobs Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JS/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

**Is it legal to scrape the Arbeitsagentur?**
The scraper only collects publicly listed job offers. You are responsible for using the data in line with the Bundesagentur für Arbeit's terms and the GDPR.

### Related Actors

- [StepStone Scraper](https://apify.com/hipersoft/stepstone-scraper)
- [Indeed Scraper](https://apify.com/hipersoft/indeed-scraper)

### Notes

Original clean-room implementation. Returns only public data; you are responsible for compliance with the Bundesagentur für Arbeit's terms. Not affiliated with the Bundesagentur für Arbeit.

# Actor input Schema

## `keywords` (type: `array`):

What to search for, e.g. Python, Pflegefachkraft, Lagerhelfer, Elektriker. Each keyword is a separate search. Leave empty for all jobs.

## `location` (type: `string`):

City, postal code or region in Germany, e.g. Berlin, 80331, Bayern. Leave empty for all of Germany.

## `radiusKm` (type: `integer`):

Search radius around the location in kilometres.

## `offerType` (type: `string`):

Type of listing.

## `workTime` (type: `array`):

Only jobs with these working-time models. Leave empty for all.

## `contractType` (type: `string`):

Permanent or fixed-term contracts only.

## `publishedWithinDays` (type: `integer`):

Only jobs published in the last N days (max 100). 0 means any time.

## `excludeTempAgencies` (type: `boolean`):

Leave out jobs from temporary staffing agencies.

## `includeDescription` (type: `boolean`):

Open each job to add the full description and the recruiting partner. Slower.

## `maxItems` (type: `integer`):

Stop after this many jobs. 0 means no limit.

## `proxyConfiguration` (type: `object`):

Not required for normal use.

## Actor input object example

```json
{
  "keywords": [
    "Softwareentwickler"
  ],
  "location": "Berlin",
  "radiusKm": 25,
  "offerType": "job",
  "contractType": "any",
  "publishedWithinDays": 0,
  "excludeTempAgencies": false,
  "includeDescription": false,
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

The results as dataset items.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "Softwareentwickler"
    ],
    "location": "Berlin",
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/arbeitsagentur-jobs-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": ["Softwareentwickler"],
    "location": "Berlin",
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/arbeitsagentur-jobs-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "Softwareentwickler"
  ],
  "location": "Berlin",
  "maxItems": 100
}' |
apify call hipersoft/arbeitsagentur-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/arbeitsagentur-jobs-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/SW1TkC8sEGRgxwVeS/builds/G1hxaLveKUXsqMx0P/openapi.json
