REST-API + MCP-Server

SEO Report API für
Entwickler und KI-Agenten

Erstellen Sie Berichte über REST, pollen Sie sie bis zur Fertigstellung und lesen Sie denselben gespeicherten Bericht, den Ihr Team auf der Website sieht. Der gleiche API-Schlüssel aus Ihrem kostenpflichtigen Plan verbindet jeden MCP-fähigen Agenten.

Zugriffsmodell

Kostenpflichtiger Plan + API-Schlüssel

Der API-Zugang ist an Ihr Konto gebunden und per Schlüssel geschützt. Wählen Sie einen Plan, erstellen Sie in Ihrem Konto einen API-Schlüssel, und jede neue Website, die Sie über die API prüfen, verbraucht die Credits Ihres Plans – genau wie auf der Website. Credits werden am ersten Tag jedes Monats (UTC) zurückgesetzt und nie übertragen.

Ein Berichtobjekt

Website-Sitzungen, API Aufrufe und Agentensitzungen werden aus dem gleichen gespeicherten Berichtstatus gelesen.

Einfache Ablauf

Erstellen Sie einen Bericht, pollen Sie den Status, dann lesen Sie die vollständigen Ergebnisse vom selben Objekt.

Verfügbare Endpunkte

POST/api/v1/reports/preview

Erstellen Sie eine Score-Vorschau für Partner-Integrationen auf einem kostenpflichtigen Plan.

POST/api/v1/reports

Erstellen Sie einen neuen Bericht oder verwenden Sie einen bereits vorhandenen. Mit "forceRerun": true wird die Website stattdessen neu gescannt.

GET/api/v1/reports/:id

Erhalten Sie den neuesten Berichtstatus und die Abschnitte.

GET/api/v1/reports/:id/result

Lesen Sie die vollständigen Berichtsergebnisse.

GET/api/v1/reports/:id/download?format=json

Exportiere die Berichtspayload als JSON für programmatische Integrationen.

Quickstart: ein SEO-Bericht von curl

Drei Anfragen decken den gesamten Ablauf ab, mit einem API-Schlüssel aus Ihrem kostenpflichtigen Plan. Die erste erstellt den Bericht, die zweite fragt ihn ab, bis sein Status nicht mehr „queued“ oder „running“ ist, und die dritte exportiert ihn. Eine neue Website verbraucht einen Credit; eine Website erneut zu prüfen, für die Sie bereits einen Bericht haben, verbraucht keinen.

Erstellen, pollen und exportieren eines BerichtsBash
export SEOREPORT_API_KEY="sr__live_your_api_key"
# Send the key as a header file so it never sits in curl's argv, where ps shows
# it to every local user. printf is a shell builtin, so it spawns no process.
auth() { printf 'Authorization: Bearer %s\n' "$SEOREPORT_API_KEY"; }

# 1. Create a report and keep its job ID
JOB_ID=$(curl -s -X POST https://seoreport.dev/api/v1/reports \
  -H @<(auth) \
  -H "Content-Type: application/json" \
  -d '{"url": "example.com"}' | jq -r '.report.jobId')

# 2. Poll until the report is no longer queued or running
while :; do
  STATUS=$(curl -s "https://seoreport.dev/api/v1/reports/$JOB_ID" \
    -H @<(auth) | jq -r '.report.status')
  case "$STATUS" in queued|running) sleep 3 ;; *) break ;; esac
done
echo "status: $STATUS"

# 3. Export the finished report (format=pdf, md and txt also work)
curl -s "https://seoreport.dev/api/v1/reports/$JOB_ID/download?format=json" \
  -H @<(auth) -o report.json

Was die SEO-Report-API zurückgibt

Jeder fertige Bericht wird als ein JSON-Dokument exportiert: die Gesamtpunktzahl mit ihrer Stufe, eine Punktzahl pro Bereich, die Zahl der analysierten Seiten, offene Probleme nach Schweregrad und jeder Befund in Behebungsreihenfolge – mit Begründung, Lösung, Prüfschritten sowie den zugrunde liegenden Nachweisen und Seiten. Markdown, Text und PDF entstehen aus derselben Diagnose.

GET /api/v1/reports/:id/download?format=json (gekürzt)JSON
{
  "exportVersion": 1,
  "jobId": "3f6c2a1e-8d4b-4c7a-9e21-5b0d7f4a6c18",
  "targetUrl": "https://example.com",
  "status": "completed",
  "isSnapshotReady": true,
  "auditedAt": "2026-10-14T09:12:41.000Z",
  "locale": "en",
  "score": { "overall": 72, "band": "stable" },
  "areas": [
    { "id": "access_crawl", "name": "Crawl & Index", "score": 61 },
    { "id": "metadata_onpage", "name": "On-Page SEO", "score": 78 },
    { "id": "security", "name": "Security", "score": 84 }
  ],
  "pagesAnalyzed": 24,
  "openIssues": { "critical": 0, "high": 2, "medium": 5, "low": 3, "total": 10 },
  "findings": [
    {
      "rank": 1,
      "title": "Render parity mismatch",
      "status": "fail",
      "severity": "high",
      "area": { "id": "access_crawl", "name": "Crawl & Index" },
      "whyItMatters": "Raw HTML and rendered DOM should tell the same SEO story so crawlers and AI systems do not see conflicting versions of the page.",
      "fix": "Ensure raw HTML and rendered DOM contain the same critical SEO elements (title, H1, canonical, meta description, structured data). If content is injected by JavaScript, move it to server-side rendering so crawlers see it immediately.",
      "verification": [
        "Recheck these recorded examples: https://example.com/pricing. Method: compare the raw HTML with the rendered DOM. Previously observed: H1 present only after rendering",
        "Expected after the change: the same critical elements in both. Obtain a fresh capture and compare the same check and URLs; a changed sample alone does not verify a fix."
      ],
      "evidence": ["Raw HTML and rendered DOM were compared for critical elements."],
      "pages": ["https://example.com/pricing"]
    }
  ]
}

