DataForSEO vs. eine Link-nur-API: Was sich in Ihrer R-Pipeline ändert
Ein Teardown einer imaginären Pipeline, Schritt für Schritt. Wir listen auf, was sich bewegt, was bleibt und was Sie verlieren, wenn Sie die Quelle auf Links beschränken.
CranSEO-Research-Team ·

Die Pipeline, Stufe für Stufe
Authentifizieren
Unser Schlüssel wird als Query-Parameter oder als Authorization Bearer Header übertragen. Für kostenlose Aktionen ist keiner erforderlich, daher können die ersten Zellen eines Notebooks von jedem ausgeführt werden.
Anfrage
Ein GET pro Aktion, mit q für die Domain. Paginierung verwendet page und per (10 bis 5000), Sortierung verwendet sort und order.
Parsing
Jede Antwort ist JSON mit einem ok-Feld. Authentifizierte Antworten enthalten zusätzlich _credits, die die Kosten und den verbleibenden Saldo anzeigen.
Speichern
Schreiben Sie den tibble und das Stichtagsdatum zusammen. Da sich das Diagramm etwa monatlich aktualisiert, ist das Datum Teil der Daten.
Bericht
Aus der gespeicherten Datei rendern, nicht aus einer Live-Anfrage, damit das Quarto-Dokument morgen das gleiche Diagramm anzeigt.
Was Sie gewinnen und was Sie opfern
| Betrachtung | Link-nur-API | Breiterer Anbieter |
|---|---|---|
| Umfang | Backlinks, verweisende Domains, Anchor-Texte, Top-Seiten, DR | Erweitert normalerweise um SERP- und Keyword-Daten |
| Abrechnung | Pro Aufruf, 1 Credit = $0.0001, kein Abonnement | Prüfen Sie die eigene Preisliste |
| Aktualität | Ungefähr monatliche Aktualisierung | Prüfen Sie die eigene Dokumentation |
| Zeilen pro Aufruf | Bis zu 1.000, einmal abgerechnet | Variiert je nach Endpunkt |
| Fehlschlagssignale | HTTP 401 ungültiger Schlüssel, HTTP 402 kein Guthaben | Variiert |

