Arbeitsagentur Jobs Scraper — BA Jobsuche Germany avatar

Arbeitsagentur Jobs Scraper — BA Jobsuche Germany

Pricing

from $0.60 / 1,000 job listings

Go to Apify Store
Arbeitsagentur Jobs Scraper — BA Jobsuche Germany

Arbeitsagentur Jobs Scraper — BA Jobsuche Germany

Scrape Arbeitsagentur / Bundesagentur für Arbeit job listings (Germany Jobsuche). Search by keyword, location, filters, search URLs, or job-detail URLs. Export title, employer, city, contacts, contract type, salary notes, full description, and application links. Fast HTTP API — no browser.

Pricing

from $0.60 / 1,000 job listings

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

5 hours ago

Last modified

Share

Arbeitsagentur Jobs Scraper — Bundesagentur für Arbeit / Germany Jobsuche

Disclaimer: Unofficial tool for publicly accessible Arbeitsagentur (Bundesagentur für Arbeit) job listings. Bundesagentur für Arbeit, Arbeitsagentur, Jobbörse, and related names are trademarks of their respective owners. Not affiliated with, sponsored by, or endorsed by the Bundesagentur für Arbeit. For informational, research, aggregation, and recruiting-intelligence use only. Respect applicable terms of use and law.

Scrape German job listings from the official Arbeitsagentur / Bundesagentur für Arbeit Jobsuche portal — a practical Arbeitsagentur API alternative. Search by keyword (was), location (wo), advanced filters, portal search start URLs, or job-detail URLs. Export structured JSON with title, employer, city, occupation, contract type, salary notes, application email/phone when published, full description, home-office flags, and external application URLs — fast HTTP Jobsuche API scraping, no headless browser. Use from Python, Node.js, cURL, or Apify MCP / AI assistants.

Ideal for Germany job board aggregation, labor-market research, recruiting intelligence, employer lead generation, and BA Jobbörse data pipelines.

For detailed inputs, output examples, API snippets, MCP prompts, and limitations, see the Arbeitsagentur Jobs Scraper API guide by Crawloop.

Crawloop DACH Jobs Suite — BA public Jobsuche + Kununu employer intelligence + Stepstone commercial board.

Arbeitsagentur (BA)Kununu (employer intel)Stepstone (commercial board)
Arbeitsagentur Jobs Scraper ◄── you are hereKununu ScraperStepstone Jobs Scraper

Key Features

  • Arbeitsagentur / BA Jobsuche API — search + job-detail endpoints over HTTP (curl_cffi); no Playwright/Puppeteer
  • Germany-wide search — keywords, city/region, radius (km), employer name, occupational field (Berufsfeld)
  • Advanced filters — offer type (Arbeit / Ausbildung / Praktikum / Selbständigkeit), fixed-term vs permanent, working time (Vollzeit, Teilzeit, Homeoffice, Minijob, shift)
  • Start URL parsing — paste a Jobsuche search URL or a job-detail URL (/jobsuche/jobdetail/{refnr})
  • Full job details — optional detail fetch for Stellenbeschreibung, employer website/industry/size, and contacts when published
  • Flattened location + contactscity / PLZ in the dataset table; email/phone from the API or the description text when published
  • Multi-site workplaceslocations lists every office; city is the first one (not always the search city)
  • Monitor mode — scheduled runs emit only new or updated refnr (fingerprint = modification / publish date); first run is the baseline
  • Deduplicated refnr — unique reference numbers across multi-URL / multi-filter runs
  • Low memory — designed for 256–512 MB runs
  • Clean camelCase schema — ready for job boards, BI tools, ATS enrichment, and recruiting CRM pipelines
  • Apify Proxy ready — DE residential recommended on the Apify platform

Use Cases

Use caseWhat you get
Job aggregationFresh BA / Arbeitsagentur openings into a job board or search index
Labor-market researchHiring volume by keyword, city, occupation, and contract type in Germany
Recruiting intelligenceCompetitor and employer vacancy monitoring by region
Lead generationEmployers actively hiring in a target segment
Scheduled monitoringmonitorMode on an Apify Schedule — only new or changed listings after the baseline run
Salary / contract signalsSalary notes and befristet / unbefristet flags where published
Ausbildung & Praktikum trackingFilter by offer type for apprenticeships and internships

When to use this Actor

  • You need Arbeitsagentur.de / Jobbörse listings as structured data
  • You want keyword + location + filter search without a browser
  • You need full job descriptions and application links for downstream processing
  • You run recurring Germany jobs pulls for dashboards or alerts (monitorMode for deltas)

When not to use this Actor

  • Non-German job portals — this Actor covers Arbeitsagentur / Bundesagentur für Arbeit only
  • Guaranteed email or phone — contacts are extracted when the API or description publishes them; many listings still omit them and only have externalApplicationUrl
  • Historical archives — only currently published Jobsuche results
  • Private / authenticated BA services — public Jobsuche listings only

Quick Start

Keyword + city:

{
"position": "Softwareentwickler",
"location": "Berlin",
"maxItems": 50,
"fetchDetails": true,
"offerType": "1",
"radiusKm": 25,
"workingTime": ["vz", "ho"],
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "DE"
}
}

