REST API
The HTTP interface for any programming language. Every dataset answers GET requests with JSON, and lists are also available as CSV.
Base URL
#All endpoints live under https://api.quellenkontor.dev/v1. The API only speaks HTTPS and answers GET requests, plus OPTIONS for calls from the browser. The version is part of the path. Calling the base URL without a path returns a short overview with links to the catalog, OpenAPI and the docs.
Anatomy of a request
#Every dataset has a path under /hr/; the parameters go in the address:
| Type | Format | Example |
|---|---|---|
| Date | YYYY-MM-DD | datum=2027-01-15 |
| Year | four digits | jahr=2027 |
| Number | period or comma as the decimal separator | netto=2500.50 |
| Boolean | true, false, 1, 0, ja or nein | probezeit=true |
| Selection | one of the allowed values, case does not matter | land=HE |
The API rejects unknown parameters with unbekannter_parameter instead of silently ignoring them, so a typo stands out immediately. Besides the dataset's own parameters there is format (json or csv) and trennzeichen (komma or semikolon, only with CSV).
All endpoints
#| Endpoint | Parameters | Reference |
|---|---|---|
GET /hr/mindestlohn | datum | Minimum wage |
GET /hr/mindestlohn/verlauf | von, bis | History |
GET /hr/mindestausbildungsverguetung | beginn, ausbildungsjahr, bestandteil | Apprentice pay |
GET /hr/mindestausbildungsverguetung/verlauf | von, bis, bestandteil | History |
GET /hr/pflegemindestlohn | datum, bestandteil | Care minimum wage |
GET /hr/pflegemindestlohn/verlauf | von, bis, bestandteil | History |
GET /hr/rechengroessen | jahr, datum | Contribution ceilings |
GET /hr/rechengroessen/verlauf | von, bis | History |
GET /hr/beitragssaetze | datum | Contribution rates |
GET /hr/beitragssaetze/verlauf | von, bis | History |
GET /hr/sachbezugswerte | jahr, datum | Meal and lodging values |
GET /hr/sachbezugswerte/verlauf | von, bis | History |
GET /hr/pfaendungsfreigrenzen | datum, unterhaltspflichten, netto | Garnishment exemptions |
GET /hr/pfaendungsfreigrenzen/verlauf | von, bis | History |
GET /hr/uebergangsbereich | datum | Midi-job zone |
GET /hr/uebergangsbereich/verlauf | von, bis | History |
GET /hr/minijob-abgaben | datum, bestandteil | Mini-job levies |
GET /hr/minijob-abgaben/verlauf | von, bis, bestandteil | History |
GET /hr/kuenstlersozialabgabe | jahr, datum, bestandteil | Artists' social levy |
GET /hr/kuenstlersozialabgabe/verlauf | von, bis, bestandteil | History |
GET /hr/ausgleichsabgabe | jahr, datum, arbeitsplaetze, besetzt, bestandteil | Compensatory levy |
GET /hr/ausgleichsabgabe/verlauf | von, bis, bestandteil | History |
GET /hr/steuerfreie-betraege | datum, bestandteil | Tax-free amounts |
GET /hr/steuerfreie-betraege/verlauf | von, bis, bestandteil | History |
GET /hr/reisekosten-inland | datum, bestandteil | Travel expenses |
GET /hr/reisekosten-inland/verlauf | von, bis, bestandteil | History |
GET /hr/sfn-zuschlaege | datum, grundlohn_stunde, bestandteil | Night and holiday premiums |
GET /hr/sfn-zuschlaege/verlauf | von, bis, bestandteil | History |
GET /hr/dienstwagen | listenpreis*, antrieb, anschaffung, ueberlassung, entfernung_km, fahrten_monat, zuzahlung_monat, co2_g_km, reichweite_km, batterie_kwh, datum | Company car |
GET /hr/einkommensteuer-eckwerte | jahr, datum, bestandteil | Basic tax allowance |
GET /hr/einkommensteuer-eckwerte/verlauf | von, bis, bestandteil | History |
GET /hr/kuendigungsfrist | eintritt*, zugang*, seite, probezeit | Notice period |
GET /hr/urlaubsanspruch | arbeitstage_pro_woche*, jahr, eintritt, austritt | Vacation entitlement |
GET /hr/mutterschutz | termin, geburt, fall, ssw | Maternity protection |
GET /hr/feiertage | jahr, land | Public holidays |
GET /hr/arbeitstage | von*, bis*, land*, samstag, regionale | Working days |
GET /hr/regelaltersgrenze | geburtsdatum, geburtsjahr, vertrauensschutz | Retirement age |
GET /hr/pausen | arbeitszeit_stunden*, jugendlich | Rest breaks |
GET /datensaetze | no key needed | Catalog of all datasets |
GET /aenderungen | no key needed | Changelog |
GET /status | no key needed | Review status per dataset: last check, secured through, expected change |
GET /openapi.json | no key needed | OpenAPI description |
GET /export | none | Full export, one request |
Parameters marked with * are required.
Examples in six languages
#All examples query the same notice period (Kündigungsfrist): start of employment on March 1, 2017, notice given by the employer, received on November 10, 2026. If you would rather work with ready-made methods, use the SDK for JavaScript or for Python.
curl
JavaScript (fetch)
Python (requests)
PHP
C# (.NET)
Java (11+)
Response
OpenAPI 3.1
#The full description is available without a key at https://api.quellenkontor.dev/v1/openapi.json. It contains every endpoint with parameters, types and examples. You can import it into Postman, Insomnia or Bruno, or generate a client for your language with the OpenAPI Generator:
Versions and stability
#The version is part of the path, currently /v1. Within v1, only additions happen: new datasets, new optional parameters, new fields in responses. We would only rename or remove a field, or change its meaning, in a new version, announced in the changelog. So write your code to ignore fields it does not recognize.
Timeouts and retries
#- Set a timeout of about 15 seconds per request.
- Only retry on network errors and status 502, 503 and 504, with a growing delay, for example 0.3 and 0.6 seconds. That is what the SDKs do too.
- Do not retry responses with 4xx. The request is faulty, or the quota is used up; retrying will not change that.
Calls from the browser
#The API allows calls from any origin (CORS), so you can quickly try examples in the browser. For a real application, the key belongs on your server: proxy requests there, or cache the values. Anything that lives in the browser can be read by any visitor.
Something missing or unclear? Write to us and we will extend the docs.