XML-Sitemap in JSON umwandeln
Machen Sie aus einer Sitemap eine saubere Adressliste: Ein Eintrag für example.com/a erscheint mit lastmod 2026-07-01, Priorität 0,8 und wöchentlicher Änderungshäufigkeit. Relative Pfade werden aufgelöst und kodierte Zeichen entschlüsselt, bereit für eine Tabelle. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Für alle, die die Adressen einer Sitemap in einer Tabelle, einem Skript oder einer eigenen Anwendung weiterverarbeiten wollen, statt XML von Hand zu durchsuchen.
Warum eine Sitemap selten nur eine Liste ist
Eine einzelne sitemap.xml darf höchstens 50.000 URLs enthalten. Größere Websites teilen sich daher in einen Sitemap-Index auf, der auf Dutzende oder Hunderte Unterdateien zeigt, manchmal über mehrere Ebenen und gemischt mit Seiten, Bildern und Nachrichten. Von Hand heißt das: jede Datei öffnen, erkennen, welche selbst wieder ein Index ist, und unterschiedliche Formate zusammenführen. Wer Inhalte prüft, einen Umzug plant oder tote Links sucht, will meist nur die fertige Adressliste.
Ein altes Format mit vielen Eigenheiten
Das Sitemap-Protokoll entstand 2005 und wurde im Jahr darauf von den großen Suchmaschinen gemeinsam übernommen, um Seiten großer oder schlecht verlinkter Websites auffindbar zu machen. Zwei Jahrzehnte später ist der Kern gleich, doch die Umsetzungen unterscheiden sich stark: fehlerhaftes XML, komprimierte Dateien, gemischte Protokolle. Die Umwandlung löst relative Pfade auf und entschlüsselt kodierte Zeichen, damit Ihre Liste sauber in Tabelle oder Prüfwerkzeug ankommt. Vergleichen Sie die Liste jeden Monat mit der vorherigen, sehen Sie sofort, welche Bereiche gewachsen oder geschrumpft sind.
Häufige Fragen
Bleibt meine Sitemap dabei auf meinem Gerät?
Ja, solange Sie den Inhalt selbst einfügen, verlässt er Ihren Browser nicht.
Wie viele URLs passen in eine einzelne Sitemap?
Eine sitemap.xml fasst höchstens 50.000 URLs. Größere Websites teilen sich deshalb in einen Index auf, der auf Dutzende oder Hunderte Unterdateien verweist, und genau dann hilft eine einzige Liste.
Bleiben Datum und Priorität jeder Seite erhalten?
Ja. Wenn die Quelldatei lastmod, changefreq und priority enthält, stehen diese Werte neben jeder Adresse in der Liste, sodass bei der Umwandlung nichts verloren geht.
Was mache ich mit der fertigen Adressliste?
Sie können vor einem Domainumzug den vollständigen Bestand sichern, damit im Weiterleitungsplan nichts fehlt, einen Crawler damit starten oder die Liste mit der vom Vormonat vergleichen, um gewachsene oder geschrumpfte Bereiche zu sehen.
Werden relative Pfade und kodierte Zeichen in den Adressen aufgelöst?
Ja. Relative Pfade werden zu vollständigen Adressen aufgelöst, und kodierte Zeichen in den Adressen werden entschlüsselt, damit die Liste ohne Nacharbeit in Tabellen oder eigene Auswertungen passt.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/seo/sitemap-to-json \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/sitemap.xml"}'const res = await fetch("https://api.kit.forhosting.com/seo/sitemap-to-json", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://example.com/sitemap.xml"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/seo/sitemap-to-json",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://example.com/sitemap.xml"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/seo/sitemap-to-json", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://example.com/sitemap.xml"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://example.com/sitemap.xml"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/seo/sitemap-to-json", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"url": "https://example.com/sitemap.xml"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "seo.sitemap_to_json",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Die Funktion liest eine eingefügte XML-Sitemap und gibt jede enthaltene URL mit lastmod, changefreq und priority als JSON-Liste zurück.
Von XML zu einer verarbeitbaren Liste
Eine XML-Sitemap lässt sich zwar mit einem Texteditor öffnen, aber nur mühsam nach einzelnen Werten durchsuchen. Die Funktion wandelt jeden Eintrag in ein JSON-Objekt mit den Feldern loc, lastmod, changefreq und priority um, in der Reihenfolge, in der sie in der Sitemap stehen, sodass sich die Liste direkt in eine Tabelle importieren oder in einem Skript weiterverarbeiten lässt, ohne die XML-Syntax selbst zu parsen.
Fehlende Felder bleiben erkennbar
Nicht jede Sitemap füllt alle vier Felder; changefreq und priority sind laut Standard optional. Fehlt ein Feld im Original, erscheint es im JSON-Ergebnis als leerer Wert, statt stillschweigend wegzufallen, damit der Unterschied zwischen „nicht vorhanden“ und „leer angegeben“ nachvollziehbar bleibt und sich in einer eigenen Auswertung sauber weiterverarbeiten lässt, ohne spätere Rückfragen zur Datenqualität der ursprünglichen Quelldatei überhaupt zu riskieren.
Kostenlos, mit sofortigem Ergebnis
Die manuelle Nutzung ist kostenlos und ohne Limit, ohne Anmeldung, auch bei größeren Sitemaps mit mehreren tausend URLs auf einmal oder mehreren Dateien kurz nacheinander an einem Tag. Sie fügen den Inhalt der XML-Datei ein und erhalten die JSON-Liste unmittelbar zum Kopieren oder Herunterladen. Für die automatisierte Umwandlung direkt über die URL der Sitemap steht die API-Anfrage für $0.002 bereit.
Integrationsbeispiele
URL-Liste für ein internes Reporting-Tool
Sabine Schneider wandelt die Sitemap eines Kundenprojekts in JSON um, um die enthaltenen URLs in ein internes Reporting-Tool zu importieren.
Änderungsdatum je Seite auswerten
Anna Hoffmann liest aus der JSON-Liste das lastmod-Feld jeder Seite aus, um zu prüfen, welche Bereiche der Website zuletzt aktualisiert wurden.
Grundlage für einen eigenen Crawl-Plan
Ein Entwickler wandelt die Sitemap in JSON um, um daraus automatisiert eine Liste von URLs für einen eigenen, begrenzten Crawl zu erzeugen.
Technische Fragen
Welche Felder enthält das JSON-Ergebnis?
loc, lastmod, changefreq und priority für jede URL, in derselben Reihenfolge wie in der eingefügten Sitemap.
Was passiert, wenn ein Feld in der Sitemap fehlt?
Es erscheint im JSON-Ergebnis als leerer Wert, statt einfach zu fehlen, damit der Unterschied nachvollziehbar bleibt.
Was kostet die Umwandlung direkt über die URL der Sitemap?
$0.002 pro Anfrage über die API. Mit eingefügtem Inhalt bleibt die Umwandlung kostenlos.
Ist dafür ein Konto nötig?
Nein. Weder für die kostenlose Nutzung noch für die API-Anfrage ist ein Konto erforderlich.