Ein Nur-Lese-API für den Rest des Werkzeugkastens
SeoMap-Daten sind selten der letzte Halt — ein Kunden-Dashboard, ein internes Reporting-Sheet oder ein Zapier-Workflow, der bei einem neuen Scan-Ergebnis eine Slack-Nachricht schickt, brauchen die Zahlen woanders. Dafür gibt es ein eigenständiges, öffentlich dokumentiertes REST-API: Nur-Lese-Zugriff auf die eigenen Projekte, Scans und Rasterpunkte per HTTP, mit selbst erzeugten und jederzeit widerrufbaren API-Keys. Kein Marktplatz-Eintrag, keine offizielle Zapier-App nötig — jedes Tool mit einem generischen HTTP-Modul (Zapier, n8n, Make, ein eigenes Cron-Skript) kann sich direkt anschließen.
Was die API zeigt
Vier Endpunkte decken den kompletten Lesezugriff ab: GET /api/v1/projects listet die eigenen Projekte inklusive Standort und Tags, GET /api/v1/projects/:id/scans die Scans eines Projekts mit Status und Kennzahlen, GET /api/v1/scans/:id einen einzelnen Scan, und GET /api/v1/scans/:id/points die vollständigen Rasterpunkte samt Rang. Jede Antwort ist reines JSON — kein Umweg über eine Login-Session, kein Browser nötig. Genau diese vier Ebenen (Projekt → Scan → Punkt) spiegeln, wie die App selbst Daten strukturiert, also lässt sich jeder Automatisierungs-Trigger, der in der App sichtbar ist, auch über die API abbilden.
Auth über Bearer-Key
Jeder Request braucht einen Authorization: Bearer <key>-Header. Ein ungültiger oder bereits widerrufener Key liefert 401. Der Key selbst wird gehasht gespeichert — nach der einmaligen Anzeige beim Erzeugen lässt er sich nirgends im Klartext mehr einsehen, nur widerrufen und durch einen neuen ersetzen. Damit sich mehrere Automatisierungen sauber trennen lassen (ein Key für Zapier, einer für ein internes Skript), lassen sich beliebig viele Keys parallel führen, jeder mit eigenem Label und eigenem „zuletzt verwendet“-Zeitstempel.
Was bewusst fehlt
Die API ist bewusst schmal gehalten: kein Schreibzugriff, keine Möglichkeit, über sie einen Scan auszulösen oder einen wiederkehrenden Scan-Zeitplan zu ändern — das bleibt der App vorbehalten, unter anderem weil dort die Credit- und Budgetprüfung vor jedem Scan sitzt. Auch interne Abrechnungsdaten (Kosten pro Scan, Credit-Belastung, BYOK-Status) werden nicht ausgeliefert, exakt wie bei den öffentlichen Share-Links. Wer mehr als reines Auslesen braucht — etwa Scans aus einem externen System heraus zu triggern —, bleibt für den Moment auf die App selbst angewiesen.