Command line (CLI)
With qk you query any dataset in the terminal, export lists as CSV and use values in scripts and cron jobs.
Installation
#The command line tool is called qk and needs Node.js 18 or later. Install it globally, or run it once with npx:
Set your key
#qk login asks for your key and stores it in ~/.config/quellenkontor/config.json, readable only by your user. If XDG_CONFIG_HOME is set, the file lives there instead. qk logout deletes it again. The key itself stays valid until you revoke it in your account.
If the environment variable QK_KEY is set, it takes priority over the stored file. That is the better approach on servers and in CI runs.
Anatomy of a command
#- Every dataset is a command, and every parameter is an option. Underscores become hyphens:
arbeitstage_pro_wochebecomes--arbeitstage-pro-woche. - Values go after a space or an equals sign:
--jahr 2027or--jahr=2027. - An option without a value counts as true:
--probezeitis the same as--probezeit true.
All commands
#| Command | Example | History |
|---|---|---|
| qk mindestlohn | qk mindestlohn --datum 2027-01-15 | qk mindestlohn verlauf |
| qk mindestausbildungsverguetung | qk mindestausbildungsverguetung --beginn 2026-08-01 --ausbildungsjahr 2 | qk mindestausbildungsverguetung verlauf |
| qk pflegemindestlohn | qk pflegemindestlohn --datum 2027-07-01 | qk pflegemindestlohn verlauf |
| qk rechengroessen | qk rechengroessen --jahr 2026 | qk rechengroessen verlauf |
| qk beitragssaetze | qk beitragssaetze --datum 2026-07-01 | qk beitragssaetze verlauf |
| qk sachbezugswerte | qk sachbezugswerte --jahr 2026 | qk sachbezugswerte verlauf |
| qk pfaendungsfreigrenzen | qk pfaendungsfreigrenzen --datum 2026-07-01 --unterhaltspflichten 1 --netto 2500 | qk pfaendungsfreigrenzen verlauf |
| qk uebergangsbereich | qk uebergangsbereich --datum 2026-01-01 | qk uebergangsbereich verlauf |
| qk minijob-abgaben | qk minijob-abgaben --datum 2026-10-01 | qk minijob-abgaben verlauf |
| qk kuenstlersozialabgabe | qk kuenstlersozialabgabe --jahr 2027 | qk kuenstlersozialabgabe verlauf |
| qk ausgleichsabgabe | qk ausgleichsabgabe --jahr 2025 --arbeitsplaetze 120 --besetzt 2 | qk ausgleichsabgabe verlauf |
| qk steuerfreie-betraege | qk steuerfreie-betraege --datum 2026-10-01 | qk steuerfreie-betraege verlauf |
| qk reisekosten-inland | qk reisekosten-inland --datum 2026-10-01 | qk reisekosten-inland verlauf |
| qk sfn-zuschlaege | qk sfn-zuschlaege --datum 2026-12-24 --grundlohn-stunde 22.5 | qk sfn-zuschlaege verlauf |
| qk dienstwagen | qk dienstwagen --listenpreis 58900 --antrieb elektro --anschaffung 2025-09-01 --entfernung-km 18 | no |
| qk einkommensteuer-eckwerte | qk einkommensteuer-eckwerte --jahr 2026 | qk einkommensteuer-eckwerte verlauf |
| qk kuendigungsfrist | qk kuendigungsfrist --eintritt 2017-03-01 --zugang 2026-11-10 | no |
| qk urlaubsanspruch | qk urlaubsanspruch --arbeitstage-pro-woche 3 | no |
| qk mutterschutz | qk mutterschutz --termin 2027-03-15 | no |
| qk feiertage | qk feiertage --jahr 2027 --land HE | no |
| qk arbeitstage | qk arbeitstage --von 2027-01-01 --bis 2027-01-31 --land HE | no |
| qk regelaltersgrenze | qk regelaltersgrenze --geburtsdatum 1961-08-15 | no |
| qk pausen | qk pausen --arbeitszeit-stunden 9.5 | no |
| qk datensaetze | all datasets with their options |
Output as table, JSON and CSV
#Without any further option, qk shows a table. Nested fields appear as feld.unterfeld, and lists such as public holidays appear as a separate table underneath. If a cell shows null, there is no value for that effective date, just as in the JSON response.
With --format json you get the response unchanged as JSON; with --format csv, lists come as CSV. For a German Excel, add --trennzeichen semikolon. Then qk also puts a BOM at the start of the file, so Excel reads the umlauts correctly.
In scripts and cron jobs
#Errors land on stderr as one line with the status and code, for example Fehler 400 (ungueltiger_parameter): Der Parameter datum muss ein Datum im Format JJJJ-MM-TT sein, zum Beispiel 2027-01-15.. The exit code is then 1, and 0 on success. That lets you abort a script cleanly.
Processing further with jq
Monthly export with cron
Help and version
#All options for each dataset, with type, default and allowed values, are listed in the reference.
Something missing or unclear? Write to us and we will extend the docs.