Arbeitsagentur Job Scraper — Salary, Contact & Details
Pricing
from $1.30 / 1,000 results
Arbeitsagentur Job Scraper — Salary, Contact & Details
Scrape Germany's largest job board (arbeitsagentur.de). Extracts salary amount, employer email/phone, multi-location, home-office, occupation codes and full descriptions from the v6 API. Richer data than any competitor — no proxy or login needed.
Pricing
from $1.30 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Arbeitsagentur Jobs Scraper — Salary, Employer Contact & Full Job Details
Germany's largest job board at your fingertips. This actor scrapes Bundesagentur für Arbeit (arbeitsagentur.de) — the official German Federal Employment Agency portal — and returns structured, enriched job listings with salary data, employer contact information, multi-location support, occupation classification, and full job descriptions. Built on the v6 REST API for richer data than any competitor: exact salaries, home-office flags, career-changer suitability, and detailed work-time breakdowns.
No proxy. No browser. No login. The underlying API is publicly accessible — we just structure the data for you.
Why This Actor?
Richer Than the Competition
Most arbeitsagentur.de scrapers use the older v4 API or basic HTML parsing. We use the v6 search API + v4 detail enrichment, giving you fields that no other actor extracts:
salaryAmount— exact salary figure (e.g.13.90) from the API'sfestgehaltfield, not just textsalaryPeriod—STUNDENLOHN/MONATSLOHN/JAHRESLOHN(hourly / monthly / yearly)salaryType—FESTGEHALT(fixed) vsVERHANDLUNGSBASIS(negotiable)isHomeOffice— dedicated remote-work boolean from the APIcareerChangeSuitable—quereinstiegGeeignetflag for career changerslocations— full JSON array of all job locations, not just the first onecontractDuration—BEFRISTET(fixed-term) /UNBEFRISTET(permanent)- Detailed work-time flags — full-time, part-time (morning/afternoon/evening/flex split), shift/night/weekend
allOccupations— all matched occupation classifications, not just the primary
Contact & Lead Generation
When detail enrichment is enabled (includeDetails: true), we mine each job description for:
- Email addresses — extracted with regex from the full description
- Phone numbers — German landline and mobile patterns (+49, 0049, 0...)
- External URLs — company career pages, application portals
Requirements Parsing
We automatically detect:
- Education level — PhD/Doctorate, Master/Diplom, Bachelor, Ausbildung (vocational), Quereinstieg
- Language requirements — Deutsch and/or Englisch with CEFR levels (A1–C2)
Multi-Location Jobs
Some jobs are at multiple sites. We output a full locations JSON array with city, postal code, street, region, latitude, and longitude for each site — not just the primary location like other actors.
Data Fields
Every job record includes these fields:
| Field | Description | Source |
|---|---|---|
referenceNumber | BA reference number (e.g. 12016-10004701286-S) | v6 API |
title | Job title in German | v6 API |
occupation | Primary occupation classification (Hauptberuf) | v6 API |
allOccupations | All matched occupation codes | v6 API |
offerType | ARBEIT / AUSBILDUNG / SELBSTAENDIGKEIT / PRAKTIKUM | v6 API |
employer | Company / organization name | v6 API |
employerHash | Hash for fetching the employer logo | v6 API |
employerLogo | Logo image URL (if available) | logo endpoint |
isPrivateAgency | Posted by a private recruitment agency | detail API |
isTempStaffing | Temporary staffing / Arbeitnehmerüberlassung | detail API |
allianzPartner | Partner network name | detail API |
allianzPartnerUrl | Partner network URL | detail API |
locations | JSON array of all job sites (city, plz, street, region, lat, lng) | detail API |
city | Primary city | v6 API |
postalCode | Primary postal code (PLZ) | v6 API |
street | Primary street address | v6 API |
region | Federal state / region | v6 API |
country | Country (DEUTSCHLAND) | v6 API |
latitude | GPS latitude | v6 API |
longitude | GPS longitude | v6 API |
distanceKm | Distance from search location | v6 API |
salary | Formatted salary display (e.g. 13,90 €/Std.) | built |
salaryAmount | Exact salary figure from API | v6 API |
salaryType | FESTGEHALT / VERHANDLUNGSBASIS | v6 API |
salaryPeriod | STUNDENLOHN / MONATSLOHN / JAHRESLOHN | v6 API |
isFullTime | Full-time position | v6 API |
isPartTime | Part-time options available | v6 API |
isHomeOffice | Remote / home-office possible | v6 API |
isMiniJob | Mini-job (geringfügige Beschäftigung) | v6 API |
isShiftWork | Shift / night / weekend work | v6 API |
contractDuration | BEFRISTET / UNBEFRISTET | v6 API |
careerChangeSuitable | Suitable for career changers (Quereinsteiger) | v6 API |
disabilityFriendly | Suitable for people with disabilities | detail API |
datePosted | First publication date (YYYY-MM-DD) | v6 API |
dateModified | Last modification timestamp (ISO 8601) | v6 API |
startDate | Earliest start date (YYYY-MM-DD) | v6 API |
description | Full job description (text) | detail API |
extractedEmail | Email found in description | extracted |
extractedPhone | Phone number found in description | extracted |
extractedUrl | External URL found in description | extracted |
educationRequired | Education level (PhD/Master/Bachelor/Ausbildung) | extracted |
languageRequirements | Language requirements (Deutsch/Englisch + CEFR level) | extracted |
externalUrl | External application URL (externeURL) | v6 API |
portalUrl | Job page on arbeitsagentur.de | built |
searchKeyword | Keyword used for this search | input |
searchLocation | Location used for this search | input |
scrapedAt | ISO scrape timestamp | runtime |
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
keyword | string | — | Job title or keyword, e.g. "Softwareentwickler", "Pflegefachkraft", "Marketing Manager" |
location | string | — | City, region or postal code, e.g. "Berlin", "München", "10115" |
radius | integer | 25 | Search radius in km (0–200). 0 = exact location match only |
employer | string | — | Search by employer name, e.g. "Siemens AG", "Deutsche Bahn" |
startUrls | array | — | Paste arbeitsagentur.de search or detail URLs |
angebotsart | select | All | Offer type: Arbeit / Selbstständigkeit / Ausbildung / Praktikum |
arbeitszeit | select | All | Working time: Vollzeit / Teilzeit / Homeoffice / Minijob / Schicht |
befristung | select | All | Contract: Befristet (fixed-term) / Unbefristet (permanent) |
behinderung | boolean | false | Disability-friendly jobs only |
publishedSince | integer | 0 | Only jobs from last N days (1 = today, 7 = week, 30 = month). 0 = all |
includeDetails | boolean | true | Fetch full description, multi-location, contacts. Turn off for speed |
maxItems | integer | 100 | Max jobs to scrape. 0 = no limit |
maxPagesPerSearch | integer | 10 | Max result pages per query (100 jobs/page). 0 = no limit |
requestDelay | integer | 100 | Delay between API requests in ms |
maxConcurrency | integer | 10 | Parallel detail requests |
language | select | original | Output language: original German or German + English |
Search Modes
1. Keyword + Location (default):
{"keyword": "Softwareentwickler","location": "Berlin","radius": 25}
2. Employer-focused:
{"employer": "Siemens AG","location": "München"}
3. Start URLs (advanced filters):
{"startUrls": ["https://www.arbeitsagentur.de/jobsuche/suche?was=Ingenieur&wo=München&umkreis=50&arbeitszeit=vz"]}
4. Direct job detail URLs:
{"startUrls": ["https://www.arbeitsagentur.de/jobsuche/jobdetail/12016-10004701286-S"]}
Use Cases
1. Recruitment & Talent Sourcing
Identify active hiring companies, extract HR contact emails and phone numbers, and build targeted outreach lists. The employer search mode lets you monitor specific companies' hiring patterns.
2. Labour Market Intelligence
Track demand by occupation (occupation field), region, and time. Analyze which region (Bundesland) is hiring for which roles. Use publishedSince to see only fresh postings.
3. Salary Benchmarking
The salaryAmount + salaryPeriod fields give you exact, structured salary data for compensation benchmarking across occupations and regions. Build salary heatmaps with latitude/longitude coordinates.
4. Lead Generation for B2B Services
Companies posting jobs are growing — they need office space, IT services, recruitment software, training, and more. Extract employer names, locations, and extractedEmail/extractedPhone for sales prospecting.
5. Competitive Intelligence
Monitor which competitors are hiring, for which roles, and in which cities. The employer search parameter makes this trivial.
6. Academic & Policy Research
The Bundesagentur data is the most comprehensive source of German labour market information. Export structured data for economic research, workforce planning, and policy analysis.
7. Job Board / Aggregator
Feed structured job data into your own job board, search engine, or analytics dashboard. Clean, consistent field names across all records.
8. AI / ML Training Data
Use the description field (when includeDetails: true) and structured metadata for training NLP models on job classification, skill extraction, or salary prediction.
Example Output
{"referenceNumber": "12016-10004701286-S","title": "Softwareentwickler/in - Medienbüro!","occupation": "Softwareentwickler/in","allOccupations": "Softwareentwickler/in","offerType": "ARBEIT","employer": "PerZukunft Arbeitsvermittlung GmbH&Co.KG","employerHash": "K-odMSiWh6Flr85j5gueeE_9FFhpOtsHIPbrBKoeCCs=","employerLogo": "https://rest.arbeitsagentur.de/jobboerse/jobsuche-service/ct/v1/arbeitgeberlogo/K-odMSiWh6Flr85j5gueeE_9FFhpOtsHIPbrBKoeCCs%3D","isPrivateAgency": "true","isTempStaffing": "false","locations": "[{\"city\":\"Berlin\",\"postalCode\":\"12167\",\"region\":\"BERLIN\",\"lat\":\"52.449107911001\",\"lng\":\"13.333178738\"},{\"city\":\"Berlin\",\"postalCode\":\"13407\",\"region\":\"BERLIN\",\"lat\":\"52.571956228\",\"lng\":\"13.351067072\"}]","city": "Berlin","postalCode": "10249","region": "BERLIN","country": "DEUTSCHLAND","latitude": "52.523643977","longitude": "13.445373265","distanceKm": "2","salary": "13,90 €/Std.","salaryAmount": "13.9","salaryType": "FESTGEHALT","salaryPeriod": "STUNDENLOHN","isFullTime": "true","isPartTime": "false","isHomeOffice": "false","isMiniJob": "false","isShiftWork": "false","contractDuration": "KEINE_ANGABE","careerChangeSuitable": "false","disabilityFriendly": "false","datePosted": "2026-06-21","dateModified": "2026-06-21T07:11:46.160","startDate": "2026-06-22","description": "Zum nächstmöglichen Zeitpunkt suchen wir für ein Berliner Medienbüro...","extractedEmail": "steglitz.it@perzukunft.de","extractedPhone": "+49 30 2065800","extractedUrl": "https://www.perzukunft.de/job/softwareentwickler-in-medienburo-1201610004701286","educationRequired": "Ausbildung (vocational); University degree (unspecified)","languageRequirements": "Deutsch: required","externalUrl": null,"portalUrl": "https://www.arbeitsagentur.de/jobsuche/jobdetail/12016-10004701286-S","searchKeyword": "Softwareentwickler","searchLocation": "Berlin","scrapedAt": "2026-06-21T10:30:00.000Z"}
Performance
| Mode | Speed | Memory | Notes |
|---|---|---|---|
Search only (includeDetails: false) | ~80 jobs/sec | ~64 MB | Pure v6 API, no detail calls |
With details (includeDetails: true) | ~15–25 jobs/sec | ~128 MB | One detail API call per job |
| Direct URLs | ~15–25 jobs/sec | ~128 MB | Always fetches full details |
The public API has no documented rate limit. We use a polite 100 ms default delay between requests. You can lower requestDelay to 0 for maximum speed.
Typical costs: Scraping 100 jobs with full details takes ~10–15 seconds and costs a fraction of a CU.
Integration
JavaScript / TypeScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('haketa/arbeitsagentur-scraper').call({keyword: 'Softwareentwickler',location: 'Berlin',maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Python
from apify_client import ApifyClientclient = ApifyClient(token='YOUR_TOKEN')run = client.actor('haketa/arbeitsagentur-scraper').call(run_input={'keyword': 'Softwareentwickler','location': 'Berlin','maxItems': 100,})items = client.dataset(run['defaultDatasetId']).list_items().items
CLI
apify call haketa/arbeitsagentur-scraper \--input '{"keyword":"Softwareentwickler","location":"Berlin","maxItems":100}'
MCP (AI Agents)
https://mcp.apify.com?tools=haketa/arbeitsagentur-scraper
Tips & Best Practices
- Start small: Set
maxItemsto 50–100 for a first test. The job board has 500K–800K active listings — amaxItems: 0unbounded search can run for hours. - Use
publishedSince: Combine withpublishedSince: 7for weekly fresh-job monitoring. Much faster than full searches. - Employer monitoring: Use the
employerfield to track specific companies. No keyword needed. - Detail enrichment tradeoff: Set
includeDetails: falsefor fast bulk list extraction (title, employer, location, salary). Toggle on when you need descriptions, contacts, and requirements. - Multi-keyword: Use
startUrlswith multiple pre-filtered arbeitsagentur.de search URLs for complex multi-keyword runs. - Scheduling: Set up recurring runs (daily/weekly) for continuous job market monitoring.
Data Source
This actor extracts publicly available job listings from the Bundesagentur für Arbeit (German Federal Employment Agency) at arbeitsagentur.de. The data is accessed through the same public API that powers the official job search interface. No authentication, proxy, or login is required.
Legal & Responsible Use
This actor retrieves publicly accessible job posting data. Users are responsible for complying with applicable laws and regulations, including the German Federal Data Protection Act (BDSG) and GDPR where applicable. We recommend:
- Using the data for legitimate business, research, or personal purposes
- Respecting the API's availability by using reasonable request delays
- Not redistributing the data in violation of the source site's terms of service
About the Bundesagentur Job Board
The Bundesagentur für Arbeit (BA) operates Germany's largest and most authoritative job portal at arbeitsagentur.de. Key facts:
- 500K–800K active job listings at any time
- 100% of Germany covered — all 16 federal states, urban and rural
- All industries: IT, engineering, healthcare, trades, logistics, finance, education & more
- All employment types: full-time, part-time, mini-job, remote, shift, freelance, training
- Official data: listings are validated through Germany's employment agency system
- Updated continuously: new jobs added and filled positions removed in near real-time
FAQ
Q: Do I need a proxy? A: No. The API is publicly accessible from any IP address.
Q: Is there a rate limit? A: No documented rate limit. We default to 100 ms between requests as a courtesy.
Q: How many jobs can I scrape?
A: The total active catalogue is 500K–800K listings. Set maxItems to control your run size.
Q: Does this include jobs from Austria or Switzerland? A: The BA portal primarily covers Germany. Some cross-border listings may appear near the Austrian and Swiss borders, but this is not guaranteed.
Q: Are salaries always available?
A: No. German law does not require salary disclosure in job ads. The salaryAmount field is populated when the employer voluntarily includes a figure in the listing. Salaries appear more frequently for hourly/tariff-bound roles (e.g. nursing, trades, service).
Q: What's the difference between this and other arbeitsagentur.de actors? A: We use the v6 API which provides exact salary amounts, home-office flags, career-changer suitability, multi-location data, and detailed work-time breakdowns. We also extract email, phone, URLs, education level, and language requirements from full descriptions. No other actor combines all of these.
Q: Can I search by occupation code (Berufsnummer)?
A: The API supports the berufsfeld parameter. Use startUrls with a manually constructed URL to pass this filter.
Made for recruiters, researchers, and businesses who need Germany's most complete job market data in structured form.