Discover/Bund API
live

Bund APIausbildungssuche.api.bund.dev ↗

Search Germany's Ausbildungssuche portal for Berufsausbildung offers by profession and region. Get provider, location, start date, and application contacts.

Endpoint health
verified 1h ago
search_offers
get_offer
2/2 passing latest checkself-healing
Endpoints
2
Updated
2h ago

What is the Bund API?

The Ausbildungssuche API exposes 2 endpoints that return vocational training (Berufsausbildung) offers from Germany's federal training search portal. The search_offers endpoint accepts a required profession code and an optional federal state filter to return paginated offer lists with titles, occupation classifications, and provider details. The get_offer endpoint returns a single offer's full record including address coordinates, application URL, and the date the source last updated the listing.

This call costs1 credit / call— charged only on success
Try it
Zero-based upstream result page; 20 upstream offers per page.
Federal state filter; comma-separated codes allowed (e.g. BAY,BAW). Omitted = nationwide.
Profession to search for. PFLEGEFACHPERSON covers Pflegefachmann/Pflegefachfrau/Pflegefachperson; FACHINFORMATIKER covers all Fachinformatiker specialisations.
→ api.parse.bot/scraper/0d2f0905-9c8b-41e1-b275-f5c34e347623/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/0d2f0905-9c8b-41e1-b275-f5c34e347623/search_offers?profession=pflegefachperson' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace ausbildungssuche-api-bund-dev-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: search German vocational training offers and inspect one."""
from parse_apis.ausbildungssuche_api_bund_dev_api import (
    Ausbildungssuche, Profession, Region, OfferNotFound,
)

client = Ausbildungssuche()

# Search nursing offers in Nordrhein-Westfalen, cap at 5 total items.
for offer in client.offers.search(
    profession=Profession.PFLEGEFACHPERSON, region=Region.NRW, limit=5
):
    print(offer.title, "|", offer.location.city, offer.location.state_code)

# Drill into the first IT training offer nationwide.
hit = client.offers.search(profession=Profession.FACHINFORMATIKER, limit=1).first()
if hit is not None:
    # Provider and location are typed nested objects.
    print(hit.provider.name, hit.provider.phone)
    print(hit.location.street, hit.location.postal_code, hit.location.city)

    # Show offer-specific application contacts.
    for contact in hit.application_contacts:
        print(f"  {contact.name} ({contact.role}) — {contact.email}")

    # Point-lookup by offer_id obtained from the search result.
    try:
        detail = client.offers.get(offer_id=hit.offer_id)
        print(detail.title, "starts", detail.start_date or "flexible")
    except OfferNotFound:
        print("Offer no longer available")

print("exercised: offers.search / offers.get / Offer fields / Provider / Address / Contact")
All endpoints · 2 totalmissing one? ·

Searches nationwide vocational training offers (training type Berufsausbildung) for one supported profession and returns one page of normalized offers. The profession selects the site's occupation classification filter; titles that do not mention the profession are additionally dropped locally, and filtered_out_on_page reports how many offers of the upstream page were dropped, so a page can hold fewer than page_size offers. Pagination is upstream page-based: page starts at 0, the upstream page size is fixed at 20, total_pages/total_elements are the upstream counts before local title filtering, and has_more tells whether a further page exists; the site caps any search at 10000 results. An optional region restricts results to one or more German federal states. Each offer carries the offer-specific application_contacts (named contact persons attached to the offer, with their role) and application_url; the general provider contact is reported separately under provider and is not an application address. Dates are ISO YYYY-MM-DD in German local time and are null when the site has no fixed date; text fields such as degree, start_date_note, application_note and cost_note may contain HTML. One upstream request per call.

