So nutzen Sie webatla-Dateien

Jede Datei ist zstd-komprimiertes JSON Lines mit einer Domain pro Zeile. Hier erfahren Sie, wie Sie sie öffnen, befragen und in Ihren Stack laden. Jedes Rezept lief auf der kostenlosen Vorschau mit 10.000 Zeilen, und die gezeigte Ausgabe ist das, was es tatsächlich ausgegeben hat.

Format
JSON Lines, zstd-komprimiert
.jsonl.zst
Eine Zeile pro
Domain, jeder Schlüssel immer vorhanden
Werte können null sein
Dateiname
Datensatz und Exportdatum
all-data-2026-10-16.jsonl.zst
Aktualität
Jeden Tag ein neuer Export
jeden Tag dieselben Spalten

1 · Was Sie herunterladen

Was Sie herunterladen

Jeder webatla-Datensatz ist JSON Lines: eine Domain pro Zeile, ein JSON-Objekt pro Zeile. Kostenpflichtige Dateien sind mit zstd komprimiert.

DateiInhaltFormat
Kompletter DatensatzAlle Zeilen des Datensatzes.jsonl.zst
AusschnittAlle Zeilen zu einer TLD, einem TLD-Suffix, einem Land (nach IP) oder einer Technologie, mit denselben Feldern wie die komplette Datei.jsonl.zst
Kostenlose Vorschau (10.000 Zeilen)Die ersten 10.000 Zeilen der kompletten Datei.jsonl Klartext, nicht komprimiert
Vorschau mit 20 Zeilen auf den Seiten für TLD, Land und TechnologieZeilen des jeweiligen Eintrags, mit denselben Feldnamen wie in der kostenpflichtigen Datei. Gezeigt werden einige der vollständigsten Zeilen, keine zufälligen.auf der Seite

Laden Sie einen Ausschnitt herunter, statt die komplette Datei zu filtern

Brauchen Sie nur eine Zone, ein Land oder eine Technologie, ist der Ausschnitt bereits gefiltert und um ein Vielfaches kleiner.

Die kostenlose Vorschau zeigt das Format, keine typische Mischung

Die meisten Dateien sind nach TLD-Suffix sortiert. Die ersten 10.000 Zeilen decken daher nur wenige Suffixe vom Anfang des Alphabets ab, und .com gehört nicht dazu. Ein Filter, der in der Vorschau nichts findet, kann in der kompletten Datei Millionen Zeilen liefern. Nutzen Sie die Vorschau, um Ihre Befehle zu entwickeln und zu testen. Sie laufen unverändert auf der kostenpflichtigen Datei.

2 · Datei öffnen

Hineinschauen, ohne auszupacken

Jedes Tool hier liest die komprimierte Datei als Stream. Der einzige Unterschied zwischen der Vorschau und der kostenpflichtigen Datei ist, wie Sie sie öffnen.

Bevor Sie starten: ein Tool wählen

sudo apt install zstd jq        # Debian, Ubuntu
brew install zstd jq duckdb     # macOS
pip install duckdb zstandard    # Python, any OS

Unter Windows nutzen Sie WSL.

Derselbe Befehl für die Vorschau und für die kostenpflichtige Datei

# free preview (plain JSONL): give the file to jq directly
jq -c 'select(."Country by IP" == "BG") | {Domain, "TLD suffix", "IP address"}' \
  webatla-all-data-preview-10k.jsonl

# paid file or slice (.jsonl.zst): decompress on the fly into the same jq
zstd -dc all-data-2026-10-16.jsonl.zst \
  | jq -c 'select(."Country by IP" == "BG") | {Domain, "TLD suffix", "IP address"}'
Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
{"Domain":"360.0.bg","TLD suffix":"0.bg","IP address":"31.13.236.27"}
{"Domain":"doktoranti5.0.bg","TLD suffix":"0.bg","IP address":"185.80.2.212"}
{"Domain":"edu5.0.bg","TLD suffix":"0.bg","IP address":"79.98.104.12"}
...

zstdcat liest beide Dateiarten, daher funktioniert eine Pipeline für die Vorschau und die kostenpflichtige Datei: zstdcat FILE | ...

