Redirect Checker JSON-API
Prüfe Weiterleitungen aus Skripten, Monitoring oder deiner CI-Pipeline. Kostenlos, ohne API-Key.
GET https://redirect-tester.com/api.php?url=example.com&ua=googlebot
JSON-API für den Redirect-Checker
Die JSON-API liefert dir dasselbe Ergebnis wie der Redirect-Checker, nur maschinenlesbar – für Skripte, Monitoring und CI-Pipelines. Sie ist kostenlos und kommt ohne API-Key und ohne Registrierung aus.
GET https://redirect-tester.com/api.php?url=example.com&ua=googlebot
Parameter
| Parameter | Pflicht | Beschreibung |
|---|---|---|
url | ja | Die Domain oder URL, die geprüft werden soll. Fehlt das Schema, wird http:// ergänzt – aus example.com wird also http://example.com. Enthält der Wert & oder ?, musst du ihn URL-kodieren. |
ua | nein | User-Agent: default, chrome (Chrome Desktop), mobile (Safari iPhone) oder googlebot. Standard: default. |
Antwort
{
"url": "http://example.com",
"ua": "default",
"result": {
"hops": [
{ "url": "http://example.com", "status": 301, "time": 45, "type": "http", "error": null },
{ "url": "https://example.com/", "status": 200, "time": 120, "type": "http", "error": null }
],
"error": null,
"hints": [
{ "level": "info", "code": "hint.no_hsts", "text": "No Strict-Transport-Security (HSTS) header on the final URL." }
]
},
"error": null
}
result.hopsenthält alle Anfragen der Reihe nach. Der letzte Eintrag ist die finale URL.status: der HTTP-Statuscode – odernull, wenn die Anfrage gescheitert ist (Timeout, DNS- oder TLS-Fehler). Dann steht der Grund inerror.time: Antwortzeit in Millisekunden.type:httpfür eine normale HTTP-Antwort,meta, wenn diese Seite per Meta-Refresh weitergeleitet hat.
result.errorist gesetzt, wenn die Prüfung abgebrochen wurde: bei einer Redirect-Schleife oder nach mehr als 10 Hops.result.hintsenthält die Auswertung.levelisterror,warning,infoodersuccess.codeist ein stabiler Schlüssel, auf den du dich in deinem Code verlassen kannst:hint.final_error,hint.missing_location,hint.chain,hint.temporary,hint.meta_refresh,hint.no_https,hint.no_hsts,hint.ok.textist eine lesbare Erklärung.errorauf oberster Ebene ist gesetzt, wenn die Anfrage nicht verarbeitet werden konnte.resultist dannnull.
Alle Texte in text und error sind englisch. Werte sie nicht per Textvergleich aus, sondern nutze code und die Statuscodes.
HTTP-Statuscodes der API
| Status | Bedeutung |
|---|---|
200 | Die Prüfung wurde durchgeführt. Das gilt auch, wenn die geprüfte URL einen Fehler wie 404 liefert oder nicht erreichbar ist – schau dir dafür die Hops an. |
400 | Der Parameter url fehlt. |
422 | Die URL ist ungültig oder nicht erlaubt. |
429 | Rate-Limit überschritten. Warte ein paar Minuten, bevor du weitere Anfragen schickst. |
Limits
Jede Anfrage zählt als eine Prüfung. Das Limit liegt bei 60 Prüfungen pro IP-Adresse in 10 Minuten und gilt gemeinsam mit den Checkern auf der Website. CORS ist nicht aktiviert: Browser blockieren Aufrufe aus JavaScript auf anderen Websites. Ruf die API stattdessen von Servern, Skripten oder CI-Jobs aus auf.
Beispiele
curl
curl "https://redirect-tester.com/api.php?url=example.com&ua=googlebot"
curl und jq
# Statuscode der finalen URL
curl -s "https://redirect-tester.com/api.php?url=example.com" | jq '.result.hops[-1].status'
# Die ganze Kette, ein Hop pro Zeile
curl -s "https://redirect-tester.com/api.php?url=example.com" | jq -r '.result.hops[] | "\(.status) \(.url)"'
# Nur die Hint-Codes
curl -s "https://redirect-tester.com/api.php?url=example.com" | jq -r '.result.hints[].code'
PHP
<?php
$api = 'https://redirect-tester.com/api.php?' . http_build_query(['url' => 'example.com', 'ua' => 'googlebot']);
// ignore_errors: auch den JSON-Body von 4xx-Antworten lesen
$context = stream_context_create(['http' => ['ignore_errors' => true, 'timeout' => 30]]);
$data = json_decode(file_get_contents($api, false, $context), true, 512, JSON_THROW_ON_ERROR);
if ($data['error'] !== null) {
exit('API-Fehler: ' . $data['error'] . PHP_EOL);
}
$hops = $data['result']['hops'];
$final = end($hops);
printf("%d Hop(s), finaler Status %s: %s\n", count($hops), $final['status'] ?? 'fehlgeschlagen', $final['url']);
foreach ($data['result']['hints'] as $hint) {
echo "[{$hint['level']}] {$hint['code']}\n";
}
JavaScript (Node.js 18+)
const params = new URLSearchParams({ url: 'example.com', ua: 'chrome' });
const res = await fetch(`https://redirect-tester.com/api.php?${params}`);
const data = await res.json();
if (!res.ok) {
throw new Error(`API ${res.status}: ${data.error}`);
}
const { hops, hints } = data.result;
console.log(hops.map((hop) => hop.status ?? 'fehlgeschlagen').join(' -> '));
console.log('Finale URL:', hops.at(-1).url);
console.log('Hinweise:', hints.map((hint) => hint.code));
CI-Check: Abbruch, wenn der finale Status nicht 200 ist
Dieses Shell-Skript prüft eine Liste von URLs, etwa nach einem Deployment oder einem Domainumzug, und bricht mit Fehler ab, sobald eine davon nicht auf 200 endet:
#!/bin/sh
set -eu
for url in example.com www.example.com http://example.com/alte-seite; do
status=$(curl -fsS -G "https://redirect-tester.com/api.php" --data-urlencode "url=$url" \
| jq -r '.result.hops[-1].status')
if [ "$status" != "200" ]; then
echo "FAIL $url: finaler Status $status" >&2
exit 1
fi
echo "OK $url"
done
Dank curl -f schlägt das Skript auch fehl, wenn die API selbst mit 4xx antwortet – zum Beispiel, weil das Rate-Limit erreicht ist. Halt die Liste also so kurz, dass du unter 60 Prüfungen in 10 Minuten bleibst. Für einmalige Listen ist der Bulk-Redirect-Checker der schnellere Weg.
Häufige Fragen
- Brauche ich einen API-Key?
Nein. Die API ist kostenlos und funktioniert ohne Registrierung und ohne API-Key. Damit sie für alle verfügbar bleibt, sind pro IP-Adresse 60 Prüfungen in 10 Minuten möglich. Überschreitest du das, bekommst du HTTP
429, bis das Zeitfenster abgelaufen ist.- Warum kann ich die API nicht aus dem JavaScript meiner Website aufrufen?
Die API sendet keine CORS-Header, deshalb blockieren Browser Anfragen von fremden Origins. Ruf sie stattdessen von deinem Server, einem Skript, einem Cronjob oder einer CI-Pipeline aus auf. Node.js, PHP, curl und andere serverseitige Clients sind von CORS nicht betroffen.
- Die API liefert 200, aber die URL ist kaputt. Ist das ein Fehler?
Nein. HTTP
200heißt nur, dass die Prüfung selbst geklappt hat. Das Ergebnis der geprüften URL steht inresult.hops: Schau dir denstatusdes letzten Hops an,result.errorfür Schleifen oder zu viele Hops und diehints, etwahint.final_error. Was die einzelnen Statuscodes bedeuten, erklärt die Übersicht der HTTP-Statuscodes.
Weitere kostenlose Tools
-
Bulk-Checker
Prüfe bis zu 20 URLs auf einmal, z. B. deine Redirect-Map nach einem Domain-Umzug. Mit CSV-Export.
-
Header-Checker
Alle HTTP-Response-Header jedes Hops, inklusive Location, Cache-Control und HSTS.
-
.htaccess-Redirect-Generator
Erzeuge .htaccess-Regeln für einzelne Seiten, HTTPS- und www-Weiterleitungen.
-
nginx-Redirect-Generator
Erzeuge nginx-Server-Blöcke und return-Regeln für deine Weiterleitungen.
-
HTTP-Statuscodes
Alle HTTP-Statuscodes erklärt, mit Hinweisen, wie Google sie behandelt.