Input
ParamTypeDescription
pageintegerZero-based upstream result page; 20 upstream offers per page.
regionstringFederal state filter; comma-separated codes allowed (e.g. BAY,BAW). Omitted = nationwide.
professionrequiredstringProfession to search for. PFLEGEFACHPERSON covers Pflegefachmann/Pflegefachfrau/Pflegefachperson; FACHINFORMATIKER covers all Fachinformatiker specialisations.
Response
{
  "type": "object",
  "fields": {
    "page": "upstream page number returned (zero-based)",
    "offers": "array of normalized offers: offer_id (string), title, occupations (site classification labels), degree, education_type, teaching_form, schedule, duration, provider {provider_id, name, homepage, email, phone, address}, location {street, postal_code, city, district, state, state_code, lat, lon} (training venue), start_date, end_date, flexible_start, application_deadline, start_date_note, detail_url (public offer page), application_url, application_contacts (array of {name, role, email, phone, mobile, homepage} specific to the offer), application_note, cost_note, updated_at",
    "has_more": "true when a further page exists",
    "page_size": "upstream offers per page (20)",
    "profession": "normalized profession code that was searched",
    "total_pages": "upstream page count for the occupation filter before local title filtering",
    "total_elements": "upstream offer count for the occupation filter before local title filtering (site caps at 10000)",
    "filtered_out_on_page": "offers on this upstream page dropped because their title does not mention the profession"
  },
  "sample": {
    "data": {
      "page": 0,
      "offers": [
        {
          "title": "Ausbildung zur/zum Pflegefachfrau-/mann",
          "degree": "<p>Staatlich anerkannte/r Pflegefachfrau/-mann</p>",
          "duration": "mehr als 2 Jahre bis 3 Jahre",
          "end_date": "2029-12-01",
          "location": {
            "lat": 51.8286,
            "lon": 7.2792,
            "city": "Dülmen",
            "state": "Nordrhein-Westfalen",
            "street": "An der Kreuzkirche 5",
            "district": null,
            "state_code": "NRW",
            "postal_code": "48249"
          },
          "offer_id": "320252974",
          "provider": {
            "name": "carecampus Pflegeakademie im Kreis Coesfeld gGmbH",
            "email": "[email protected]",
            "phone": "02594 9550",
            "address": {
              "lat": 51.945,
              "lon": 7.1667,
              "city": "Coesfeld",
              "state": "Nordrhein-Westfalen",
              "street": "Kupferstr. 10",
              "district": null,
              "state_code": "NRW",
              "postal_code": "48653"
            },
            "homepage": "http://www.care-campus.de",
            "provider_id": "1340"
          },
          "schedule": "Vollzeit",
          "cost_note": null,
          "detail_url": "https://web.arbeitsagentur.de/ausbildungssuche/berufsausbildung-suche/angebot/320252974",
          "start_date": "2026-12-01",
          "updated_at": "2026-09-03",
          "occupations": [
            "Pflegefachmann/Pflegefachfrau (Ausbildung)"
          ],
          "teaching_form": "Präsenzunterricht",
          "education_type": "Berufsausbildung",
          "flexible_start": false,
          "application_url": "https://care-campus.de",
          "start_date_note": "<p>Jährlicher Beginn zum 01. August und zum 01. Oktober in Vollzeit.</p>",
          "application_note": null,
          "application_contacts": [
            {
              "name": "<contact name>",
              "role": "Ansprechpartner",
              "email": "[email protected]",
              "phone": "02541 970690",
              "mobile": null,
              "homepage": "http://www.care-campus.de"
            }
          ],
          "application_deadline": null
        }
      ],
      "has_more": true,
      "page_size": 20,
      "profession": "pflegefachperson",
      "total_pages": 31,
      "total_elements": 603,
      "filtered_out_on_page": 0
    },
    "status": "success"
  }
}

About the Bund API

What the API covers

Both endpoints return data scoped to Germany's Ausbildungssuche portal, covering nationwide Berufsausbildung (vocational training) offers. search_offers requires a profession parameter — a normalized code such as PFLEGEFACHPERSON or FACHINFORMATIK — and accepts an optional region parameter as a comma-separated list of federal-state codes (e.g. BAY,BAW). Results come back as zero-based pages of up to 20 offers each; has_more, total_pages, and total_elements let you drive pagination. Note that total_elements reflects the site's occupation-filter count before any title-level filtering; the filtered_out_on_page field tells you how many offers on a given page were dropped because their title did not mention the requested profession.

Offer records

