Arbeitsagentur Jobs Scraper avatar

Arbeitsagentur Jobs Scraper

Pricing

from $0.80 / 1,000 item extracteds

Go to Apify Store
Arbeitsagentur Jobs Scraper

Arbeitsagentur Jobs Scraper

Search public Bundesagentur für Arbeit vacancies and export titles, employers, locations, schedules, contracts, dates, descriptions, reference numbers, and source URLs.

Pricing

from $0.80 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Search arbeitsagentur jobs by keyword and location and export structured vacancies from the public Bundesagentur für Arbeit Jobsuche.

The Actor returns job titles, employers, locations, work-time and contract fields, publication dates, descriptions, reference numbers, application links, and source URLs. Use it for German recruiting research, vacancy aggregation, and repeatable labor-market snapshots.

What does Arbeitsagentur Jobs Scraper do?

Arbeitsagentur Jobs Scraper turns public Jobsuche result and detail pages into a clean Apify dataset.

Give it a job keyword and German location, or paste a saved Jobsuche URL. The Actor paginates results, deduplicates vacancies by reference number, and optionally opens each public detail page for the complete description and extra employment flags.

It uses the public web pages anonymously. No Arbeitsagentur login or private API credential is required.

Who is this Actor for?

  • Recruiters monitoring employers and roles in a German city.
  • Labor-market analysts comparing occupations, locations, schedules, and posting dates.
  • Job aggregators importing public listings into a normalized feed.
  • ATS and HR teams enriching internal vacancy data with reference numbers and descriptions.
  • Sales researchers finding organizations with current hiring demand.

Why use it?

  • Search by occupation, skill, training term, city, postal code, and radius.
  • Replay real public Arbeitsagentur Jobbörse searches from saved URLs.
  • Choose fast card-only exports or full detail enrichment.
  • Export stable reference numbers for deduplication and change comparison.
  • Download results as JSON, CSV, Excel, XML, or through the dataset API.
  • Run the same input on an Apify schedule for repeatable snapshots.

What Arbeitsagentur job data can I extract?

FieldMeaning
titlePublic vacancy title
employerEmployer or advertiser
referenceNumberArbeitsagentur reference number
jobUrlPublic Jobsuche detail URL
externalApplyUrlEmployer or partner application URL when present
occupationMain source occupation
jobTypeSource listing type, such as ARBEIT
locationsPostal code, city, region, country, and coordinates
city, regionConvenient first-location fields
distanceKmDistance from the requested place when available
remotePossibleHome-office indicator
workTimesNormalized full-time, part-time, and shift labels
contractDurationSource contract-duration descriptor
salaryInfoSource salary descriptor when provided
startDatePlanned employment start date
publicationDateCurrent publication date
firstPublicationDateFirst publication date
updatedAtSource update timestamp
descriptionFull text when detail enrichment succeeds
suitableForCareerChangersCareer-changer suitability flag
marginalEmploymentMarginal-employment flag
disabilityPreferredDisability preference flag
privatePlacementPrivate-placement flag
temporaryWorkTemporary-agency-work flag
sourceSearchUrlSearch that produced the record
sourcePageOne-based result page
scrapedAtUTC collection timestamp

Fields can be null when the publisher did not provide them. description is null in card-only mode.

How to scrape Arbeitsagentur jobs

  1. Open the Actor input in Apify Console.
  2. Enter a keyword such as Softwareentwickler, Pflegefachkraft, or Ausbildung.
  3. Enter a German city, postal code, or place name.
  4. Optionally choose a radius.
  5. Set the maximum jobs and pages.
  6. Keep Include full job details enabled when you need descriptions.
  7. Start the run and open the default dataset.
  8. Download the results or connect the dataset to your workflow.

Input parameters

keyword

A role, occupation, skill, or training term accepted by Jobsuche. German terms usually produce the most relevant results.

location

A German city, postal code, or place name. You may search with only a keyword or only a location, but combining both is usually more useful.

radiusKm

Optional radius from 1 to 200 kilometers. Omit it to use the source default.

searchUrls

One or more public URLs beginning with:

https://www.arbeitsagentur.de/jobsuche/suche

When supplied, these URLs replace keyword, location, and radiusKm. This makes a browser search reproducible.

maxItems

Maximum unique records across all searches, from 1 to 10,000. The default is 50.

maxPages

Safety cap per search, from 1 to 400. Jobsuche currently shows up to 25 cards per page.

includeDetails

When true, the Actor opens each job detail page for the description and detail-only flags. Set it to false for a faster card-only snapshot.

Example input

{
"keyword": "Softwareentwickler",
"location": "Berlin",
"radiusKm": 25,
"maxItems": 10,
"maxPages": 2,
"includeDetails": true
}

Example output

The exact values change as the public job board changes. A current record has this shape:

{
"title": "Softwareentwickler (m/w/d)",
"employer": "Example Technology GmbH",
"referenceNumber": "10000-1234567890-S",
"jobUrl": "https://www.arbeitsagentur.de/jobsuche/jobdetail/10000-1234567890-S",
"occupation": "Softwareentwickler/in",
"city": "Berlin",
"region": "BERLIN",
"remotePossible": true,
"workTimes": ["FULL_TIME"],
"contractDuration": "UNBEFRISTET",
"publicationDate": "2026-08-15",
"description": "Develop and maintain web applications with our product team.",
"sourcePage": 1,
"scrapedAt": "2026-08-29T06:00:00.000Z"
}

