Skip to main content

quellenkontor

English: Official Python SDK for the Quellenkontor API: verified German HR reference data (minimum wage, social security ceilings and rates, public holidays by state, notice periods and more), each value with its legal basis, official source and effective date. No dependencies, Python 3.9+, typed (py.typed, TypedDict), thread safe, optional async client via pip install "quellenkontor[async]". English docs: quellenkontor.dev/en/docs/sdk-python. Field and parameter names are German, as in the API; options also have English names (base_url, retries, max_per_second, cache_max_entries, offline_max_age_days), and the error class is also available as QuellenkontorError.

Offizielles Python-SDK für die Quellenkontor-API: geprüfte HR-Daten für Deutschland mit Quelle, Rechtsgrundlage und Gültigkeit. Ohne Abhängigkeiten, ab Python 3.9, mit Typen und threadsicher.

pip install quellenkontor
import os
from quellenkontor import Quellenkontor

qk = Quellenkontor(api_key=os.environ["QK_KEY"])

ml = qk.hr.mindestlohn(datum="2027-01-15")
print(ml["mindestlohn_brutto_stunde"], ml["minijob_grenze_monat"])  # 14.6 633

frist = qk.hr.kuendigungsfrist(eintritt="2017-03-01", zugang="2026-11-10")
print(frist["ende"])  # 2027-02-28

azubi = qk.hr.mindestausbildungsverguetung(beginn="2025-08-01", ausbildungsjahr=2)
print(azubi["mindestverguetung_monat"])

Asynchron

pip install "quellenkontor[async]"
import asyncio
from quellenkontor.aio import AsyncQuellenkontor

async def main():
    async with AsyncQuellenkontor() as qk:
        ml = await qk.hr.mindestlohn(datum="2027-01-15")
        print(ml["mindestlohn_brutto_stunde"])

asyncio.run(main())

Der asynchrone Client nutzt httpx mit einer offenen Verbindung (Pooling) und hat dieselben Optionen, Wiederholungen, Zwischenspeicher und denselben Offline-Stand. httpx wird nur geladen, wenn du quellenkontor.aio importierst.

Optionen

Option Englisch Standard Bedeutung
api_key api_key QK_KEY aus der Umgebung API-Schlüssel
basis_url base_url https://api.quellenkontor.dev/v1 Adresse der API
timeout timeout 15.0 Zeitlimit je Versuch in Sekunden
wiederholungen retries 2 Wiederholungen bei Netzfehlern und 408, 500, 502, 503, 504
max_pro_sekunde max_per_second 8 Höchstens so viele Anfragen je Sekunde und Instanz, 0 schaltet die Bremse ab
cache cache True Zwischenspeicher mit ETag und If-None-Match
cache_ttl cache_ttl 300.0 So lange (Sekunden) kommt eine Antwort ohne neue Anfrage aus dem Speicher
cache_max_eintraege cache_max_entries 500 Höchstzahl gemerkter Antworten, die am längsten ungenutzte fällt heraus
offline offline True Offline-Stand nutzen, wenn die API nicht erreichbar ist
offline_warnung_tage offline_max_age_days 30 Ab diesem Alter trägt eine Offline-Antwort einen Hinweis in hinweise

Eine Instanz kann von mehreren Threads genutzt werden: Bremse und Zwischenspeicher sind mit einer Sperre geschützt.

Wiederholungen und Wartezeiten

Antwort Verhalten des SDK
Netzfehler oder Zeitlimit (auch socket.timeout auf 3.9) bis zu wiederholungen Mal erneut, Pause 0,3 s, dann 0,6 s, 1,2 s; danach Offline-Stand oder Fehler netzwerk
408, 500, 502, 503, 504 wie Netzfehler, ein Retry-After gilt als Mindestpause; danach Offline-Stand oder der Fehler der API
429 zu_schnell Retry-After abwarten (Sekunden oder HTTP-Datum, höchstens 30 s), bis zu 5 Mal, zählt nicht als Wiederholung
429 kontingent_erreicht kein neuer Versuch, Fehler
403 mit x-vercel-mitigated Fehler ausgebremst
304 die gemerkte Antwort gilt weiter und kostet kein Kontingent
andere 4xx sofort Fehler mit Code und Parameter der API

Offline-Stand

Der Verlauf aller 15 Tabellen-Datensätze liegt im Paket (offline_daten.json, geladen erst bei Bedarf). Ist die API nach allen Wiederholungen nicht erreichbar oder antwortet mit 5xx, kommt die Antwort aus diesem Stand mit offline: True, datenstand und einem Satz in hinweise. Rechner wie kuendigungsfrist bleiben ohne Verbindung ein Fehler. Die Mindestausbildungsvergütung richtet sich auch offline nach dem Ausbildungsbeginn (beginn). Ohne API-Aufruf: qk.offline_antwort("/hr/mindestlohn", {"datum": "2026-01-01"}).

Fehler

Fehler kommen als QuellenkontorFehler (auch QuellenkontorError) mit status, code und parameter. Die Codes sind stabil: die der API (etwa schluessel_fehlt, kontingent_erreicht, zu_schnell, parameter_fehlt, ungueltiger_parameter, kein_wert) und die des SDK: netzwerk, kein_wert_offline, ausgebremst, kein_httpx (asynchroner Client ohne httpx).

Typen

Jede Methode unter qk.hr hat einen Rückgabetyp aus quellenkontor.typen (TypedDict, total=False), etwa Mindestlohn oder Feiertage. Das Paket liefert py.typed mit, mypy und Pyright lesen die Typen direkt.

Umgebung

Variable Bedeutung
QK_KEY API-Schlüssel, wenn api_key fehlt

Ohne Schlüssel liefert die API mindestlohn, feiertage und rechengroessen als Sandbox (50 Abfragen am Tag je Adresse). Kostenloser Schlüssel mit 500 Abfragen im Monat: https://quellenkontor.dev/anmelden

Entwicklung

python -m pip install -e ".[test]"
python -m pytest
python -m build        # baut Wheel und sdist; nicht mit altem pip oder setup.py bauen

Doku: https://quellenkontor.dev/docs/sdk-python · Änderungen: CHANGELOG.md

Release files for quellenkontor 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for quellenkontor 0.1.1
File Size Uploaded
quellenkontor-0.1.1.tar.gz 50.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for quellenkontor 0.1.1
File Interpreter ABI Platform
quellenkontor-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 100.6 kB

Release files / quellenkontor-0.1.1.tar.gz

Download URL quellenkontor-0.1.1.tar.gz
Size 50.9 kB
Tags Source
SHA-256 checksum
How to use checksums
b3bc03707e6b90f1d59d82a8b7f473dcd4a1a50dd571977b7d5d6ed1bcafe8b1
BLAKE2b-256 checksum
How to use checksums
d4ba7e3bdd941227198f358c14f53eacff7bcadc4434622f6fa09e8a78428478
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release files / quellenkontor-0.1.1-py3-none-any.whl

Download URL quellenkontor-0.1.1-py3-none-any.whl
Size 49.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c4ea97ce23ca3231ae31419beb941442dae5476acd26d611fdf7ba792c1bf5f3
BLAKE2b-256 checksum
How to use checksums
03413aac4106c00d12ea633f5bde2f26d89849ba1652f895ad72c6dc5761c9f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page