Each offer in search_offers includes offer_id, title, occupations (the site's own classification labels), degree, education_type, and teaching_f (teaching format). Passing an offer_id to get_offer returns the full normalized record: provider (with provider_id, name, homepage, email, phone, and a structured address), location (training venue with state code and coordinates), start_date and end_date as ISO dates (or null when no fixed date is published), detail_url pointing to the public offer page, application_url when the provider has published one, and updated_at showing when the source last modified the record.

Limitations to know

The source caps its result set at 10,000 offers per occupation filter regardless of the actual number of matching offers. Profession codes are a fixed enumeration — you cannot pass arbitrary free-text occupation strings. Filtering to a specific city or postal code is not available; the finest geographic granularity supported is the federal state level via the region parameter.

Reliability & maintenanceVerified

The Bund API is a managed, monitored endpoint for ausbildungssuche.api.bund.dev — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ausbildungssuche.api.bund.dev changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official ausbildungssuche.api.bund.dev API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
1h ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Aggregate Berufsausbildung vacancies by federal state using the region parameter for a regional job board
  • Track when providers update listings by monitoring the updated_at field from get_offer
  • Build profession-specific alert feeds using search_offers pagination fields (has_more, total_pages) to detect new offers
  • Display training venue maps by consuming the location coordinates returned by get_offer
  • Pre-fill application forms using the application_url and application_contacts from get_offer
  • Cross-reference provider contact details (email, phone, homepage) for outreach to Ausbildung-offering companies
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does ausbildungssuche.api.bund.de have an official developer API?+
The German federal government publishes an open data API for Ausbildungssuche at https://ausbildungssuche.api.bund.dev. This Parse API surfaces that data in a normalized, ready-to-query form without requiring you to handle the underlying request format yourself.
What does `search_offers` return versus `get_offer`?+
search_offers returns a page of up to 20 offers containing key fields like offer_id, title, occupations, degree, and education_type, plus pagination metadata. get_offer takes a single offer_id and returns the complete record including provider contact details, location with coordinates, start_date, end_date, application_url, and updated_at.
Can I filter offers below the federal-state level, for example by city or postal code?+
No. The finest geographic granularity available is the federal state, via the region parameter in search_offers using codes such as BAY or BAW. City or postal-code filtering is not currently supported. You can fork this API on Parse and revise it to add a post-filter step that narrows results by locality fields in the returned location object.
Are apprenticeship types other than Berufsausbildung covered?+
Not currently. Both endpoints are scoped to the Berufsausbildung education type. Other training categories available on the Ausbildungssuche portal (such as Umschulung or Weiterbildung) are not exposed. You can fork this API on Parse and revise it to add endpoints targeting those additional education types.
How does the `filtered_out_on_page` field affect result counts?+
total_elements reflects the site's raw count for the occupation filter before any title-level checks. On each page, offers whose titles do not mention the requested profession are dropped; filtered_out_on_page tells you how many were removed. This means the effective offers you receive per page can be fewer than 20 even when has_more is true.
Page content last updated . Spec covers 2 endpoints from ausbildungssuche.api.bund.dev.
Related APIs in EducationSee all →
ausbildung.de API
Search and browse apprenticeship (Ausbildung) listings on ausbildung.de. Retrieve job posting details, explore the full catalog of recognized training professions, and look up salary and compensation data for any apprenticeship career.
careeronestop.com API
Access data from CareerOneStop.com.
jobware.de API
Access data from jobware.de.
mygermanuniversity.com API
Access data from mygermanuniversity.com.
getmyfirstjob.co.uk API
Search and browse apprenticeship and early career opportunities across the UK by occupation, location, and employer. Access detailed job descriptions, employer profiles, occupation categories, and the latest apprenticeship listings from GetMyFirstJob.co.uk.
jobroom.ams.or.at API
Search and explore job listings from Austria's public employment service, view detailed job information, and discover available positions with autocomplete suggestions. Register as a jobseeker abroad and access the official terms of use for the eJob-Room platform.
offerzen.com API
Browse and retrieve tech job listings from OfferZen's developer marketplace. Access structured job data including required skills, company details, location, and workplace policy, with support for keyword filtering and pagination.
evergabe-online.de API
Search and retrieve public tender opportunities from Germany's e-Vergabe platform by keywords, contract types, CPV codes, and publication dates. Access detailed tender information and discover the latest procurement opportunities across construction and other sectors.