Der Fehler, der in dieser Art von Pipeline am meisten kostet
Die meisten Pipelines scheitern am Geld, nicht am Code. Eine Schleife, die einen Endpunkt für jede Zeile aufruft, verwandelt einen günstigen Job in einen teuren.
Bei uns kostet ein Aufruf gleich viel für 10 Zeilen oder 1.000, daher kehrt sich die Regel um: Fordern Sie die größtmögliche Seite an. Stellen Sie per auf 1000, sortieren Sie nach Ihren Anforderungen und stoppen Sie die Paginierung, sobald die Frage beantwortet ist.
Die tiefe Paginierung ist auf 50.000 Zeilen begrenzt, was ein Feature für Analysten ist, die versucht sind, alles abzurufen. Wenn eine Domain mehr Links hat, möchten Sie wahrscheinlich stattdessen toppages oder anchors verwenden.
Vergleichen Sie die Ausgaben Ihrer alten Schleife mit der Single-Call-Version, bevor Sie feiern. Manchmal ist die Ersparnis null, weil der alte Anbieter bereits pro Anfrage abgerechnet hat.
Urteil zu diesem Teardown
Die Quelle nur dann einschränken, wenn der Bericht schmal ist
Wenn die meisten Spalten in Ihrem tibble Links sind, entfernt eine Link-nur-API Parsing-Code und Kosten. Wenn die Hälfte der Spalten SERP-Daten sind, behalten Sie Ihren aktuellen Anbieter bei und fügen Sie unseren für den Rest hinzu.
- Behalten Sie die Demo-Zellen für kostenlose Aktionen bei
- Fixieren Sie das Stichtagsdatum in der Ausgabe
- Erwarten Sie einen monatlichen Rhythmus, keinen täglichen
Fragen aus dem Teardown
Muss ich meine gesamte Pipeline umschreiben?
Nein. Ersetzen Sie nur die Link-Stufe. Behalten Sie Ihre SERP- und Keyword-Stufen bei, schreiben Sie den Link-tibble in eine eigene Datei und verknüpfen Sie beide downstream über die Domain-Spalte.
Ist CORS für Browser-Notebooks geöffnet?
Ja. CORS ist geöffnet, sodass eine Shiny-App oder eine Observable-Zelle die kostenlosen Aktionen direkt aufrufen kann. Halten Sie bezahlte Schlüssel serverseitig, da alles im Browser-Code von Besuchern gelesen werden kann.
Wie teste ich die Fehlerbehandlung kostengünstig?
Senden Sie absichtlich einen falschen Schlüssel, um HTTP 401 zu sehen, ohne etwas auszugeben. Der HTTP 402-Fall tritt nur auf, wenn das Guthaben leer ist, also simulieren Sie ihn in Ihren Tests, anstatt Kredit zu verbrauchen.
Stimmen die Gesamtzahlen mit denen eines anderen Anbieters genau überein?
Nein. Jeder Anbieter crawlt anders und aktualisiert nach eigenem Zeitplan. Vergleichen Sie Größenordnungen und Trends und betrachten Sie DR hier als separate, in-house Logarithmus-Metrik.
Fehler, Wiederholungen und die Fehler, für die Sie planen können
Fehler sind dort, wo eine Link-nur-Pipeline und eine breitere Pipeline am ähnlichsten aussehen. Der Code bleibt dort oft unvollständig. Nehmen Sie die Fehlerpfade in den Vergleich auf, denn eine Entscheidung für DataforSEO vs. Link-nur sieht anders aus, sobald Fehler auf dem Tisch liegen.
HTTP 401 und HTTP 402 sind die beiden, die behandelt werden müssen
Zwei Statuscodes sind am wichtigsten. HTTP 401 bedeutet, dass der Schlüssel fehlt oder falsch ist, und die Lösung liegt in Ihrer Konfiguration, nicht in Ihren Daten. HTTP 402 bedeutet, dass das Guthaben aufgebraucht ist, und die Lösung ist ein Nachladen über die Kontoseite, keine Codeänderung.
Schreiben Sie beide als explizite Zweige. Ein generischer Catch, der den Status verschluckt und eine leere Tabelle schreibt, ist der Grund, wie ein stummer partieller Abruf passiert.
Timeouts und partielle Dateien
Ein Timeout ist kein Statuscode, daher muss Ihr eigener Code es als Fehler behandeln. Packen Sie den Aufruf so ein, dass ein Timeout den Lauf stoppt, bevor eine Ausgabe geschrieben wird.
Schreiben Sie in eine temporäre Datei und benennen Sie sie im Erfolgsfall um. Eine halb geschriebene Datei, die vollständig aussieht, ist das schlimmste Ergebnis eines unterbrochenen Laufs, weil niemand daran denkt, sie zu hinterfragen.
Wiederholungen und Taktung
Diese Seite zitiert keine Requests-pro-Sekunde-Zahl, also dimensionieren Sie die Pipeline nach Aufrufen pro Zyklus. Das ist die Zahl, die die Kosten treibt, und die Sie kontrollieren.
Wiederholen Sie nur Netzwerkfehler, mit einer Pause zwischen den Versuchen. Wiederholen Sie niemals ein 401 oder 402, da jeder Versuch auf die gleiche Weise fehlschlagen wird.
Wo der Schlüssel während Tests lebt
Halten Sie den Schlüssel in einer Umgebungsvariable auf Ihrem Rechner und im CI-Geheimnisspeicher, niemals in einer Datei, die die Tests lesen. Die kostenlosen Aktionen benötigen keinen Schlüssel, daher ist der erste Testlauf für jeden sicher, der das Projekt klonnt.
Stellen Sie für jede Pipeline, die Sie berühren, die gleiche Frage: Wer kann den Schlüssel lesen, und wo ist er notiert? Ein Schlüssel, der in einer Protokolldatei erscheint, ist ein Leak, auch wenn das Notebook selbst privat ist.
Protokollieren der Kosten jedes Aufrufs
Jede Antwort eines authentifizierten Aufrufs enthält das Credits-Feld, das die Kosten und den verbleibenden Saldo anzeigt. Kopieren Sie es in Ihr Protokoll neben den Zeitstempel und den Aktionsnamen, sodass eine Kostenfrage aus der Datei und nicht aus dem Gedächtnis beantwortet werden kann.
Lesen Sie das Protokoll einmal im Monat, nicht einmal im Jahr. Ein langsamer Anstieg der Kosten pro Zyklus ist in einem Diagramm leicht zu übersehen, in einer Spalte mit Zahlen jedoch offensichtlich.
Ein fehlgeschlagener Lauf sollte auch sein Protokoll hinterlassen, mit dem Statuscode und dem Schritt, an dem er gestoppt hat. Ein Protokoll, das nur Erfolge aufzeichnet, verbirgt die Zeile, die Sie benötigt hätten.