Portal search start URL:

{
"startUrls": [
{
"url": "https://www.arbeitsagentur.de/jobsuche/suche?angebotsart=1&was=Pflegefachkraft&wo=Muenchen&umkreis=50"
}
],
"maxItems": 100,
"fetchDetails": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "DE"
}
}

Single job-detail URL:

{
"startUrls": [
{
"url": "https://www.arbeitsagentur.de/jobsuche/jobdetail/12117-YF-48852-YF-S"
}
],
"fetchDetails": true
}

Scheduled monitor (new + updated only):

{
"position": "Pflegefachkraft",
"location": "Berlin",
"maxItems": 200,
"fetchDetails": true,
"monitorMode": true,
"monitorStoreName": "ba-pflege-berlin",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "DE"
}
}

Input Parameters

ParameterTypeDefaultDescription
positionStringKeywords / job title (API was)
locationStringCity or region (API wo)
startUrlsArrayJobsuche search URLs and/or job-detail URLs (/jobsuche/jobdetail/{refnr})
maxItemsInteger100Max jobs (0 = unlimited, subject to portal caps)
fetchDetailsBooleantrueFetch full description via job-details endpoint
offerTypeString"1"1 Arbeit, 2 Selbständigkeit, 4 Ausbildung, 34 Praktikum/Trainee, empty = any
contractTypeString1 befristet, 2 unbefristet, 1;2 both
workingTimeArray[]vz, tz, snw, ho, mj
radiusKmInteger25Radius in km around location
employerStringEmployer name filter
occupationalFieldStringBerufsfeld free text
publishedWithinDaysIntegerOnly jobs published in the last N days (0–100)
includeTemporaryAgenciesBooleantrueWhen false, excludes Zeitarbeit (zeitarbeit=false)
includePrivatePlacementBooleantrueWhen false, excludes PAV (pav=false)
disabilityFriendlyBooleanfalseOnly disability-friendly listings
careerChangeSuitableBooleanfalseOnly career-change suitable listings (quereinstieg)
sortStringrelevancerelevance, date (newest), distance
monitorModeBooleanfalseEmit only new or updated jobs vs the previous run
monitorStoreNameStringarbeitsagentur-jobs-monitorNamed KV store for seen refnr + dates
resetMonitorStateBooleanfalseWipe the monitor cache (new baseline)
pageSizeInteger50Search page size (1–100)
concurrencyInteger10Parallel detail requests
proxyConfigurationObjectDE residentialApify Proxy (required on platform for reliable results)

Output Format

Each dataset item is one Arbeitsagentur job listing.

FieldTypeDescription
refnrStringStellen-Referenznummer
urlStringPublic job detail URL
titleStringJob title
descriptionStringFull description (when fetchDetails is true)
employerStringEmployer / company name
employerWebsiteStringEmployer homepage when the portal publishes it (often empty)
employerIndustry / employerFirmSizeStringBranche and Betriebsgröße from details when present
city / postalCode / regionStringFirst workplace on the listing (not always the search city)
latitude / longitudeNumberPrimary workplace coordinates
occupationStringPrimary occupation (Hauptberuf)
alternativeOccupationsArrayRelated occupation labels
offerTypeStringe.g. ARBEIT
contractTypeStringe.g. BEFRISTET / UNBEFRISTET / KEINE_ANGABE
contractMonthsIntegerFixed-term length in months (if present)
salaryNoteStringPortal salary indicator
publishedAt / modifiedAt / startDateStringPortal dates
externalApplicationUrlStringExternal apply link when provided
applicationEmail / applicationPhoneStringContacts from the API or description, when published
homeOfficePossible / homeOfficeTypeBoolean / StringRemote-work flags
workingTimeObjectFull-time / part-time / shift flags
location / locationsObject / ArrayFirst workplace object, plus every office on multi-site ads
isTemporaryAgency / isPrivatePlacement / isMiniJobBooleanListing flags
searchWas / searchWoStringSearch keywords / location used
changeTypeStringnew / updated when monitorMode is on
scrapedAtStringISO timestamp

Output Example

{
"refnr": "12117-YF-48852-YF-S",
"url": "https://www.arbeitsagentur.de/jobsuche/jobdetail/12117-YF-48852-YF-S",
"title": "Softwareentwickler (m/w/d)",
"employer": "bayoonet AG",
"employerWebsite": null,
"city": "München",
"postalCode": "80331",
"region": "BAYERN",
"occupation": "Softwareentwickler/in",
"offerType": "ARBEIT",
"contractType": "KEINE_ANGABE",
"salaryNote": "KEINE_ANGABEN",
"publishedAt": "2026-08-19",
"applicationEmail": "jobs@bayoo.net",
"applicationPhone": "+49 (0) 61 518618-333",
"externalApplicationUrl": "https://www.yourfirm.de/job/detail/YF-48852/",
"homeOfficePossible": false,
"workingTime": {
"fullTime": true,
"partTimeMorning": false,
"partTimeAfternoon": false,
"partTimeEvening": false,
"partTimeFlexible": false,
"shiftNightWeekend": false
},
"locations": [
{ "city": "München", "postalCode": "80331", "region": "BAYERN" },
{ "city": "Köln", "postalCode": "50667", "region": "NORDRHEIN_WESTFALEN" },
{ "city": "Berlin", "postalCode": "10115", "region": "BERLIN" }
],
"searchWas": "Softwareentwickler",
"searchWo": "Berlin",
"scrapedAt": "2026-08-24T14:23:23+00:00"
}

