Ausbildung.de Scraper avatar

Ausbildung.de Scraper

Pricing

Pay per event

Go to Apify Store
Ausbildung.de Scraper

Ausbildung.de Scraper

Scrape apprenticeships, dual studies and training places from Ausbildung.de, Germany's largest apprenticeship board. Returns title, company, profession, address, start date, duration, required school degree, description and apply link. Pay-per-result.

Pricing

Pay per event

Rating

0.0

(0)

Developer

NanoScrape

NanoScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

Ausbildung.de Scraper: Apprenticeships and Dual Studies in Germany

Get apprenticeship, dual study and training vacancies from Ausbildung.de as clean dataset rows. Search by profession keyword, city or postcode and radius, or paste a search page, a company job list or a vacancy page from the site. Each row has the title, employer, profession, address, start, duration, required school degree, full description and the link to apply.

What you can do with it

  • Build a list of employers that train apprentices in a city, profession or region, for recruiting, sales or market research.
  • Track the training market over time: run it on a schedule and watch new vacancies, start dates and employers.
  • Feed a job board, school career portal or alert service with current apprenticeship places.
  • Compare how many places exist per profession, federal state or type of training (dual training, dual study, school-based training).

What you get

One dataset row per vacancy. Vacancies found by several searches are returned once, and duplicates are removed before anything is charged, so the number of rows is the number of results you pay for.

FieldDescription
id, vacancy_public_id, job_posting_public_idThe vacancy ids. id equals vacancy_public_id and is the dedup key
titleVacancy title
profession_title, profession_id, profession_slugProfession the vacancy trains for (for example Fachinformatiker/in)
company, company_public_id, company_slug, company_legal_name, company_descriptionEmployer name and profile
company_website, company_url, company_logo_urlEmployer site, employer page on Ausbildung.de, logo
company_street, company_postal_code, company_cityEmployer headquarters
company_rating, company_review_count, company_recent_rating, company_recent_review_count, top_rated_employerEmployer reviews on Ausbildung.de
subsidiary_id, subsidiary_public_id, subsidiary_name, subsidiary_logo_urlThe branch that offers the vacancy
location, street, postal_code, city, region, countryWhere the training takes place. region is the federal state, country is the ISO-2 code of the posting address (DE for the German site; read from the vacancy page, never guessed from the employer)
latitude, longitudeCoordinates of the training location
apprenticeship_type, apprenticeship_type_slugType of training: Klassische duale Berufsausbildung, Duales Studium, Schulische Ausbildung, Schulische und duale Ausbildung, Weiterbildung
durationLength of the training as written on the listing (for example 3 Jahre)
expected_graduation, expected_graduation_slugSchool degree the employer expects (Hauptschulabschluss, Mittlere Reife, Fachabitur, Abitur, Keine Angabe)
starts_at, starts_at_dateEarliest start as written (14.12.2026 or Nach Absprache) and as ISO date when it is a date
application_deadlineApplication deadline as written (for example Laufend)
employment_type, education_requirements, industryEmployment type, education requirement and industry of the employer
salary_min, salary_max, salary_currency, salary_period, salary_by_yearPay, only when the posting states it. salary_by_year lists the pay per training year (year, amount, currency, period) when the description publishes it; salary_min/salary_max then span those figures. Nothing is estimated, period is month only when the text says so. salary_currency is an ISO code and only set next to an amount
description, description_textFull description as HTML and as plain text
date_posted, created_at, updated_atPosting date and listing timestamps (ISO 8601)
image_url, gallery_images, video_urlHeader image, gallery and video of the vacancy
job_urlVacancy page on Ausbildung.de
apply_url, apply_email, apply_postal_address, application_reference_number, application_optionsHow to apply
direct_application, vacancy_count, has_multiple_locationsDirect application on Ausbildung.de, and how many identical vacancies the listing stands for
salesforce_category, tags, ba_bookingListing flags the site publishes (tags only on company job lists)
factsEvery entry of the "Auf einen Blick" box
details_fetchedtrue when the vacancy page was read for the row
source_query, scraped_atKeyword or URL that found the vacancy, scrape time (UTC)

Fields marked "needs the vacancy page" in the dataset view are empty when includeDetails is off. Arrays are always arrays ([] when empty) and facts is always an object.

A listing that an employer offers at many branches (for example a retail chain) is returned once, for the branch the site shows first. vacancy_count tells how many branches offer it.

Input

FieldTypeDescription
searchQueriesstring[]Keywords or professions, one search each (default Pflege)
locationstringCity or postcode, combined with every keyword. Empty = all of Germany
radiusintegerRadius in kilometres around the location, 1 to 200 (default 25)
startUrlsstring[]Ausbildung.de search page URLs, company job list URLs, or single vacancy page URLs
includeDetailsbooleanRead each vacancy page for description, address, dates and apply link (default true)
maxResultsintegerTotal cap across all searches (default 100, 0 = no limit)
maxResultsPerQueryintegerCap per keyword or start URL (default 100, 0 = no limit)

Example: keyword and city

{
"searchQueries": ["Fachinformatiker", "Pflege"],
"location": "Berlin",
"radius": 50,
"includeDetails": true,
"maxResults": 200,
"maxResultsPerQuery": 100
}

Example: a search page

{
"startUrls": [
"https://www.ausbildung.de/suche/?search=pflege%7CBerlin&radius=50"
],
"maxResults": 100
}

