Arbeitsagentur Jobs Scraper
Pricing
from $0.80 / 1,000 item extracteds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
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?
| Field | Meaning |
|---|---|
title | Public vacancy title |
employer | Employer or advertiser |
referenceNumber | Arbeitsagentur reference number |
jobUrl | Public Jobsuche detail URL |
externalApplyUrl | Employer or partner application URL when present |
occupation | Main source occupation |
jobType | Source listing type, such as ARBEIT |
locations | Postal code, city, region, country, and coordinates |
city, region | Convenient first-location fields |
distanceKm | Distance from the requested place when available |
remotePossible | Home-office indicator |
workTimes | Normalized full-time, part-time, and shift labels |
contractDuration | Source contract-duration descriptor |
salaryInfo | Source salary descriptor when provided |
startDate | Planned employment start date |
publicationDate | Current publication date |
firstPublicationDate | First publication date |
updatedAt | Source update timestamp |
description | Full text when detail enrichment succeeds |
suitableForCareerChangers | Career-changer suitability flag |
marginalEmployment | Marginal-employment flag |
disabilityPreferred | Disability preference flag |
privatePlacement | Private-placement flag |
temporaryWork | Temporary-agency-work flag |
sourceSearchUrl | Search that produced the record |
sourcePage | One-based result page |
scrapedAt | UTC 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
- Open the Actor input in Apify Console.
- Enter a keyword such as
Softwareentwickler,Pflegefachkraft, orAusbildung. - Enter a German city, postal code, or place name.
- Optionally choose a radius.
- Set the maximum jobs and pages.
- Keep Include full job details enabled when you need descriptions.
- Start the run and open the default dataset.
- 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 jobs | BRONZE 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
maxPageslarge enough formaxItems; 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 osfrom apify_client import ApifyClientclient = 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().itemsprint(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.
Related automation-lab Actors
- Greenhouse Jobs Scraper
- Arbeitnow EU and DACH Jobs Scraper
- StepStone Jobs and Employer Contacts Scraper
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.