Arbeitsagentur Job Scraper — Salary, Contact & Details avatar

Arbeitsagentur Job Scraper — Salary, Contact & Details

Pricing

from $1.30 / 1,000 results

Go to Apify Store
Arbeitsagentur Job Scraper — Salary, Contact & Details

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

Haketa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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's festgehalt field, not just text
  • salaryPeriodSTUNDENLOHN / MONATSLOHN / JAHRESLOHN (hourly / monthly / yearly)
  • salaryTypeFESTGEHALT (fixed) vs VERHANDLUNGSBASIS (negotiable)
  • isHomeOffice — dedicated remote-work boolean from the API
  • careerChangeSuitablequereinstiegGeeignet flag for career changers
  • locations — full JSON array of all job locations, not just the first one
  • contractDurationBEFRISTET (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:

FieldDescriptionSource
referenceNumberBA reference number (e.g. 12016-10004701286-S)v6 API
titleJob title in Germanv6 API
occupationPrimary occupation classification (Hauptberuf)v6 API
allOccupationsAll matched occupation codesv6 API
offerTypeARBEIT / AUSBILDUNG / SELBSTAENDIGKEIT / PRAKTIKUMv6 API
employerCompany / organization namev6 API
employerHashHash for fetching the employer logov6 API
employerLogoLogo image URL (if available)logo endpoint
isPrivateAgencyPosted by a private recruitment agencydetail API
isTempStaffingTemporary staffing / Arbeitnehmerüberlassungdetail API
allianzPartnerPartner network namedetail API
allianzPartnerUrlPartner network URLdetail API
locationsJSON array of all job sites (city, plz, street, region, lat, lng)detail API
cityPrimary cityv6 API
postalCodePrimary postal code (PLZ)v6 API
streetPrimary street addressv6 API
regionFederal state / regionv6 API
countryCountry (DEUTSCHLAND)v6 API
latitudeGPS latitudev6 API
longitudeGPS longitudev6 API
distanceKmDistance from search locationv6 API
salaryFormatted salary display (e.g. 13,90 €/Std.)built
salaryAmountExact salary figure from APIv6 API
salaryTypeFESTGEHALT / VERHANDLUNGSBASISv6 API
salaryPeriodSTUNDENLOHN / MONATSLOHN / JAHRESLOHNv6 API
isFullTimeFull-time positionv6 API
isPartTimePart-time options availablev6 API
isHomeOfficeRemote / home-office possiblev6 API
isMiniJobMini-job (geringfügige Beschäftigung)v6 API
isShiftWorkShift / night / weekend workv6 API
contractDurationBEFRISTET / UNBEFRISTETv6 API
careerChangeSuitableSuitable for career changers (Quereinsteiger)v6 API
disabilityFriendlySuitable for people with disabilitiesdetail API
datePostedFirst publication date (YYYY-MM-DD)v6 API
dateModifiedLast modification timestamp (ISO 8601)v6 API
startDateEarliest start date (YYYY-MM-DD)v6 API
descriptionFull job description (text)detail API
extractedEmailEmail found in descriptionextracted
extractedPhonePhone number found in descriptionextracted
extractedUrlExternal URL found in descriptionextracted
educationRequiredEducation level (PhD/Master/Bachelor/Ausbildung)extracted
languageRequirementsLanguage requirements (Deutsch/Englisch + CEFR level)extracted
externalUrlExternal application URL (externeURL)v6 API
portalUrlJob page on arbeitsagentur.debuilt
searchKeywordKeyword used for this searchinput
searchLocationLocation used for this searchinput
scrapedAtISO scrape timestampruntime

Input Parameters

ParameterTypeDefaultDescription
keywordstringJob title or keyword, e.g. "Softwareentwickler", "Pflegefachkraft", "Marketing Manager"
locationstringCity, region or postal code, e.g. "Berlin", "München", "10115"
radiusinteger25Search radius in km (0–200). 0 = exact location match only
employerstringSearch by employer name, e.g. "Siemens AG", "Deutsche Bahn"
startUrlsarrayPaste arbeitsagentur.de search or detail URLs
angebotsartselectAllOffer type: Arbeit / Selbstständigkeit / Ausbildung / Praktikum
arbeitszeitselectAllWorking time: Vollzeit / Teilzeit / Homeoffice / Minijob / Schicht
befristungselectAllContract: Befristet (fixed-term) / Unbefristet (permanent)
behinderungbooleanfalseDisability-friendly jobs only
publishedSinceinteger0Only jobs from last N days (1 = today, 7 = week, 30 = month). 0 = all
includeDetailsbooleantrueFetch full description, multi-location, contacts. Turn off for speed
maxItemsinteger100Max jobs to scrape. 0 = no limit
maxPagesPerSearchinteger10Max result pages per query (100 jobs/page). 0 = no limit
requestDelayinteger100Delay between API requests in ms
maxConcurrencyinteger10Parallel detail requests
languageselectoriginalOutput 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

ModeSpeedMemoryNotes
Search only (includeDetails: false)~80 jobs/sec~64 MBPure v6 API, no detail calls
With details (includeDetails: true)~15–25 jobs/sec~128 MBOne detail API call per job
Direct URLs~15–25 jobs/sec~128 MBAlways 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 ApifyClient
client = 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 maxItems to 50–100 for a first test. The job board has 500K–800K active listings — a maxItems: 0 unbounded search can run for hours.
  • Use publishedSince: Combine with publishedSince: 7 for weekly fresh-job monitoring. Much faster than full searches.
  • Employer monitoring: Use the employer field to track specific companies. No keyword needed.
  • Detail enrichment tradeoff: Set includeDetails: false for fast bulk list extraction (title, employer, location, salary). Toggle on when you need descriptions, contacts, and requirements.
  • Multi-keyword: Use startUrls with 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.

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.