Zeilen über Stufen hinweg zählen
Viele kostspielige Pipeline-Bugs sind Zählfehler. Eine Tabelle verliert Zeilen bei einem Join, einem Filter oder einer Deduplizierung, und das Diagramm sieht danach immer noch plausibel aus.
Schreiben Sie eine Zählung bei jeder Übergabe
Stellen Sie sich die Pipeline als eine Kette von Tabellen vor: die API-Antwort, der geparsedte tibble, die gespeicherte Datei und der Bericht. Eine Zeilenzahl bei jeder Übergabe zeigt, welche Stufe Zeilen verloren hat, falls dies geschehen ist.
Analysten zählen oft nur am Ende. Bis dahin liegt die Ursache drei Stufen zurück, und der tibble wurde seitdem zweimal umgeformt.
Eine Zeile pro Domain, eine Zeile pro Link
Die Granularität hängt von der Aktion ab. Ein Abruf verweisender Domains hat eine Zeile pro verlinkender Site, während ein Backlink-Abruf eine Zeile pro Link hat, und eine Site kann viele davon senden. Zählen Sie auf der falschen Granularität, und zwei korrekte Zahlen scheinen sich zu widersprechen.
Legen Sie die Granularität in den Dateinamen der gespeicherten Datei oder in einen Header-Kommentar, damit die nächste Person nicht raten muss. Die Aktionen-Glossar listet die Granularität jeder Aktion auf.
Paginierung und die 50.000-Zeilen-Obergrenze
Paginierung mit page und per funktioniert bis zu 5000 Zeilen pro Seite, aber tiefe Paginierung stoppt bei 50.000 Zeilen. Ein Abruf, der mehr erwartet, wird abgeschnitten, und seine Zählung kann verdächtig rund aussehen.
Vergleichen Sie die erhaltene Zahl mit der erwarteten Gesamtzahl. Wenn sie sich unterscheiden, prüfen Sie die Aktion, ihre Sortierung und die Seitengröße, bevor Sie die Quelle beschuldigen.
Ein durchgerechnetes Beispiel, hypothetisch
Sagen wir, ein hypothetischer Abruf fragt nach verlinkenden Sites für 30 Ziel-Domains ab und gibt 30 Zeilen mit Zählungen zurück. Mit den Scores joined behält die Tabelle 27 Zeilen. Die drei fehlenden Zeilen müssen vor dem Zeichnen eines Diagramms überprüft werden, beginnend mit ihren Schlüsseln.
Schreiben Sie diese drei Namen auf, nicht nur als Zählung. Eine Zählung sagt Ihnen, dass Zeilen fehlen, während die Namen Ihnen sagen, welche Schlüssel bereinigt werden müssen.
Joins, die Zeilen leise entfernen
Ein Left Join behält jede Zeile der linken Tabelle, sodass ein fehlender Score als NA erscheint, anstatt als verschwindende Zeile. Ein Inner Join verbirrt das gleiche Problem, indem er die Zeile vollständig entfernt.
Wählen Sie den Join-Typ bewusst und zählen Sie die NA-Scores nach dem Join. Diese Zählung gehört in das Protokoll neben das Credits-Feld.
Ein kurzer Testplan, bevor Sie wechseln
Führen Sie beide Quellen für einen Zyklus aus. Gleiche Domains, gleicher Tag.
Nehmen Sie 30 Domains, die Sie gut kennen, ziehen Sie verweisende Domains-Zählungen von Ihrem aktuellen Anbieter und von CranSEO ab und plotten Sie sie gegeneinander auf Log-Achsen. Sie sollten eine grobe Diagonale sehen, keine exakte, da Crawls unterschiedlich sind und unsere etwa monatlich aktualisiert wird; DataForSEO, Ahrefs und Semrush sehen jeweils ein leicht anderes Web.
Lesen Sie die Ausreißer, nicht den Durchschnitt. Wo unsere Zählung weit darunter liegt, prüfen Sie, ob die Domain neu oder kürzlich umgezogen ist. Wo sie weit darüber liegt, prüfen Sie Subdomains. Das Glossar definiert, was wir als verweisende Domain zählen, und das Runbook zeigt, wie Sie beide Abrufe nebeneinander speichern.
Vor dem ersten Produktionslauf
- Der Schlüssel wird aus der Umgebung gelesen, und ein Test deckt einen fehlenden Schlüssel ab
- Ein Testaufruf auf einer einzelnen Domain, protokolliert mit seinem Credits-Feld
- Explizite Zweige für HTTP 401 und HTTP 402
- Eine Zeilenzahl, die in jeder Stufe geschrieben wird
- Das Stichtagsdatum, das neben jeder gespeicherten Datei geschrieben wird