DuckDB

brew install duckdbwinget install DuckDB.cli

SELECT Domain, TLD, "Country by IP", "HTTP status"
FROM read_json('all-data-2026-10-16.jsonl.zst',
  columns = {Domain: 'VARCHAR', TLD: 'VARCHAR',
             "Country by IP": 'VARCHAR', "HTTP status": 'INTEGER'})
LIMIT 3;
Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
Domain       TLD  Country by IP  HTTP status
360.0.bg     bg   BG             200
digsys.0.bg  bg   NULL           200
dnssec.0.bg  bg   NULL           0

zstdcat + jq

brew install zstd jqapt install zstd jq

zstdcat dns-2026-10-16.jsonl.zst | head -n 1 | jq .
Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
{
  "Domain": "360.0.bg",
  "TLD suffix": "0.bg",
  "TLD": "bg",
  "Domain type": "ICANN",
  ...

Python

pip install zstandard

import io, json, zstandard
with open("dns-2026-10-16.jsonl.zst", "rb") as fh:
    stream = zstandard.ZstdDecompressor().stream_reader(fh, read_across_frames=True)
    for line in io.TextIOWrapper(stream, encoding="utf-8"):
        row = json.loads(line)
        mx = (row["DNS records"] or {}).get("MX") or []
        if any((m.get("host") or "").lower().endswith(".google.com") for m in mx):
            print(row["Domain"])
Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
edu5.0.bg
shopping.9guacu.br
ffe.a.se
...

Zeilen zählen und Felder auflisten

brew install zstd jqapt install zstd jq

zstd -dc all-data-2026-10-16.jsonl.zst | wc -l
zstd -dc all-data-2026-10-16.jsonl.zst | head -n 1 | jq -r 'keys_unsorted[]'
Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
10000
Domain
TLD suffix
TLD
Domain type
HTTP status
...

Eigene Zufallsstichprobe erstellen

Die kostenlose Vorschau ist nicht zufällig. So ziehen Sie aus einer heruntergeladenen Datei eine repräsentative Stichprobe:

Linux: shufmacOS: gshuf (brew install coreutils)

zstd -dc all-data-2026-10-16.jsonl.zst | shuf -n 1000 > random-1000.jsonl
wc -l < random-1000.jsonl
Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
1000

3 · Fragen beantworten

Fragen, die die tägliche Datei beantwortet

Erst die Antwort, die DuckDB-Abfrage einen Klick entfernt. Öffnen Sie ein Terminal im Ordner mit Ihrem Download, geben Sie duckdb ein und fügen Sie die Abfrage ein.

Vertrieb Technologies

Welche WooCommerce-Shops werden in Deutschland gehostet?

Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
ariana.acDE
fjak.acDE
empower.abudhabiDE

Nach PR value sortiert und als woocommerce-de.csv mit 12 Zeilen gespeichert. Eine CSV, die Ihr CRM oder Ihre Tabellenkalkulation öffnet.

Abfrage anzeigen
COPY (SELECT Domain, "PR value" FROM read_json('technologies-2026-10-16.jsonl.zst',
    columns = {Domain: 'VARCHAR', "Country by IP": 'VARCHAR',
               Technologies: 'JSON', "PR value": 'DOUBLE'})
  WHERE "Country by IP" = 'DE' AND list_contains(CASE json_type(Technologies)
    WHEN 'OBJECT' THEN json_keys(Technologies)
    WHEN 'ARRAY' THEN from_json(Technologies, '["VARCHAR"]') END, 'WooCommerce')
  ORDER BY "PR value" DESC
) TO 'woocommerce-de.csv';
Datensatz Technologies →
Produktmarketing Technologies

Welcher Website-Baukasten betreibt die meisten Websites?

Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
WordPress628 · 80,6 %
Wix52 · 6,7 %
Squarespace45 · 5,8 %
Drupal22 · 2,8 %
Webflow20 · 2,6 %
Joomla12 · 1,5 %

Anteil unter diesen sechs Baukästen, nicht unter allen Websites. Führen Sie die Abfrage auf dem Ausschnitt eines Landes aus, um einen Markt zu vergleichen.

Abfrage anzeigen
SELECT tech, count(*) AS sites,
       round(100 * count(*) / sum(count(*)) OVER (), 1) AS pct
FROM (SELECT unnest(CASE json_type(Technologies)
        WHEN 'OBJECT' THEN json_keys(Technologies)
        WHEN 'ARRAY' THEN from_json(Technologies, '["VARCHAR"]') END) AS tech
      FROM read_json('technologies-2026-10-16.jsonl.zst', columns = {Technologies: 'JSON'}))
WHERE tech IN ('WordPress', 'Wix', 'Squarespace', 'Webflow', 'Drupal', 'Joomla')
GROUP BY tech ORDER BY sites DESC;
Datensatz Technologies →
Markenschutz RDAP & WHOIS

Welche neuen Domains enthalten Ihren Markennamen?

Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen, ausgeführt am 16. Okt. 2026
kayorashop.store2026-10-11
moonovaactivewearshop.com2026-10-10
shopcastava.com2026-10-01

In den letzten 30 Tagen registriert, mit Registrar. Ersetzen Sie shop durch Ihren Markennamen.

Abfrage anzeigen
SELECT "Domain creation date"[:10] AS created, Domain, Registrar
FROM read_json('rdap-whois-2026-10-16.jsonl.zst', columns = {Domain: 'VARCHAR',
  "Domain creation date": 'VARCHAR', Registrar: 'VARCHAR'})
WHERE Domain LIKE '%shop%'
  AND "Domain creation date" >= CAST(current_date - 30 AS VARCHAR)
ORDER BY created DESC;
Datensatz RDAP & WHOIS →
Domain-Investment Websites + Ranking

Welche Websites mit Ranking laufen in den nächsten 30 Tagen ab?

Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen, ausgeführt am 16. Okt. 2026
adamcadre.ac2026-10-24
ama.ab.ca2026-10-31
psychologistsassociation.ab.ca2026-11-09

Nach PR value sortiert. Viele Registries verlängern automatisch. Verstehen Sie die Liste daher als Beobachtungsliste, nicht als Drop-Liste.

Abfrage anzeigen
SELECT Domain, "Domain expiration date"[:10] AS expires
FROM read_json('websites-ranking-2026-10-16.jsonl.zst', columns = {Domain: 'VARCHAR',
  "Domain expiration date": 'VARCHAR', "PR value": 'DOUBLE'})
WHERE "Domain expiration date"
  BETWEEN CAST(current_date AS VARCHAR) AND CAST(current_date + 30 AS VARCHAR)
ORDER BY "PR value" DESC LIMIT 3;
Datensatz Websites + Ranking →
E-Mail & Infrastruktur DNS

Wer betreibt das DNS für diese Domains?

Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
cloudflare.com2.277 · 25,1 %
registrar-servers.com704 · 7,7 %
domaincontrol.com622 · 6,8 %

Anteil der Domains mit einem verwendbaren NS-Record, gruppiert nach den letzten zwei Labels des Hostnamens.

Abfrage anzeigen
CREATE OR REPLACE MACRO provider(h) AS
  array_to_string(string_split(lower(rtrim(h, '.')), '.')[-2:], '.');
SELECT provider(json_extract_string("DNS records", '$.NS[0]')) AS dns,
  count(*) AS domains, round(100 * count(*) / sum(count(*)) OVER (), 1) AS pct
FROM read_json('dns-2026-10-16.jsonl.zst', columns = {"DNS records": 'JSON'})
WHERE dns <> '' GROUP BY dns ORDER BY domains DESC, dns LIMIT 3;
Datensatz DNS →
Vertrieb All data

Welche Unternehmen nutzen Google Workspace für E-Mail?

Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
edu5.0.bgGoogle
shopping.9guacu.brGoogle
ffe.a.seGoogle

456 Domains in der kostenlosen Vorschau, ermittelt aus ihren MX-Records. Für Microsoft 365 prüfen Sie stattdessen auf .mail.protection.outlook.com.

Abfrage anzeigen
zstd -dc all-data-2026-10-16.jsonl.zst | jq -r '
  select(any(."DNS records".MX[]?.host;
             ascii_downcase | test("(^|\\.)(google|googlemail)\\.com$")))
  | .Domain' > google-workspace.txt
Datensatz All data →

4 · Liste erstellen

Eine Liste aus der kompletten Datei oder einem Ausschnitt erstellen

Die komplette Datei passt nicht in eine Tabellenkalkulation. Filtern Sie sie daher zuerst oder beginnen Sie mit einem Ausschnitt: eine Technologie, eine TLD, ein TLD-Suffix oder ein Land als eigene Datei, von der jeweiligen webatla-Seite oder über die API. Mit Zugang zu Technologies oder All data hat jede Technologie-Seite eine Download-Box für ihren Ausschnitt.

Aus der kompletten Datei

Eine TLD oder ein Suffix

jq

Die TLD ist das letzte Label der Domain. Das TLD-Suffix ist das genaue Public Suffix.

# every domain under one TLD (de covers every suffix that ends in .de)
zstd -dc all-data-2026-10-16.jsonl.zst | jq -c 'select(.TLD == "de")' > de.jsonl

# exactly one suffix
zstd -dc all-data-2026-10-16.jsonl.zst | jq -c 'select(."TLD suffix" == "2ix.de")' > 2ix.de.jsonl

# a suffix that equals its TLD (com, de, ac) has no file of its own:
# filter the TLD slice instead
zstd -dc webatla-all-data-ac-2026-10-16.jsonl.zst | jq -c 'select(."TLD suffix" == "ac")' > ac.jsonl
Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
de.jsonl      224 lines
2ix.de.jsonl   52 lines
ac.jsonl     5463 lines

In einem Land gehostete Websites, schnell gefunden

grep + jq

Eine Website ist eine Zeile mit einer IP-Adresse, und ihr Land ist der Ort, an dem der Server gehostet wird (ein ISO-Code in Großbuchstaben). grep verwirft die Zeilen, die nicht passen können, danach prüft jq den Rest exakt.

zstd -dc all-data-2026-10-16.jsonl.zst \
  | grep -F '"Country by IP":"DE"' \
  | jq -c 'select(."IP address" != null and ."Country by IP" == "DE")' > de-websites.jsonl
Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
de-websites.jsonl: 595 lines, the same as jq alone

Als CSV für Excel oder Google Sheets exportieren

jq

Excel zeigt höchstens 1.048.576 Zeilen an. Filtern Sie daher zuerst. Importieren Sie die CSV als UTF-8 (Daten, Aus Text/CSV), damit nicht lateinische Namen korrekt angezeigt werden.

zstd -dc all-data-2026-10-16.jsonl.zst | jq -nr '
  ["Domain","TLD suffix","HTTP status","Technologies"],
  (inputs | [.Domain, ."TLD suffix", ."HTTP status",
             (.Technologies | if . then tojson else null end)])
  | @csv' > all-data.csv
Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
"Domain","TLD suffix","HTTP status","Technologies"
"360.0.bg","0.bg",200,"{""HTTP/2"":{""version"":null},...}"
...  10,001 lines

Aus einem Ausschnitt

Vertrieb

Interessenten in einem Markt

Der WooCommerce-Ausschnitt, danach nur ein Land behalten.

COPY (
  SELECT Domain AS Website, "Country by IP" AS Country
  FROM read_json('webatla-technologies-WooCommerce-2026-10-16.jsonl.zst',
    columns = {'Domain': 'VARCHAR', 'Country by IP': 'VARCHAR', 'PR value': 'DOUBLE'})
  WHERE "Country by IP" = 'DE'
  ORDER BY "PR value" DESC
) TO 'woocommerce-germany.csv';
Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
Website,Country
ariana.ac,DE
fjak.ac,DE
empower.abudhabi,DE
Agenturen

Upsell-Liste: HubSpot-Websites, die auch WordPress nutzen

Der HubSpot-Ausschnitt, danach nur die Stacks mit WordPress behalten.

COPY (
  SELECT Domain AS Website, "Country by IP" AS Country
  FROM read_json('webatla-technologies-HubSpot-2026-10-16.jsonl.zst', columns = {
    'Domain': 'VARCHAR', 'Country by IP': 'VARCHAR', 'Technologies': 'JSON'})
  WHERE list_contains(CASE json_type(Technologies) WHEN 'OBJECT' THEN json_keys(Technologies)
    ELSE json_extract_string(Technologies, '$[*]') END, 'WordPress')
) TO 'hubspot-on-wordpress.csv';
Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
Website,Country
ateliercrescendo.ac,US
Sales Ops

Eine Datei pro Vertriebsgebiet

Einen Ausschnitt in je eine CSV pro Serverland aufteilen.

COPY (
  SELECT Domain AS Website, coalesce("Country by IP", 'unknown') AS Country
  FROM read_json('webatla-technologies-WooCommerce-2026-10-16.jsonl.zst',
    columns = {'Domain': 'VARCHAR', 'Country by IP': 'VARCHAR'})
) TO 'woocommerce-by-country'
  (FORMAT csv, PARTITION_BY (Country), WRITE_PARTITION_COLUMNS true, OVERWRITE);
Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
woocommerce-by-country/Country=DE/data_0.csv
woocommerce-by-country/Country=US/data_0.csv
...
Passt es in eine Tabellenkalkulation?Ein Excel-Tabellenblatt fasst 1.048.576 Zeilen
Websites mit HubSpot 375.063 Passt in ein Blatt
Websites mit WordPress 23.798.524 Filtern oder aufteilen
All data, die komplette Datei 420.933.308 Zu groß für jede Tabellenkalkulation

5 · Laden

Postgres, Parquet oder ein Join mit Ihrer eigenen Liste

PostgreSQL

psql

Jede Zeile wird zu einer jsonb-Zeile, mit einem GIN-Index auf Technologies.

psql -c 'CREATE TABLE domains (doc jsonb)'
zstdcat technologies-2026-10-16.jsonl.zst \
  | psql -c "\copy domains FROM STDIN WITH (FORMAT csv, QUOTE e'\x01', DELIMITER e'\x02')"
psql -c "CREATE INDEX ON domains USING gin ((doc->'Technologies'))"
psql -c "SELECT doc->>'Country by IP' AS country, count(*) AS sites FROM domains
         WHERE doc->'Technologies' ? 'WordPress' GROUP BY 1 ORDER BY 2 DESC, 1 LIMIT 5"
Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
COPY 10000
 country | sites
---------+-------
 US      |   300
 DE      |   110
 CA      |    29

Parquet

DuckDB

Typisierte Spalten, mit Technologies als Liste von Namen. Lässt sich in BigQuery, Snowflake, Spark oder pandas laden.

CREATE OR REPLACE MACRO techs(t) AS CASE json_type(t) WHEN 'OBJECT'
  THEN json_keys(t) WHEN 'ARRAY' THEN t->>'$[*]' ELSE []::VARCHAR[] END;
COPY (SELECT "Domain" AS domain, "Country by IP" AS country,
             "PR value" AS pr_value, techs("Technologies") AS technologies
      FROM read_json('technologies-2026-10-16.jsonl.zst', columns = {
        'Domain': 'VARCHAR', 'Country by IP': 'VARCHAR',
        'PR value': 'DOUBLE', 'Technologies': 'JSON'}))
TO 'technologies.parquet' (FORMAT parquet);
Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
technologies.parquet: 10000 rows
domain · country · pr_value · technologies (list of names)

Reichern Sie Ihre eigene Liste an

DuckDB

Ihre CSV auf der einen Seite, der Export auf der anderen, verknüpft über Domain.

SELECT c.domain, w."Country by IP" AS country, w."Registrar" AS registrar,
       w."HTTP status" AS http, w."Domain creation date"[:10] AS created
FROM read_csv('my-domains.csv') c
LEFT JOIN read_json('all-data-2026-10-16.jsonl.zst', columns = {
    'Domain': 'VARCHAR', 'Country by IP': 'VARCHAR', 'Registrar': 'VARCHAR',
    'HTTP status': 'INTEGER', 'Domain creation date': 'VARCHAR'}) w
  ON w."Domain" = lower(trim(c.domain))
ORDER BY 1;
Echte Ausgabe der kostenlosen Vorschau mit 10.000 Zeilen
domain              country  registrar                    http  created
Tamm.AbuDhabi       AE       ADSIC Registry Operator      200   2018-07-09
easy.ac             US       MarkMonitor Inc.             200   2014-02-27
global.abb          US       CSC Corporate Domains, Inc.  301   2019-10-03

6 · Tägliche Updates

Sehen, was sich über Nacht geändert hat

Jeden Tag steht ein frischer Export bereit. Vergleichen Sie zwei Tage über Domain und geben Sie nur die Änderungen an nachgelagerte Systeme weiter. Tauschen Sie die beiden Dateien, um die Domains aufzulisten, die weggefallen sind.

COPY (
  SELECT "Domain" FROM read_json('all-active-domains-2026-10-16.jsonl.zst',
                                 columns = {'Domain': 'VARCHAR'})
  EXCEPT
  SELECT "Domain" FROM read_json('all-active-domains-2026-10-15.jsonl.zst',
                                 columns = {'Domain': 'VARCHAR'})
) TO 'new-since-yesterday.csv' (HEADER false);

7 · Häufige Stolperfallen

Typische Stolperfallen

Feldnamen enthalten Leerzeichen

Setzen Sie sie in SQL und in jq in Anführungszeichen.

jq: ."TLD suffix"SQL: "TLD suffix" = 'com.sa'

DNS Status ist Text

Das Feld enthält den Text "TRUE" oder "FALSE" und keinen booleschen Wert. Vergleichen Sie es daher als String.

select(."DNS Status" == "TRUE")

Technologies gibt es in mehreren Formen

Eine Zuordnung von Namen zu Versionen (oder zu Objekten mit einer Version), eine Liste von Namen oder null. Lesen Sie bei einer Zuordnung die Schlüssel und bei einer Liste die Einträge, dann erhalten Sie in beiden Fällen eine Liste.

jq: (.Technologies // []) | if type == "object" then keys else . end

Entpacken Sie eine komplette Datei nie auf die Festplatte

Die komplette Datei „All data“ ist komprimiert etwa 34 GB groß und entpackt mehrere hundert GB. Lesen Sie sie als Stream, wie es jedes Rezept hier tut.

Prüfen Sie die ersten Zeilen

In DuckDB liefert ein falsch geschriebener Spaltenname NULL statt eines Fehlers.

8 · Fehlersuche

Wenn etwas schiefgeht

SymptomUrsache und Lösung
zstd: … unsupported format bei der kostenlosen VorschauDie Vorschau ist unkomprimiertes JSONL. Geben Sie sie direkt an jq, oder nutzen Sie zstdcat, das beides liest.
Python liefert weit weniger Zeilen als zstd -dc FILE | wc -lDie Datei enthält viele zstd-Frames und wurde mit einem Aufruf gelesen, der nach dem ersten aufhört. Nutzen Sie stream_reader mit read_across_frames=True, wie im Python-Rezept.
jq: syntax error bei .TLD suffixSetzen Sie Namen mit Leerzeichen in Anführungszeichen: ."TLD suffix"
SQL liefert 0 Zeilen ohne Fehler'Country by IP' in einfachen Anführungszeichen ist ein String, keine Spalte. Verwenden Sie für Spaltennamen doppelte Anführungszeichen.
DuckDB bricht mittendrin ab mit Expected OBJECT, but got ARRAYDie automatische Schemaerkennung betrachtet nur die ersten Zeilen. Deklarieren Sie die Spalten und geben Sie verschachtelte Felder als JSON an.
Ist mein Download vollständig?zstd -tq FILE && echo OK gibt OK aus, wenn sich die Datei vollständig dekomprimieren lässt.

Jedes Rezept läuft auf der kompletten Tagesdatei

Monats- oder Jahreszugang, jeden Tag ein frischer Export und eine API für Ausschnitte. Jedes Konto kann außerdem von jedem Datensatz eine kostenlose Vorschau mit 10.000 Zeilen herunterladen.