Website-Backlink-Prüfwerkzeug: Skripte, die Sie planen können
Jeder Aufruf hier funktioniert mit curl oder einem beliebigen HTTP-Client. Ersetzen Sie den Key, behalten Sie das Muster bei: Aufruf, speichern, Diff.
ArchiLinks-Research-Team ·

Grundregeln
Ein Aufruf, eine Abrechnung. Jede Anfrage wird einmal berechnet, unabhängig von der Zeilenanzahl, und ein einzelner Aufruf gibt bis zu 1.000 Zeilen zurück. Die tiefe Paginierung endet bei 50.000 Zeilen, und per akzeptiert Werte von 10 bis 5.000.
Das ändert, wie Sie Skripte schreiben. Fordern Sie per=1000 an und paginieren Sie nur, wenn Sie mehr benötigen, denn ein Website-Backlink-Prüfwerkzeug, das auf kleinen Seiten basiert, vervielfacht Ihre Kosten um das Zehnfache ohne Mehrwert. Fehler sind klar: HTTP 401 für einen fehlenden Key, 402, wenn das Guthaben aufgebraucht ist, und jeder JSON-Body enthält ok.
Führen Sie jedes Skript einmal manuell gegen eine kleine Domain aus und lesen Sie das JSON. Die Key-Namen, der Zeilencontainer und die Paginierungsfelder sollten aus einer echten Antwort stammen, nicht aus unseren Beispielen, also bestätigen Sie diese, bevor ein Cron-Job davon abhängt.
Python: Speichern Sie einen datierten Snapshot
Feldnamen in der Antwort werden nur als Beispiel gezeigt. Drucken Sie eine Antwort aus, bevor Sie sich auf einen Key verlassen.
import json, sys, datetime, requests
BASE = "https://archilinks.com/api.php"
KEY = "sk_live_..."
def snapshot(domain, action="refdomains"):
r = requests.get(BASE, params={"action": action, "q": domain, "per": 1000, "key": KEY}, timeout=30)
if r.status_code in (401, 402):
sys.exit(f"API said {r.status_code}: check key or balance")
r.raise_for_status()
body = r.json()
assert body.get("ok"), body
name = f"{domain}-{action}-{datetime.date.today()}.json"
json.dump(body, open(name, "w"), indent=1)
print(name, body.get("_credits"))
snapshot(sys.argv[1])Node: Bulk-Domain-Rating für eine Liste
bulk_dr verarbeitet bis zu 2.000 Domains für 1 Credit pro Aufruf, per GET mit einem domains-Parameter oder per POST-Body. Das Komma-Trennzeichen unten ist ein Beispiel; testen Sie zuerst mit zwei Domains. Node 18 oder höher hat fetch integriert.
const domains = ["example.com", "example.org"];
const url = new URL("https://archilinks.com/api.php");
url.search = new URLSearchParams({
action: "bulk_dr",
domains: domains.join(","),
key: "sk_live_...",
});
const res = await fetch(url);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log(JSON.stringify(await res.json(), null, 2));Bash und jq: Wöchentlicher Diff
Speichern Sie einen Snapshot mit dem Datum, vergleichen Sie dann zwei Dateien. Halten Sie den Cron wöchentlich oder monatlich; der Index aktualisiert sich etwa monatlich.
# crontab: 0 6 1 * * /opt/seo/pull.sh old-shop.com
curl -s "https://archilinks.com/api.php?action=refdomains&q=$1&per=1000&key=$KEY" \
| jq -S . > "snap-$1-$(date +%F).json"
# compare two dated files
diff <(jq -S . snap-old-shop.com-2026-09-01.json) <(jq -S . snap-old-shop.com-2026-10-01.json) | head -50Welche Aktion für welches Skript
| Skript | Aktion | Kosten pro Lauf | Ausgabe |
|---|---|---|---|
| Migrations-Baseline | toppages, refdomains | 4 Credits | Zwei JSON-Dateien |
| Outreach-Bereinigung | bulk_dr | 1 Credit pro Aufruf, bis zu 2.000 Domains | DR pro Prospect |
| Rivalen-Überlappung | intersect | 2 Credits | Seiten, die auf 2–10 Domains verlinken |
| Anchor-Überwachung | anchors | 2 Credits | Anchor-Text-Liste |
| Portfolio-Prüfung | compare | 1 Credit pro Aufruf, bis zu 20 Domains | Nebeneinander-Metriken |