FAQ

Do I need a browser?
No. The Actor uses the public Jobsuche REST search and detail endpoints.

Why enable Apify Proxy?
Platform IPs often receive empty result sets from the Jobsuche API. DE residential proxy is recommended.

Why are descriptions empty?
Keep fetchDetails enabled (default). Search cards alone may omit the full text.

Why did pagination stop near ~250 results?
The portal often caps maxErgebnisse per query. Narrow keywords, location, or filters for more precise slices.

Are email and phone always available?
No. When the listing publishes them (API field or description text), they appear as applicationEmail / applicationPhone. Many ads only expose externalApplicationUrl. employerWebsite is often empty.

Why isn’t city the same as my search location?
city is the first workplace on the ad. Multi-site listings put every office in locations — a Berlin search can return a job whose first city is München if Berlin is still in locations. searchWo is the query you ran.

Can I paste a job-detail URL?
Yes. A /jobsuche/jobdetail/{refnr} start URL fetches that one listing instead of running a keyword search (searchWas / searchWo stay empty on that path).

What is monitor mode?
With monitorMode: true, each refnr plus its modification (or publish) date is stored in a named Key-Value store. The first run is the baseline (all matches are changeType: new). Later scheduled runs push and charge only new or updated listings. Use a distinct monitorStoreName per watch query. resetMonitorState clears the cache.

Zeitarbeit / PAV filters
Set includeTemporaryAgencies or includePrivatePlacement to false to exclude those sources. Leaving both at true uses portal defaults (do not force both API flags to true simultaneously).

Why did a run succeed with 0 jobs?
The filters matched nothing, or the first proxy IP was blocked and retries still found zero listings. Empty searches succeed (they are not Actor failures). Broaden keywords or location if you expected results.

Limitations

  • Unofficial use of the public Jobsuche API; endpoints may change
  • Result volume per query can be capped by the portal
  • Salary is often KEINE_ANGABEN; contract type may be KEINE_ANGABE — not structured EUR / Befristung
  • employerWebsite is frequently empty; prefer externalApplicationUrl and description contacts
  • city is the first listed workplace, not a guarantee it equals location / searchWo

Integration examples

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/arbeitsagentur-jobs-scraper').call({
position: 'Softwareentwickler',
location: 'Berlin',
maxItems: 50,
fetchDetails: true,
offerType: '1',
radiusKm: 25,
workingTime: ['vz', 'ho'],
proxyConfiguration: {
useApifyProxy: true,
apifyProxyGroups: ['RESIDENTIAL'],
apifyProxyCountry: 'DE',
},
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 5));

Python

from apify_client import ApifyClient
client = ApifyClient(token)
run = client.actor("crawloop/arbeitsagentur-jobs-scraper").call(
run_input={
"position": "Softwareentwickler",
"location": "Berlin",
"maxItems": 50,
"fetchDetails": True,
"offerType": "1",
"proxyConfiguration": {
"useApifyProxy": True,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "DE",
},
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("title"), item.get("employer"), item.get("url"))

cURL

curl "https://api.apify.com/v2/acts/crawloop~arbeitsagentur-jobs-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"position":"Softwareentwickler","location":"Berlin","maxItems":50,"fetchDetails":true,"offerType":"1"}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call crawloop/arbeitsagentur-jobs-scraper.

Example prompts:

  • "Run Arbeitsagentur Jobs Scraper for Softwareentwickler in Berlin, max 50, return title, employer, city, applicationEmail, url"
  • "Scrape BA Jobsuche Pflegefachkraft in München with details and summarize home-office flags"
  • "Pull Ausbildung openings in Hamburg from Arbeitsagentur and list employers"
  • "Scrape Arbeitsagentur Pflege Berlin, take unique employers, enrich via Kununu Scraper"
  • "Run Arbeitsagentur Jobs Scraper daily in monitorMode for Pflegefachkraft in Berlin and return only new or updated jobs"

Suite next step

Enrich discovered employers with Kununu Scraper (scores, reviews, salaries, jobs-with-score). For commercial DACH board volume beyond BA, use Stepstone Jobs Scraper. For DACH B2B company directories (suppliers, not job ads), see WLW Scraper or Europages Scraper.

ActorFocus
Arbeitsagentur Jobs Scraper ◄── you are hereGermany BA Jobsuche job listings
Kununu ScraperDACH employer scores / reviews / salaries / jobs-with-score
Stepstone Jobs ScraperCommercial DACH Stepstone listings
WLW ScraperDACH B2B supplier directory
Europages ScraperEuropean B2B company directory