Fehler und Limits

Jede Ablehnung unten nennt ihren Code. Wer sie behandelt, lässt ein Skript nie blind wiederholen.

402PAYMENT_REQUIREDHinter der Anfrage steht kein bezahlter Plan: Der Schlüssel fehlt, ist ungültig oder widerrufen, oder das Konto hat keinen aktiven Plan. Ein fehlender Schlüssel ergibt 402, nicht 401.
402REPORT_CREDITS_EXHAUSTEDDie Credits für neue Websites sind in diesem Monat aufgebraucht. Eine Website, für die Sie schon einen Bericht haben, lässt sich weiter erneut prüfen; die Credits werden am ersten Tag jedes Monats (UTC) zurückgesetzt.
429FRESH_RUN_LIMITMehr als 30 neue Durchläufe (forceRerun) pro Stunde für ein Konto. Warten Sie die Zeit aus dem Header Retry-After ab.
200status: failed | dead_letteredDer Bericht konnte nicht abgeschlossen werden. GET /api/v1/reports/:id liefert error.code, error.message und error.retryable, wenn die Ursache erfasst wurde; wiederholen Sie nur, wenn retryable true ist.
200pollAfterMsWie lange Sie vor der nächsten Statusabfrage warten sollten; 0, sobald der Bericht fertig ist.

SEO Monitoring API

Eine für das Monitoring registrierte Domain wird jede Woche neu geprüft. Wenn sich etwas ändert, erhält die Alarmadresse eine E‑Mail: ein neues kritisches oder hochgradiges Ergebnis, ein gelöstes kritisches Ergebnis oder ein Wechsel in eine andere Score‑Band. Eine Woche ohne Änderung sendet nichts.

PUT/api/v1/monitors

Startet das wöchentliche Monitoring für eine Domain; „enabled“: false pausiert es.

GET/api/v1/monitors

Listet die Domains auf, die dieses Konto überwacht.

DELETE/api/v1/monitors?url=

Stoppt das Monitoring einer Domain und löscht ihre gespeicherten Ergebnisse.

Eine Domain überwachenBash
# Uses the auth() helper from the quickstart above.
# Re-audit a domain every week and email [email protected] when it changes
curl -X PUT https://seoreport.dev/api/v1/monitors \
  -H @<(auth) \
  -H "Content-Type: application/json" \
  -d '{"url": "example.com", "alertEmail": "[email protected]"}'

# List monitored domains
curl https://seoreport.dev/api/v1/monitors \
  -H @<(auth)

# Stop monitoring (pass the host the list returns)
curl -X DELETE "https://seoreport.dev/api/v1/monitors?url=example.com" \
  -H @<(auth)

Monitoring ist in kostenpflichtigen Plänen enthalten und verbraucht keine Bericht-Credits.

Offizieller TypeScript Client

Ein typisierter Client für die REST API. Authentifizieren Sie sich mit dem API-Schlüssel Ihres Plans, dann erstellen, pollen und exportieren Sie Berichte aus TypeScript.

Befehlszeile

Erstellen Sie Berichte mit Ihrem API-Schlüssel direkt im Terminal. Eine einzige globale Installation.

Bash
npm install -g @seoreport/client

MCP-Server — dieselbe API, derselbe Schlüssel

Richten Sie einen beliebigen MCP-fähigen Client auf https://seoreport.dev/mcp und authentifizieren Sie sich mit demselben Bearer-API-Schlüssel wie bei REST. Die Bericht- und Konto-Tools werden beim Verbinden automatisch angeboten — ein Agent kann eine Analyse starten und die Ergebnisse lesen, ganz ohne Zwischencode.

MCP-Client-KonfigurationJSON
{
  "mcpServers": {
    "seoreport": {
      "url": "https://seoreport.dev/mcp",
      "headers": {
        "Authorization": "Bearer sr__live_your_api_key"
      }
    }
  }
}
seoreport_create_report

Bericht für eine URL starten und eine Job-ID erhalten.

seoreport_get_report_status

Job abfragen, bis der Bericht fertig ist.

seoreport_get_report

Fertigen Bericht mit Score und Befunden lesen.

seoreport_list_reports

Berichte des Kontos auflisten.

seoreport_get_report_download

Download-URL für JSON, Markdown, Text oder PDF abrufen.

seoreport_get_account

Tarif, verbleibendes Guthaben und Verlängerungsdatum des Kontos prüfen.

Der Checkout liefert einen Link für den Browser, statt direkt abzubuchen: Ein Agent kann ihn anstoßen, bezahlen kann nur ein Mensch. Tarif kündigen, API-Schlüssel verwalten und das Konto löschen bleiben im Dashboard.

Bereit zum Bauen?

Wählen Sie einen Plan, erstellen Sie einen API-Schlüssel, und beginnen Sie, SEO-Berichte in Ihr Produkt zu integrieren.