Umgang mit den Rändern
Skripte scheitern an den Rändern. Planen Sie dafür.
Verpacken Sie jeden Aufruf in einen Retry, der wartet und nach drei Versuchen aufgibt, außer bei 401 und 402, die ein Retry niemals beheben wird. Protokollieren Sie das _credits-Objekt aus jeder authentifizierten Antwort, damit ein Anstieg der Ausgaben in Ihren Logs erscheint, bevor er sich in Ihrem Guthaben zeigt, und begrenzen Sie Schleifen mit einer harten maximalen Seitenanzahl.
Bewahren Sie Snapshots in Git oder im Object Storage mit dem Datum im Dateinamen auf. Einfach, langweilig, effektiv. Für Migrationen koppeln Sie diese Skripte mit dem Redirect-Map-Rezept und der Migrations-Checkliste. Google-Sheets-Nutzer können dieselben URLs über Apps Script mit UrlFetchApp aufrufen, und ein Sheet mit einem monatlichen Trigger ist ein völlig guter Monitor.
Skript-Fragen
Drei Fragen tauchen meist auf, bevor die meisten Skripte live gehen, und jede hat eine kurze Antwort.
Wie prüfe ich kostenlos, wie viele Backlinks meine Seite hat?
Rufen Sie die Overview- oder Stats-Aktion ohne Key auf. Beide sind kostenlos und geben die Gesamtzahlen aus unserem eigenen Link-Index zurück.
Für die Listen hinter den Gesamtzahlen benötigen Sie einen Key und 2 Credits pro Aufruf.
Was passiert, wenn das Guthaben aufgebraucht ist?
Die API gibt HTTP 402 zurück. Ihr Skript sollte stoppen und alarmieren, nicht in einer Schleife neu versuchen. Laden Sie auf der Account-Seite mit USDT (TRC-20) auf und führen Sie es erneut aus.
Kann ich es vom Browser aus aufrufen?
Ja. CORS ist offen. Legen Sie den Key jedoch nicht in öffentlichem Frontend-Code ab, da ihn jeder lesen und Ihr Guthaben ausgeben kann.