Supported URLs

  • Search page: https://www.ausbildung.de/suche/?search=<keyword>|<city>&radius=<km>. Keyword, location and radius are used; other filters in the address are ignored.
  • Vacancy page: https://www.ausbildung.de/stellen/<vacancy>/. The single vacancy is returned (useful to check if a vacancy is still online).
  • Company job list: https://www.ausbildung.de/unternehmen/<company>/stellen/. Returns every open vacancy of the employer. Rows from a company list carry the list fields (title, profession, location, start, duration, school degree, application options, tags) and, with includeDetails on, the full vacancy page data.

Sample output

{
"id": "0ca2f100-3375-4eec-9e39-08c593963750",
"vacancy_public_id": "0ca2f100-3375-4eec-9e39-08c593963750",
"job_posting_public_id": "c68a0cc2-9234-4768-8a1b-3d43648ed715",
"title": "Duales Pflegestudium - Bachelor of Nursing (m/w/d) in Berlin-Pankow Oktober 2027",
"profession_title": "Duales Studium Pflege",
"company": "Caritas Gesundheit Berlin gGmbH",
"company_website": "https://karriere.caritas-gesundheit.de/",
"location": "13187 Berlin",
"street": "Breite Str. 46/47",
"postal_code": "13187",
"city": "Berlin",
"region": "Berlin",
"country": "DE",
"latitude": 52.5717807,
"longitude": 13.4140338,
"apprenticeship_type": "Duales Studium",
"duration": "3–3,5 Jahre",
"expected_graduation": "Abitur",
"starts_at": "Nach Absprache",
"application_deadline": "Laufend",
"employment_type": "FULL_TIME",
"industry": "Gesundheit",
"description": "<p>Du willst Menschen pflegen und gleichzeitig studieren? ...</p>",
"date_posted": "2026-10-26T14:39:09.295Z",
"job_url": "https://www.ausbildung.de/stellen/duales-pflegestudium-bachelor-of-nursing-m-w-d-in-berlin-pankow-oktober-2027-bei-caritas-gesundheit-berlin-ggmbh-in-berlin-0ca2f100-3375-4eec-9e39-08c593963750/",
"apply_url": "https://caritasgesundheitberlinggmbh.recruitee.com/o/duales-pflegestudium-bachelor-of-nursing-mwd-in-berlin-pankow-oktober-2027",
"application_options": ["online"],
"direct_application": true,
"vacancy_count": 1,
"gallery_images": ["https://www.ausbildung.de/uploads/image/69/694af318-b7e4-4534-9843-cd40cf351e7c/Motiv_2.jpg"],
"details_fetched": true,
"source_query": "pflege",
"scraped_at": "2026-11-04T12:00:00Z"
}

The sample is shortened. Every row has all fields listed above.

You are responsible for using the data lawfully, including the GDPR/DSGVO, national data-protection laws and unfair-competition rules (e.g. UWG) for marketing and outreach.

Pricing (Pay-per-event)

EventDescriptionWhen it fires
apify-actor-startRun start feeOnce per run. $0.001
job-resultOne vacancy row in the datasetOnce per row pushed. $0.001 per result ($1.00 per 1,000 results)

The start fee is charged on top of the results. Duplicates are never charged. Set a maximum total charge on the run to stop at a budget: the run ends cleanly when it is reached, and the status message says how many jobs were delivered. The pricing box on the actor page always shows the current rates.

Use with AI Agents (MCP)

Connect this actor to any MCP-compatible AI client, such as Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.

Example prompts once connected:

"Use ausbildung-de-scraper to find dual study places in Hamburg for IT and list company, start date and apply link."

"Use ausbildung-de-scraper for the newest 50 Pflege apprenticeships within 30 km of Munich and summarise the employers."

Configure the MCP server with the Ausbildung.de Scraper preconfigured at mcp.apify.com?tools=nanoscrape/ausbildung-de-scraper:

{
"mcpServers": {
"apify": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.apify.com/?tools=nanoscrape/ausbildung-de-scraper",
"--header",
"Authorization: Bearer <YOUR_API_TOKEN>"
]
}
}
}

See the auto-generated API tab on the actor page for language-specific examples (cURL, JavaScript, Python, and more).

FAQ

How do I search a whole city? Set location to the city (or postcode) and add one or more keywords. A location without keyword is allowed, but it is not verified for every location: if it returns nothing, add a keyword.

How many vacancies can one search return? Ausbildung.de reports at most 10,000 results per search. For larger sets split the work into narrower searches: one keyword per profession, or one search per city. The run status says when a search hit this limit.

Why does a row have no description or street? Those fields come from the vacancy page. Turn includeDetails on (default). If a single vacancy page cannot be read, the row is still delivered with the search fields and details_fetched is false.

Is the start date always a date? No. Many listings say Nach Absprache (by arrangement). starts_at keeps the text, starts_at_date is only set when the listing has a date.

Why is one vacancy returned once when the employer has many branches? Retail and service chains publish the same vacancy for hundreds of branches. The result is returned once, with vacancy_count showing how many branches offer it.

Limits

  • Germany only (country is always DE).
  • Up to 10,000 results per search (see FAQ).
  • Searches use keyword, location and radius. Other filters of the site (type of training, school degree, sorting) are not applied.
  • Results come 20 at a time, and a run with details reads one extra page per vacancy, so use maxResults to size the run and keep it fast.
  • Randstad Jobs Scraper: staffing and temp-job vacancies from Randstad, a complement to apprenticeship listings.

Support

  • Questions or issues? Email contact@nanoscrape.com, we typically reply within 6 hours, or open a ticket in the Issues tab on the actor page.
  • Need a scraper for a job board we don't cover yet? Email contact@nanoscrape.com with the target site and your rough usage volume.

Built by NanoScrape. No affiliation with Ausbildung.de.