Germany Jobs Scraper: Arbeitsagentur Jobbörse & Arbeitnow avatar

Germany Jobs Scraper: Arbeitsagentur Jobbörse & Arbeitnow

Pricing

from $0.80 / 1,000 jobs

Go to Apify Store
Germany Jobs Scraper: Arbeitsagentur Jobbörse & Arbeitnow

Germany Jobs Scraper: Arbeitsagentur Jobbörse & Arbeitnow

Scrape German jobs from the Bundesagentur für Arbeit Jobbörse (1M+ jobs) and Arbeitnow by keyword, city and radius: title, employer, salary, full/part-time, contract, remote %, address with coordinates, posting date and URL. Job alerts mode. No login. $1 per 1,000 jobs.

Pricing

from $0.80 / 1,000 jobs

Rating

0.0

(0)

Developer

DataDesk

DataDesk

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Security

Limited permissions

Share

Scrape jobs in Germany from the Bundesagentur für Arbeit Jobbörse (the federal employment agency's job board, 1M+ live jobs) and Arbeitnow by keyword, city and radius. Every job comes with employer, occupation, full/part-time, contract type, home-office share, published salary, full address with coordinates, start date, posting date and URL. Apprenticeships (Ausbildung) and internships too. No login, no proxies. $1 per 1,000 jobs.

What you get

Job fieldsLocation & pay fields
title, companyName, occupation, occupationsstreet, postalCode, city, region (federal state)
offerType (job, apprenticeship, internship)latitude, longitude, distanceKm
workingTime, contractType, fixedTermMonthssalary, salaryPeriod, salaryYearly (EUR)
isRemote, remotePercentstartDate, postedAt, updatedAt
url, externalUrl, description, tagssuitableForCareerChangers

Sources and coverage

SourceCoverageData
Bundesagentur für Arbeit JobbörseAll of Germany, all industries and skill levels (15,000+ electrician jobs alone)title, employer, occupation, working time, contract, home office, salary when published, address, coordinates
ArbeitnowGermany, mostly English-speaking, tech and startup jobstitle, company, remote flag, job types, tags, description

How to use it

  1. Click Try for free (or Start): the prefilled input runs a quick test.
  2. Fill in the input fields (see the examples below). Every field is optional.
  3. Click Start and wait a few seconds to minutes, depending on how many jobs you ask for.
  4. Open the Output tab and export as JSON, CSV, Excel, XML or HTML, or read the results via API.

Input examples

Software developers in Berlin (default):

{"keywords": ["Softwareentwickler"], "locations": ["Berlin"], "maxJobsPerSearch": 20}

Part-time nursing and kitchen jobs in Munich, last 7 days:

{"keywords": ["Pflegefachkraft", "Koch"], "locations": ["München"], "workingTime": ["part-time"], "postedWithinDays": 7}

Apprenticeships in Hamburg:

{"keywords": ["Kaufmann"], "locations": ["Hamburg"], "offerType": "apprenticeship"}

Daily alert, remote IT jobs, no temp agencies:

{"keywords": ["Informatiker"], "remoteOnly": true, "excludeTempAgencies": true, "onlyNewJobs": true, "alertsKey": "de-it-remote"}

Input fields

FieldTypeDescription
keywordsarrayJob titles or keywords in German or English, e.g. Softwareentwickler, Pflegefachkraft, Elektriker, Buchhalter, developer. Empty = all jobs.
locationsarrayGerman cities or postal codes, e.g. Berlin, München, Hamburg, 50667. Empty = all of Germany.
radiusKmintegerSearch radius around each city (Arbeitsagentur).
sourcesarrayJob boards to search. Arbeitnow has fewer, mostly English-speaking and tech jobs, matched by keyword.
offerTypestringKind of offer (Arbeitsagentur). Arbeitnow is searched only for regular jobs.
workingTimearrayOnly these working-time models (Arbeitsagentur). Empty = all.
remoteOnlybooleanKeep only jobs that allow home office or remote work.
minYearlySalaryintegerKeep only Arbeitsagentur jobs with a published salary of at least this much per year (hourly and monthly pay are converted). Most jobs publish no salary, so this filter removes many rows.
excludeTempAgenciesbooleanHide jobs from temporary staffing agencies.
employerstringOnly jobs from this employer name, e.g. Deutsche Bahn (Arbeitsagentur).
maxJobsPerSearchintegerStop after this many jobs for each keyword and city (and for Arbeitnow overall).
postedWithinDaysintegerOnly jobs published in the last N days (e.g. 7). 0 = any date.
onlyNewJobsbooleanReturn only jobs not seen in previous runs. Schedule daily for alerts.
alertsKeystringName for this alert's memory (e.g. berlin-devs). Use a different key per alert so "only new jobs" works separately.

Output example

One row per job. Values below are example values from a real test run:

{
"source": "arbeitsagentur",
"jobId": "10001-1003891446-S",
"title": "Softwareentwicklerin (w/m/d)",
"companyName": "GASAG AG",
"occupation": "Softwareentwickler/in",
"occupations": [
"Softwareentwickler/in",
"Softwareentwickler/in"
],
"offerType": "job",
"workingTime": [
"full-time"
],
"contractType": "fixed-term",
"fixedTermMonths": 24,
"isRemote": true,
"remotePercent": 50,
"salary": 72600.0,
"salaryPeriod": "year",
"salaryCurrency": "EUR",
"salaryYearly": 72600,
"street": "EUREF-Campus 23-24",
"postalCode": "10829",
"city": "Berlin",
"region": "Berlin",
"country": "Deutschland",
"latitude": 52.480611,
"…": "more fields below"
}

Fields a source does not publish are null.

Output fields

FieldDescription
sourceJob board the job came from (arbeitsagentur or arbeitnow)
jobIdReference number (Arbeitsagentur) or slug (Arbeitnow)
titleJob title
companyNameEmployer name
occupationMain occupation (Beruf) as classified by the Arbeitsagentur
occupationsAll occupations linked to the job
offerTypejob, apprenticeship, internship or self-employment
workingTimeWorking-time models (full-time, part-time, shift/night/weekend)
contractTypepermanent or fixed-term
fixedTermMonthsLength of a fixed-term contract in months
isRemoteTrue if home office / remote work is possible
remotePercentShare of home office in percent, if published
salaryPublished fixed pay (EUR)
salaryPeriodPay period of salary (hour, month, year)
salaryCurrencySalary currency (EUR)
salaryYearlySalary converted to a yearly amount (EUR)
streetStreet and number of the workplace
postalCodePostal code (PLZ)
cityCity
regionFederal state
countryCountry
latitudeLatitude of the workplace
longitudeLongitude of the workplace
locationsAll job locations (cities)
startDateEarliest start date
postedAtFirst publication date (ISO, UTC)
updatedAtLast change on the Arbeitsagentur
suitableForCareerChangersTrue if suitable for career changers (Quereinsteiger)
distanceKmDistance from the searched city (km)
externalUrlOriginal posting on the employer's or partner site, if any
descriptionJob description text (Arbeitnow)
tagsTags (Arbeitnow)
urlJob posting URL
searchKeywordKeyword that found this job
searchLocationCity of the search this job came from
scrapedAtScrape time (ISO, UTC)
isNewTrue if no earlier run with the same alerts key returned this job

The Output tab has a Jobs view.

Pricing

Pay-per-event: you pay only for results delivered, no monthly fee.

  • Job (job): $1.00 per 1,000 ($0.001 each)
  • Actor start: $0.005 per run
RunJobsCost
Quick test20$0.025
Small run100$0.105
Regular run1,000$1.005
Large run10,000$10.005

Rows that are not delivered are never charged. Apify's free plan includes monthly credit, and you can set a maximum cost per run in the run options.

Use cases

  • Recruiters & staffing agencies: find employers hiring in a city or trade right now (sales leads with address and coordinates).
  • Job boards & aggregators: feed German jobs into your site or app.
  • Labour-market research: demand by occupation, region, working time and salary.
  • Job seekers & relocation services: daily alerts with Only new jobs.

Integrations and API

  • Export results as JSON, CSV, Excel, XML or HTML from the Output tab.
  • Schedule runs (daily, hourly) and send results to Google Sheets, Slack, Zapier, Make, n8n, Airbyte or webhooks.
  • Call it from code with the Apify API:
curl -X POST "https://api.apify.com/v2/acts/datadesk-io~germany-jobs-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords": ["Softwareentwickler"], "locations": ["Berlin"], "maxJobsPerSearch": 20}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("datadesk-io/germany-jobs-scraper").call(run_input={"keywords": ["Softwareentwickler"], "locations": ["Berlin"], "maxJobsPerSearch": 20})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("title"), item.get("companyName"), item.get("city"), item.get("url"))

FAQ

Do I need a login, API key or proxies? No. It uses publicly available job search data only.

Can I search in English? Yes, but the Arbeitsagentur matches German job titles best (Softwareentwickler, Buchhalter, Pflegefachkraft). Arbeitnow jobs are mostly in English.

Why do few jobs have a salary? Employers in Germany often do not publish pay. When they do, you get the amount, the period and a yearly figure.

Why did I get fewer jobs than the maximum? The source had fewer matching jobs, or duplicates were removed. You only pay for jobs delivered.

Is it legal? It collects only publicly available data. You are responsible for using it in line with applicable laws (e.g. GDPR) and the sources' terms.

Limitations

The Actor reads up to 10,000 Arbeitsagentur jobs per keyword and city, so split very large searches by city or keyword. Arbeitnow is read politely (one page every 2–3 s, at most 10 pages per run) and filtered by keyword in the title, company and tags. Full job descriptions are available for Arbeitnow jobs only; Arbeitsagentur jobs link to the full posting.

Support

Found a bug, or need a new field, source or filter? Open an issue in the Issues tab; we usually answer within 24 hours. Custom data work: datadesk.io@proton.me.