Paginieren, ohne Credits zu verschwenden
Paginierung ist der Punkt, an dem Skripte leise mehr kosten als sie sollten. Jede Seitenanfrage ist ein separater Aufruf mit eigener Abrechnung, also zahlt eine Schleife, die eine Seite zu oft abfragt, für nichts.
Lesen Sie die Paginierungsfelder in einer echten Antwort, bevor Sie die Schleife schreiben. Die Beispiele auf dieser Seite zeigen die Struktur, aber die Namen und das Stopp-Signal stammen aus dem Live-JSON.
Stoppen, wenn eine Seite kürzer zurückkommt
Eine Seite mit weniger Zeilen als angefordert ist normalerweise die letzte. Lassen Sie die Schleife dort stoppen, anstatt eine zusätzliche Seite anzufordern, um sicherzugehen.
Wenn die Antwort ein total- oder next-page-Feld enthält, verwenden Sie dies als Stopp-Signal. Zählen Sie die von Ihnen gespeicherten Zeilen damit ab, damit eine Diskrepanz im Log erscheint.
Begrenzen Sie jede Schleife
Legen Sie ein hartes Maximum für Seiten in jeder Schleife fest. Eine Begrenzung schützt Ihr Guthaben, wenn sich ein Feldname ändert und das Skript weiterhin dieselbe Seite abfragt.
Wählen Sie die Begrenzung basierend auf der erwarteten Größe und erhöhen Sie sie bewusst, wenn eine echte Domain mehr Seiten benötigt.
Schreiben Sie jede Seite, sobald sie ankommt
Speichern Sie jede Seite sofort auf der Festplatte, sobald sie zurückkommt, mit der Seitennummer im Dateinamen. Ein Skript, das auf Seite vierzig stoppt, kann von der letzten gespeicherten Datei aus fortgesetzt werden, anstatt von vorne zu beginnen und doppelt zu zahlen.
Bewahren Sie die Dateien in einem Ordner pro Domain und Datum auf, damit ein Neulauf nie zwei Pulls vermischt.
Skripte zeitgesteuert ausführen
Jeder Scheduler reicht. Wichtig ist, dass jeder Lauf eine Datei hinterlässt und ein fehlgeschlagener Lauf jemanden informiert.
Wahl des Hosts für den Job
Cron eignet sich für einen Server mit einer Festplatte, die Sie kontrollieren. Ein CI-Job eignet sich für ein Repository, das die Snapshots bereits verwaltet, sodass die Historie neben dem Code lebt, der sie liest.
Egal was Sie wählen, halten Sie die Domain-Liste in einer Datei, damit das Hinzufügen einer Domain eine Bearbeitung ist und keine Änderung am Skript.
Alarm bei Fehlern, nicht bei jedem Erfolg
Alarmieren Sie, wenn das Skript fehlschlägt oder das Guthaben unter ein von Ihnen gewähltes Niveau fällt. Eine Erfolgsmeldung jeden Morgen gewöhnt die Leute daran, den Kanal zu ignorieren, der das echte Problem trägt.
Protokollieren Sie das _credits-Objekt aus jedem Lauf, wie das Python-Beispiel es zeigt, und prüfen Sie den Trend einmal im Monat.
Ein wöchentlicher Diff in fünf Schritten
Wählen Sie die Aktionen
Wählen Sie die zwei oder drei Aufrufe, die Ihre Frage beantworten. Jeder kostet Credits, also notieren Sie die Kosten daneben.
Speichern Sie die Rohantwort
Speichern Sie das JSON genau so, wie es ankam, mit Domain und Datum im Dateinamen. Formatierung kann bis zum Diff-Schritt warten.
Sortieren Sie Keys vor dem Vergleich
Verwenden Sie jq -S oder ein Äquivalent, damit die Key-Reihenfolge nicht als Änderung erscheint. Das Bash-Beispiel oben macht dies.
Vergleichen Sie die Listen, nicht die Dateien
Verknüpfen Sie die beiden Antworten auf die URL oder Domain, dann melden Sie, was hinzugefügt, entfernt und geändert wurde. Ein roher Textdiff einer langen Datei ist schwer zu bearbeiten.
Überprüfen Sie den Diff und handeln Sie
Senden Sie entfernte verlinkende Domains an den Verantwortlichen für Outreach und entfernte Seiten an den Verantwortlichen für Redirects.
Ein Skript testen, bevor ein Cron-Job davon abhängt
Ein Skript, das unbeaufsichtigt läuft, sollte sich zuerst beweisen. Nutzen Sie eine kleine Domain, lesen Sie das vollständige JSON und erweitern Sie dann die Liste.
Ein schneller Sanity-Check besteht darin, die Gesamtzahlen mit der kostenlosen Overview-Aufruf für dieselbe Domain zu vergleichen. Die Zahlen müssen einer bezahlten Liste nicht exakt entsprechen, aber sie sollten in der Größenordnung übereinstimmen.
Mit zwei Domains ausführen
Zwei Domains testen die Schleife, die Dateinamen und die Fehlerpfade. Eine Domain kann durch Glück bestehen, während zwei zeigen, ob die Schleife zwischen Domains zurückgesetzt wird.
Verwenden Sie eine Domain, die Sie gut kennen, und eine, die Sie nicht kennen, damit Sie beurteilen können, ob die Ausgabe richtig aussieht.
Halten Sie den Key aus Logs und Tickets heraus
Skripte drucken oft die vollständige Anfrage-Adresse, und der Key sitzt als Parameter in dieser Adresse. Entfernen Sie den Key aus jeder Zeile, die den Server verlässt, oder senden Sie ihn im Authorization-Header, der ihn aus der Adresse hält.
Wenn ein Key in einem Ticket oder einem öffentlichen Repository erscheint, stoppen Sie den geplanten Job, der ihn verwendet, vor dem nächsten Lauf.
Halten Sie eine kurze Notiz darüber, wo der Key lebt, welche Skripte ihn lesen und welche Hosts sie aufrufen. Diese Notiz benötigen Sie, wenn jemand fragt, wer das Guthaben ausgeben kann.
Die Aktion für jede Frage wählen
Starten Sie bei der Frage, nicht bei der Endpunktliste. Eine Migration muss wissen, welche URLs Links tragen, während eine Outreach-Liste Domain-Scores benötigt. Ein Host, zwei Fragen. Jede kostet eine andere Anzahl von Credits.
Schreiben Sie die Kosten neben die Frage, bevor Sie Code schreiben. Ein Skript, das wöchentlich läuft, multipliziert einen kleinen Preis mit fünfzig zwei, und diese Multiplikation ist leicht zu vergessen, bis das Guthaben es zeigt.
Retries, die aufhören, wenn sie sollten
Wiederholen Sie eine Anfrage, die aus einem temporären Grund fehlgeschlagen ist, wie einem Timeout oder einem Serverfehler, eine kleine Anzahl von Male mit wachsender Pause zwischen den Versuchen. Wiederholen Sie kein 401 oder 402, da Warten keine der Antworten ändern wird.
Protokollieren Sie jeden Retry mit Aktion und Domain, damit ein Muster von Fehlern als Muster und nicht als Stille erscheint.
Legen Sie die Retry-Anzahl an einer Stelle fest, damit jeder Aufruf im Skript derselben Regel folgt. Streuende Retry-Schleifen neigen dazu, sich gegenseitig zu widersprechen, und diese Widersprüche sind schwer in einem Log zu finden.