Search URL workflow

Build a search in the Arbeitsagentur Jobbörse interface, copy its URL, and add it to searchUrls.

This is useful when the source interface has already encoded the filters you want. The Actor validates that each URL belongs to the public Arbeitsagentur Jobsuche search path.

Monitoring new and changed vacancies

Create an Apify Task with a fixed keyword, location, radius, and item limit. Schedule it daily or weekly.

Use referenceNumber as the stable deduplication key. Compare firstPublicationDate, updatedAt, and scrapedAt between datasets to identify new or changed records. The Actor creates snapshots; it does not send alerts or maintain a cross-run history by itself.

How much does it cost to scrape Arbeitsagentur jobs?

The Actor uses pay-per-event pricing: one $0.0024 start event per run plus one item event per saved unique job. The BRONZE item price is $0.001336; higher account tiers receive the decreasing tier prices configured on Apify.

BRONZE examples:

Saved jobsBRONZE calculation
10$0.0024 + 10 × $0.001336
25$0.0024 + 25 × $0.001336
100$0.0024 + 100 × $0.001336
1,000$0.0024 + 1,000 × $0.001336

Rejected, duplicate, or failed records are not charged as items. Apify may separately apply normal platform usage rules for your account.

Tips for useful results

  • Prefer German occupation terms for German-language vacancies.
  • Start broad, then narrow by city and radius.
  • Keep maxPages large enough for maxItems; each page currently has up to 25 cards.
  • Disable details when you only need title, employer, location, dates, and links.
  • Enable details for descriptions and placement/employment flags.
  • Use several separate Tasks when you need independent role-and-city monitoring streams.

Reliability and failure behavior

The Actor validates source URLs and response structure. A malformed input or failed search page fails the run instead of returning a misleading empty success.

Transient requests are retried twice. If an individual detail page fails, the Actor preserves the useful search-card record and logs that its description enrichment was unavailable.

A valid search with no current matches succeeds with an empty dataset.

Integrations

Send the default dataset to Google Sheets, Airtable, BigQuery, Snowflake, a data warehouse, or an internal recruiting service.

Common workflows include:

  • employer hiring-demand dashboards;
  • occupation and regional vacancy counts;
  • ATS enrichment by reference number;
  • public job-board aggregation;
  • scheduled snapshots for change analysis;
  • lead lists of organizations actively recruiting.

Use the Actor through the API

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/arbeitsagentur-germany-job-listings').call({
keyword: 'Softwareentwickler',
location: 'Berlin',
maxItems: 25,
includeDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/arbeitsagentur-germany-job-listings').call(run_input={
'keyword': 'Pflegefachkraft',
'location': 'München',
'maxItems': 25,
'includeDetails': True,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~arbeitsagentur-germany-job-listings/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"keyword":"Ausbildung","location":"Hamburg","maxItems":20}'

MCP setup

Use the Actor through the Apify MCP server from Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/arbeitsagentur-germany-job-listings"

Claude Desktop, Cursor, and VS Code

Claude Desktop, Cursor, and VS Code clients can use this MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/arbeitsagentur-germany-job-listings"
}
}
}

Example prompts:

  • “Export 50 current Softwareentwickler vacancies near Berlin.”
  • “Find Pflegefachkraft jobs in München and summarize work-time options.”
  • “Create a snapshot of Ausbildung vacancies in Hamburg and group them by employer.”

Limitations

  • The Actor extracts public anonymous Jobsuche pages only.
  • It does not log in, submit applications, contact employers, or access private employer systems.
  • Search ranking and availability are controlled by Arbeitsagentur.
  • Some employers omit salary, remote-work, contract, or external application fields.
  • The public page structure can change; a structural mismatch fails visibly rather than silently returning fabricated data.
  • Monitoring history and alerts require an Apify schedule plus your own comparison or integration.

Responsible use and legality

This Actor collects publicly displayed vacancy data. You are responsible for your lawful basis, retention, redistribution, and compliance with applicable terms, copyright, privacy, and database-right requirements.

Avoid collecting or republishing personal information unless your use has a valid legal basis. Do not use the Actor to overload the source or automate job applications.

FAQ

Can I schedule recurring Arbeitsagentur jobs monitoring?

Yes. Save the input as an Apify Task and schedule it. Compare datasets by referenceNumber and updatedAt; the Actor itself does not send alerts.

Does this Actor require a login?

No. It reads only public anonymous Jobsuche pages.

Troubleshooting

Why is the dataset empty?

Try the same keyword and location in the public Jobsuche interface. Broaden the keyword, increase the radius, or remove one filter. A valid search can naturally have no current vacancies.

Why is description null?

Check that includeDetails is true. A detail request can also fail while the card record remains useful; inspect the run log for the reference number.

Why did my direct URL fail?

Only public https://www.arbeitsagentur.de/jobsuche/suche URLs are accepted. Detail pages and unrelated Arbeitsagentur pages are not search inputs.

Why did the run stop before maxItems?

The source may have fewer unique results, or maxPages may have been reached. Increase maxPages when more source pages are available.

Support

If a run fails or a documented field is missing, open an Actor issue with the run link and the non-sensitive input. Include whether detail enrichment was enabled.