Docs navigation: CLIInstallation
Access methods

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:

Terminal
npm install -g @quellenkontor/cli

# without installing
npx @quellenkontor/cli mindestlohn --datum 2027-01-15

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.

Terminal
$ qk login
API-Schlüssel (beginnt mit qk_live_): qk_live_…
Gespeichert in /Users/du/.config/quellenkontor/config.json.

Anatomy of a command

#
Schema
qk <dataset> [--parameter value …] [--format tabelle|json|csv]
qk <dataset> verlauf [--format tabelle|json|csv]
  • Every dataset is a command, and every parameter is an option. Underscores become hyphens: arbeitstage_pro_woche becomes --arbeitstage-pro-woche.
  • Values go after a space or an equals sign: --jahr 2027 or --jahr=2027.
  • An option without a value counts as true: --probezeit is the same as --probezeit true.

All commands

#
CommandExampleHistory
qk mindestlohnqk mindestlohn --datum 2027-01-15qk mindestlohn verlauf
qk mindestausbildungsverguetungqk mindestausbildungsverguetung --beginn 2026-08-01 --ausbildungsjahr 2qk mindestausbildungsverguetung verlauf
qk pflegemindestlohnqk pflegemindestlohn --datum 2027-07-01qk pflegemindestlohn verlauf
qk rechengroessenqk rechengroessen --jahr 2026qk rechengroessen verlauf
qk beitragssaetzeqk beitragssaetze --datum 2026-07-01qk beitragssaetze verlauf
qk sachbezugswerteqk sachbezugswerte --jahr 2026qk sachbezugswerte verlauf
qk pfaendungsfreigrenzenqk pfaendungsfreigrenzen --datum 2026-07-01 --unterhaltspflichten 1 --netto 2500qk pfaendungsfreigrenzen verlauf
qk uebergangsbereichqk uebergangsbereich --datum 2026-01-01qk uebergangsbereich verlauf
qk minijob-abgabenqk minijob-abgaben --datum 2026-10-01qk minijob-abgaben verlauf
qk kuenstlersozialabgabeqk kuenstlersozialabgabe --jahr 2027qk kuenstlersozialabgabe verlauf
qk ausgleichsabgabeqk ausgleichsabgabe --jahr 2025 --arbeitsplaetze 120 --besetzt 2qk ausgleichsabgabe verlauf
qk steuerfreie-betraegeqk steuerfreie-betraege --datum 2026-10-01qk steuerfreie-betraege verlauf
qk reisekosten-inlandqk reisekosten-inland --datum 2026-10-01qk reisekosten-inland verlauf
qk sfn-zuschlaegeqk sfn-zuschlaege --datum 2026-12-24 --grundlohn-stunde 22.5qk sfn-zuschlaege verlauf
qk dienstwagenqk dienstwagen --listenpreis 58900 --antrieb elektro --anschaffung 2025-09-01 --entfernung-km 18no
qk einkommensteuer-eckwerteqk einkommensteuer-eckwerte --jahr 2026qk einkommensteuer-eckwerte verlauf
qk kuendigungsfristqk kuendigungsfrist --eintritt 2017-03-01 --zugang 2026-11-10no
qk urlaubsanspruchqk urlaubsanspruch --arbeitstage-pro-woche 3no
qk mutterschutzqk mutterschutz --termin 2027-03-15no
qk feiertageqk feiertage --jahr 2027 --land HEno
qk arbeitstageqk arbeitstage --von 2027-01-01 --bis 2027-01-31 --land HEno
qk regelaltersgrenzeqk regelaltersgrenze --geburtsdatum 1961-08-15no
qk pausenqk pausen --arbeitszeit-stunden 9.5no
qk datensaetzeall 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.

Terminal
$ qk mindestlohn --datum 2027-01-15
datensatz                                  mindestlohn
datum                                      2027-01-15
mindestlohn_brutto_stunde                  14.6
minijob_grenze_monat                       633
gueltig_ab                                 2027-01-01
gueltig_bis                                null
rechtsgrundlage                            Fünfte Mindestlohnanpassungsverordnung vom 5. November 2025 (BGBl. 2025 I Nr. 268), Stufe 2
quelle.titel                               Fünfte Mindestlohnanpassungsverordnung vom 5. November 2025 (BGBl. 2025 I Nr. 268)
quelle.url                                 https://www.recht.bund.de/bgbl/1/2025/268/VO.html
minijob_rechtsgrundlage                    § 8 Abs. 1a SGB IV (Mindestlohn × 130 ÷ 3, aufgerundet auf volle Euro)
minijob_quelle.titel                       Bekanntmachung der Geringfügigkeitsgrenze nach § 8 Absatz 1a SGB IV vom 7. November 2025 (BAnz AT 20.11.2025 B1)
minijob_quelle.url                         https://www.bundesanzeiger.de/pub/publication/VaPRG6wPGXte9CM3jI4/content/VaPRG6wPGXte9CM3jI4/BAnz%20AT%2020.11.2025%20B1.pdf
vorheriger_wert.gueltig_ab                 2026-01-01
vorheriger_wert.mindestlohn_brutto_stunde  13.9
vorheriger_wert.minijob_grenze_monat       603
naechster_wert                             null
hinweise                                   Die Minijob-Grenze gilt je Monat. Gelegentliches unvorhersehbares Überschreiten ist in engen Grenzen erlaubt (§ 8 Abs. 1b SGB IV). | Die Pauschalabgaben des Arbeitgebers für Minijobs (Kranken- und Rentenversicherung, Pauschsteuer, Umlagen) liefert der Datensatz minijob-abgaben (/v1/hr/minijob-abgaben).
lizenz                                     Werte aus amtlichen Werken (§ 5 UrhG). Nutzung der Zusammenstellung nach den Nutzungsbedingungen von Quellenkontor.
stand                                      2026-09-23
zitat                                      Gesetzlicher Mindestlohn in Deutschland am 15.01.2027: 14,60 Euro brutto je Stunde, gültig ab 01.01.2027. Minijob-Grenze: 633 Euro im Monat. Rechtsgrundlage: Fünfte Mindestlohnanpassungsverordnung vom 5. November 2025, Stufe 2. Quelle: Fünfte Mindestlohnanpassungsverordnung vom 5. November 2025 (BGBl. 2025 I Nr. 268), https://www.recht.bund.de/bgbl/1/2025/268/VO.html. Daten: Quellenkontor (quellenkontor.dev).
datenstand                                 2026-09-23.1

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.

Terminal
qk feiertage --jahr 2027 --land HE --format csv --trennzeichen semikolon > feiertage.csv

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

Terminal
qk feiertage --jahr 2027 --land BY --format json | jq -r '.feiertage[] | "\(.datum) \(.name)"'

Monthly export with cron

crontab
# on the 1st of every month at 6am, back up the contribution ceilings history
0 6 1 * * QK_KEY=qk_live_… qk rechengroessen verlauf --format csv > /daten/rechengroessen.csv
In a cron job, it is better to keep the key in a file with restricted permissions that the script reads, rather than directly in the crontab.

Help and version

#
Terminal
qk hilfe
qk version
qk datensaetze

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.