API‑Referenz
Integrieren Sie SignalSumos SEO-Daten direkt in Ihre eigenen Tools, Dashboards und Workflows.
Schnellstart
Drei Schritte zu Ihrer ersten Antwort.
1. Erstellen Sie einen API-Schlüssel
In einem Pro- oder Agency-Plan generieren Sie einen Schlüssel unter API-Schlüssel und kopieren Sie ihn – er wird nur einmal angezeigt.
2. Verifizieren Sie die Verbindung
curl -H "Authorization: Bearer ss_live_your_key_here" \
"https://signalsumo.com/api/v1/usage"
A 200 Antwort mit Ihrem Plan und verbleibenden Aufrufen bedeutet, dass Sie verbunden sind.
3. Führen Sie Ihren ersten Datenaufruf aus
curl -X POST \
-H "Authorization: Bearer ss_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"keyword":"seo audit tool","limit":5}' \
"https://signalsumo.com/api/v1/keyword-research"
Authorization: Bearer Header und gibt das gleiche JSON‑Envelope zurück – durchsuchen Sie die untenstehenden Endpunkte nach Parametern und Antwortfeldern.
Übersicht
Alle API-Endpunkte werden bereitgestellt unter:
https://signalsumo.com/api/v1/
Anfragen und Antworten verwenden JSON. Jede Antwort folgt derselben Struktur:
{
"success": true,
"data": { ... },
"meta": { "timestamp": "2026-06-26T10:00:00+00:00" }
}
Fehler folgen dem gleichen Muster mit success: false und ein error Objekt statt data.
Endpunkte fallen in zwei Gruppen, und der Unterschied liegt in den Kosten:
- Research-Endpunkte —
/backlinks,/keyword-research,/site-audit— fetch fresh data from outside SignalSumo. They draw feature quota or credits. See Pläne & Abrechnung. - Your‑Data-Endpunkte — everything under
/rank,/gscund/ai-visibility— read what your account has already collected. They are plain database reads: they cost keine Credits und kein Feature‑Kontingent, und sie werden niemals wegen Überschreitung des monatlichen Limits abgelehnt.
Authentifizierung
Übergeben Sie Ihren API‑Schlüssel im Authorization Header bei jeder Anfrage:
Authorization: Bearer ss_live_your_key_here
Alternativ können Sie es als Query‑Parameter übergeben (nicht für die Produktion empfohlen):
GET /api/v1/usage?api_key=ss_live_your_key_here
Der Authorization: Bearer Header ist die empfohlene Methode. Die API sendet außerdem permissive CORS‑Header, sodass sie direkt von browserbasierten Tools aufgerufen werden kann. Halten Sie geheime Schlüssel in der Produktion serverseitig.
Pläne & Abrechnung
API-Zugriff ist verfügbar auf dem Pro und Agentur Plänen. Zwei unabhängige Zähler steuern die Nutzung – ein Aufruf wird nur ausgeführt, wenn beide erlauben Sie es.
1. Monatliche API‑Aufrufe
Jede Anfrage (einschließlich Cache‑Hits und Fehler, die einen Endpunkt erreichen) zählt als ein API‑Aufruf.
| Plan | Monatliche API‑Aufrufe | Zurücksetzungen |
|---|---|---|
| Pro | 20 | Erster jedes Monats |
| Agentur | 100 | Erster jedes Monats |
Bei Überschreitung wird zurückgegeben HTTP 429 (RATE_LIMITED) mit einem resets_at Feld in meta. Prüfen Sie Ihr Live-Limit und die Nutzung jederzeit über GET /usage.
2. Kontingent & Credits pro Feature
Über den Aufrufzähler hinaus beziehen die Datenendpunkte jeweils ihr monatliches Feature‑Kontingent (dieselbe Menge, die Ihr angemeldetes Dashboard verwendet). So verhält sich jeder, wenn dieses Kontingent erschöpft ist:
| Endpunkt | Wenn das Feature‑Kontingent erschöpft ist |
|---|---|
| /keyword-research | Rückgabe 429 QUOTA_EXCEEDED. Niemals verbraucht Credits – sicher zu wiederholen. |
| /backlinks | Fällt zurück auf 1 Credit pro Anfrage. A tief Abfrage (page > 1 oder limit > 100) always costs 1 credit. No credits → 402 PAYMENT_REQUIRED. |
| /site-audit | Rückgabe 429 QUOTA_EXCEEDED wenn das monatliche Crawl‑Limit oder das rollierende Seitenbudget aufgebraucht ist. |
"cached": true in meta, und verbraucht kein Feature‑Kontingent oder Credits (es zählt weiterhin als ein API‑Aufruf).
3. Anfragen pro Minute
Unabhängig von den monatlichen Zählern legt Ihr Tarif fest, wie viele Anfragen pro Minute Sie stellen können. Das begrenzt eine unkontrollierte Schleife oder einen geleakten Schlüssel auf ein wiederherstellbares Maß – ein monatliches Kontingent sagt nichts darüber aus, ob es innerhalb einer Stunde vollständig verbraucht wird.
| Plan | Anfragen pro Minute |
|---|---|
| Pro | 20 |
| Agentur | 60 |
Jeder Endpunkt wird separat gezählt, sodass das Aufbrauchen Ihres Backlink-Kontingents Sie nie von der Keyword‑Recherche ausschließt. Bei Überschreitung wird 429 mit retry_after (Sekunden) und limit in meta. Abgelehnte Anfragen werden nicht gezählt, sodass das Warten auf retry_after löscht es immer.
409 ALREADY_RUNNING; versuchen Sie es in ein paar Sekunden erneut und es wird ein Cache‑Treffer sein.
Standorte & Sprachen
/keyword-research akzeptiert ein location_code und language_code um Ergebnisse zu lokalisieren. Beide sind optional – die Vorgaben sind die Vereinigten Staaten (2840) und Englisch (en).
location_code
Ein numerischer Marktcode. Häufige Werte:
| Code | Markt | Code | Markt |
|---|---|---|---|
| 2840 | Vereinigte Staaten | 2276 | Deutschland |
| 2826 | Vereinigtes Königreich | 2250 | Frankreich |
| 2124 | Kanada | 2724 | Spanien |
| 2036 | Australien | 2380 | Italien |
| 2356 | Indien | 2528 | Niederlande |
| 2392 | Japan | 2076 | Brasilien |
Über 90 Märkte werden unterstützt. Ein nicht erkannter Code liefert 422 UNSUPPORTED_LOCATION statt auf die USA zurückzugreifen – für amerikanische Daten zu zahlen, die Sie nicht angefordert haben, ist schlimmer, als zu erfahren, dass der Code falsch ist. Rufen Sie GET /api/v1/keyword-research/locations für die vollständige Liste.
language_code
Ein zweibuchstabiger Sprachcode. Unterstützte Werte:
| Code | Sprache | Code | Sprache |
|---|---|---|---|
| en | Englisch | pt | Portugiesisch |
| es | Spanisch | nl | Niederländisch |
| fr | Französisch | ru | Russisch |
| de | Deutsch | ja | Japanisch |
| it | Italienisch | zh | Chinesisch |
language_code fällt zurück auf Englisch statt einen Fehler zurückzugeben – prüfen Sie daher den Code, wenn die Ergebnisse unerwartet auf Englisch erscheinen.
Fehlercodes
| HTTP | Code | Bedeutung |
|---|---|---|
| 400 | BAD_REQUEST | Fehlerhafte Anfragesyntax |
| 401 | UNAUTHORIZED | Fehlender oder ungültiger API‑Schlüssel |
| 403 | FORBIDDEN | API‑Zugriff ist in Ihrem Tarif nicht verfügbar (Pro‑ oder Agentur‑Plan erforderlich) |
| 404 | NOT_FOUND | Endpunkt oder Ressource nicht gefunden |
| 402 | PAYMENT_REQUIRED | Feature‑Kontingent erschöpft und keine Credits mehr vorhanden (Backlinks) |
| 422 | VALIDATION_ERROR | Erforderlicher Parameter fehlt oder hat einen ungültigen Wert |
| 409 | ALREADY_RUNNING | Die gleiche Anfrage wird bereits für Ihr Konto abgerufen – versuchen Sie es in Kürze erneut, dann wird ein Cache‑Hit erzielt. Es wurde nichts berechnet |
| 429 | RATE_LIMITED / QUOTA_EXCEEDED | Monatliches Aufruflimit, pro‑Minute‑Pacing oder Feature‑Kontingent‑Erreichen — siehe resets_at oder retry_after in meta |
| 502 | UPSTREAM_ERROR | Vom Upstream‑Datenanbieter wurden keine Daten zurückgegeben |
| 500 | SERVER_ERROR | Interner Fehler – sicher erneut zu versuchen |
MCP & LLM‑Clients
Wenn Ihr Ziel ist, einem Assistenten wie Claude diese Daten konversationell lesen zu lassen, müssen Sie keinen Client schreiben. SignalSumo spricht die Model Context Protocol, die die untenstehenden Endpunkte als Werkzeuge bereitstellt, die ein LLM direkt aufrufen kann.
| Route | Authentifizierung | Am besten geeignet für |
|---|---|---|
| Gehosteter Connector | OAuth 2.1 — no key to copy | Claude und andere MCP‑Clients. Keine Installation nötig, immer aktuell. |
@signalsumo/mcp auf npm | API‑Schlüssel in der Client‑Konfiguration | Lokale Installationen, selbstgehostete Setups oder Ausführung in Ihrer eigenen Umgebung. |
| Diese REST‑API | Authorization: Bearer | Eigene Skripte, Dashboards und Backend‑Integrationen. |
All three read the same data through the same endpoints and the same plan limits — they differ only in how the caller authenticates. The npm package uses slightly different tool names from the hosted connector; its README is the reference for those. Source: github.com/signalsumo/mcp.
GET /api/v1/usage
Gibt die API‑Kontingentnutzung für den aktuellen Kalendermonat zurück.
Beispielanfrage
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/usage"
Beispielantwort
{
"success": true,
"data": {
"plan": "agency",
"api_calls_used": 42,
"api_calls_limit": 100,
"unlimited": false,
"resets_at": "2026-08-01"
},
"meta": {
"timestamp": "2026-06-26T10:00:00+00:00",
"key_name": "Production App"
}
}
GET /api/v1/backlinks
Gibt das Backlink‑Profil einer Domain zurück: eine Zusammenfassung overview, Verteilung insights, und eine angereicherte Liste einzelner backlinks. Ergebnisse werden zwischengespeichert und mit Ihrem Dashboard geteilt (Pro: 2 Tage, Agentur: 7 Tage); ein Cache‑Treffer wird gekennzeichnet "cached": true und kostet kein Feature‑Kontingent.
Dies sind dieselben Daten, die Backlink Checker shows in the app, and the cache is shared — a domain you have already looked at there returns instantly here, free.
page > 1 oder limit > 100 — kostet immer 1 Credit. Siehe Pläne & Abrechnung.
Abfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| domain | Zeichenkette | Ja | Root‑Domain, z. B. example.com (eine vollständige URL wird ebenfalls akzeptiert und normalisiert) |
| Seite | Ganzzahl | Nein | Seitenzahl, Standard 1 |
| limit | Ganzzahl | Nein | Ergebnisse pro Seite, 1–200, Standard 100 |
Beispielanfrage
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/backlinks?domain=example.com&limit=2"
Beispielantwort
{
"success": true,
"data": {
"domain": "example.com",
"total_backlinks": 48210,
"referring_domains": 1824,
"page": 1,
"limit": 2,
"overview": {
"domain_rank": 71,
"total_backlinks": 48210,
"referring_domains": 1824,
"referring_domains_nofollow": 640,
"referring_main_domains": 1610,
"referring_pages": 39044,
"referring_ips": 1502,
"referring_subnets": 1210,
"dofollow_backlinks": 1184,
"broken_backlinks": 220,
"broken_pages": 96,
"spam_score": 8,
"first_seen": "2018-05-11 09:20:00",
"lost_date": null
},
"insights": {
"referring_links_types": { "anchor": 30140, "image": 9800 },
"referring_links_attributes": { "noopener": 12000, "nofollow": 8400 },
"referring_links_platform_types": { "blogs": 900, "cms": 640, "news": 210 },
"referring_links_tld": { "com": 1200, "org": 180 },
"referring_links_countries": { "US": 800, "GB": 210 },
"referring_subnets": 1210,
"referring_main_domains": 1610
},
"backlinks": [
{
"domain_from": "blog.example-news.com",
"url_from": "https://blog.example-news.com/best-seo-tools",
"url_to": "https://example.com/",
"anchor": "SignalSumo",
"dofollow": 1,
"spam_score": 4,
"first_seen": "2021-03-10 12:00:00",
"last_seen": "2026-06-20 04:00:00",
"semantic_location": "article",
"platform_type": "blogs",
"country": "US",
"is_broken": 0,
"domain_from_rank": 62,
"page_from_rank": 41,
"is_lost": 0,
"lost_date": null,
"is_new": 0,
"item_type": "anchor",
"page_from_title": "The Best SEO Tools in 2026",
"page_from_status_code": 200,
"url_to_status_code": 200,
"domain_from_ip": "192.0.2.10",
"tld_from": "com",
"links_count": 2,
"is_indirect_link": 0,
"url_from_https": 1,
"attributes": ["noopener"],
"text_pre": "we recommend",
"text_post": "for site audits",
"kw_top3": 4,
"kw_top10": 12,
"kw_top100": 88
}
]
},
"meta": { "timestamp": "2026-06-26T10:00:00+00:00", "cached": false }
}
Backlink‑Felder
| Feld | Beschreibung |
|---|---|
| domain_from / url_from | Die verlinkende Seite und die genaue Seite, auf der der Link steht |
| url_to | Die Seite Ihrer Domain, auf die verlinkt wird |
| Anker | Ankertext des Links |
| dofollow | 1 = dofollow, 0 = nofollow |
| spam_score | Spam-Score der verlinkenden Seite (0–100) |
| domain_from_rank / page_from_rank | Autorität der verlinkenden Domain / Seite, normalisiert 0–100 |
| is_new / is_lost / is_broken | Link‑Lebenszyklus‑Flags (1/0) |
| first_seen / last_seen / lost_date | Wann der Link erstmals gesehen, zuletzt gesehen und (falls zutreffend) verloren wurde |
| platform_type / country / tld_from | Plattform, Land und TLD der verlinkenden Seite |
| item_type | Link‑Form: anchor, image, redirect, … |
| page_from_status_code / url_to_status_code | HTTP-Status der verlinkenden Seite / der verlinkten Seite |
| attributes | Link‑rel‑Attribute, z. B. ["noopener","nofollow"] |
| kw_top3 / kw_top10 / kw_top100 | Keywords, für die die verlinkende Seite in den Top 3 / 10 / 100 rankt |
POST /api/v1/keyword-research
Gibt ein vollständiges Metrik-Set für ein Seed‑Keyword zurück – Suchvolumen, CPC, Wettbewerb, Schwierigkeit, Suchintention, 12‑Monats‑Volumen‑Trend, SERP‑Features und mehr – sowie eine sortierte Liste verwandter Keywords mit denselben Feldern. Synchron – antwortet sofort.
Dies sind die Metriken, die Keyword Research Tool werden angezeigt. Sobald Sie die Keywords ausgewählt haben, die Sie verfolgen möchten, Rank Tracker follows their positions daily — and /rank/keywords liest diese Positionen zurück, kostenlos.
429 QUOTA_EXCEEDED, daher ist es sicher, in einer Schleife aufzurufen. Aktuelle Abfragen werden aus dem Cache bedient (markiert "cached": true) ohne Kontingentkosten.
Request Body (JSON)
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| keyword | Zeichenkette | Ja | Seed‑Keyword, max. 200 Zeichen |
| location_code | Ganzzahl | Nein | Standortcode, Standard 2840 (Vereinigte Staaten) |
| language_code | Zeichenkette | Nein | Sprachcode, Standard en |
| limit | Ganzzahl | Nein | Maximale zurückgegebene verwandte Keywords, 1–100, Standard 10 |
Beispielanfrage
curl -X POST \
-H "Authorization: Bearer ss_live_xxxx" \
-H "Content-Type: application/json" \
-d '{"keyword":"seo audit tool","limit":5}' \
"https://signalsumo.com/api/v1/keyword-research"
Beispielantwort
{
"success": true,
"data": {
"keyword": "seo audit tool",
"location_code": 2840,
"language_code": "en",
"total_count": 80,
"overview": {
"search_volume": 2900,
"cpc": 19.07,
"competition": 0.11,
"competition_level": "LOW",
"difficulty": 77,
"intent": ["Commercial"],
"trend": [ { "y": 2026, "m": 5, "v": 2400 }, { "y": 2026, "m": 6, "v": 1600 } ],
"serp_features": ["organic"],
"growth": { "m": -33, "q": -16, "y": -64 },
"bid_low": 4.72,
"bid_high": 19.10,
"avg_backlinks": 5087,
"avg_ref_domains": 970,
"comp_domain_rank": 486,
"se_results": 41000000
},
"related_keywords": [
{
"keyword": "free seo audit tool",
"search_volume": 1900,
"cpc": 3.10,
"competition": 0.68,
"competition_level": "MEDIUM",
"difficulty": 54,
"intent": ["Commercial", "Transactional"],
"trend": [ { "y": 2026, "m": 6, "v": 1900 } ],
"serp_features": ["organic", "people_also_ask"],
"growth": { "m": 4, "q": -2, "y": 11 },
"bid_low": 1.20,
"bid_high": 4.90,
"avg_backlinks": 210,
"avg_ref_domains": 88,
"comp_domain_rank": 402,
"se_results": 12000000,
"related": ["website audit tool", "seo checker free"],
"match_bucket": "similar"
}
]
},
"meta": { "timestamp": "2026-06-26T10:00:00+00:00" }
}
Keyword Fields
Der overview (Seed‑Keyword) und jedes related_keywords Zeile teilt diese Felder. Jedes Feld kann null wenn die vorgelagerte Datenquelle nicht verfügbar ist.
| Feld | Beschreibung |
|---|---|
| search_volume | Durchschnittliche monatliche Suchanfragen |
| cpc | Durchschnittlicher Cost‑Per‑Click (USD) |
| competition | Bezahlte Konkurrenz, 0–1 |
| Wettbewerbsniveau | LOW / MEDIUM / HIGH |
| Schwierigkeit | Organische Ranking‑Schwierigkeit, 0–100 (null wenn noch nicht berechnet) |
| Absicht | Suchintention, z. B. ["Commercial"] |
| Trend | 12‑Monats‑Volumen‑Historie – { y, m, v } pro Monat |
| Wachstum | Volumenänderung %: m monatlich, q vierteljährlich, y jährlich |
| SERP‑Funktionen | SERP‑Feature‑Typen vorhanden, z. B. ["organic","people_also_ask"] |
| Gebot_unten / Gebot_oben | Gebotsbereich für Top‑Seite (USD) |
| Durchschn._Backlinks / Durchschn._Ref‑Domains | Durchschnittliche Backlinks / verweisende Domains der aktuell rankenden Seiten |
| Wettbewerber‑Domain‑Rang | Durchschnittliche Autorität (0–1000) der aktuell rankenden Seiten |
| SE‑Ergebnisse | Gesamtzahl konkurrierender Ergebnisse für das Schlüsselwort |
| verwandt | Bis zu 8 verwandte Unter‑Schlüsselwörter (nur verwandte Zeilen) |
| Übereinstimmungs‑Bucket | Beziehung zum Seed: similar, related, or question |
POST /api/v1/site-audit
Führt denselben Crawl wie die Website Audit Tool — broken links, redirect chains, missing titles and canonical problems, page by page.
job_id immediately.
Poll GET /api/v1/jobs/{job_id} für Ergebnisse. Typische Crawldauer: 1–5 Minuten.
Request Body (JSON)
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| URL | Zeichenkette | Ja | Vollständige zu crawlende URL, z. B. https://example.com |
| max_seiten | Ganzzahl | Nein | Maximale zu crawlende Seiten (Standard 100). Durch das Crawl-Limit Ihres Plans und Ihr verbleibendes monatliches Seitenbudget begrenzt. |
| Tiefe | Ganzzahl | Nein | Crawl-Tiefe, 1–5, Standard 3 |
Beispielanfrage
curl -X POST \
-H "Authorization: Bearer ss_live_xxxx" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","max_pages":50}' \
"https://signalsumo.com/api/v1/site-audit"
Antwort (202 Akzeptiert)
{
"success": true,
"job_id": "a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5",
"status": "queued",
"poll": "https://signalsumo.com/api/v1/jobs/a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5",
"meta": { "timestamp": "2026-06-26T10:00:00+00:00" }
}
GET /api/v1/jobs/{job_id}
Abfragen des Status eines asynchronen Jobs. Alle 10–15 Sekunden abfragen, bis status ist complete oder failed.
Statuswerte
| Status | Bedeutung |
|---|---|
| warteschlange | Job akzeptiert, noch nicht gestartet |
| läuft | Crawl läuft — prüfen progress (0–100) |
| abgeschlossen | Fertig — data Feld enthält Ergebnisse |
| fehlgeschlagen | Crawl fehlgeschlagen — error Feld hat den Grund |
Beispielanfrage
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/jobs/a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5"
Antwort — Laufend
{
"success": true,
"data": {
"job_id": "a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5",
"endpoint": "site-audit",
"status": "running",
"progress": 42,
"created_at": "2026-06-26 10:00:00",
"updated_at": "2026-06-26 10:01:30",
"completed_at": null
},
"meta": { "timestamp": "2026-06-26T10:01:30+00:00" }
}
Antwort — Vollständig
{
"success": true,
"data": {
"job_id": "a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5",
"endpoint": "site-audit",
"status": "complete",
"progress": 100,
"created_at": "2026-06-26 10:00:00",
"updated_at": "2026-06-26 10:03:18",
"completed_at": "2026-06-26 10:03:18",
"data": {
"audit_id": "AUDIT-A1B2C3-4567",
"domain": "https://example.com",
"pages_crawled": 47,
"total_score": 78,
"geo_score": 71,
"issues": { "critical": 3, "warning": 12, "total": 15 },
"report_url": "https://signalsumo.com/report?id=AUDIT-A1B2C3-4567"
}
},
"meta": { "timestamp": "2026-06-26T10:03:18+00:00" }
}
GET /api/v1/rank/keywords
Jedes Keyword, das Ihr Konto verfolgt, jeweils mit dem Markt und Gerät, in dem es gemessen wurde, sowie seiner letzten Position. Das ist die Datenbasis hinter dem Rank Tracker — no crawl is triggered and nothing is charged.
country, language und device are returned on every row on purpose. A position is meaningless without them — comparing a desktop US ranking against a mobile UK one produces a decline that never happened.
Abfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| project_id | Ganzzahl | Nein | Auf ein Projekt beschränken. Weglassen, um Keywords aus allen Projekten, die Sie besitzen, zurückzugeben. |
| limit | Ganzzahl | Nein | 1–500, default 100 |
Beispielanfrage
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/rank/keywords?limit=1"
Beispielantwort
{
"success": true,
"data": {
"keywords": [
{
"keyword_id": 4821,
"keyword": "seo audit tool",
"difficulty": 62,
"search_volume": 8100,
"cpc": 12.4,
"country": "US",
"language": "en",
"device": "desktop",
"status": "active",
"project_id": 17,
"project_domain": "example.com",
"project_name": "Example Site",
"last_checked": "2026-08-19",
"current_position": 8,
"previous_position": 11,
"position_change": 3,
"landing_page": "https://example.com/tools/audit",
"gsc_clicks": 143,
"gsc_impressions": 5210,
"gsc_ctr": 2.74,
"local_pack": false,
"featured_snippet": true,
"ai_overview": false
}
],
"count": 1
},
"meta": { "project_id": null, "limit": 1 }
}
position_change ist positiv, wenn das Keyword verschoben wurde aufwärts. Ein Keyword, das noch nie geprüft wurde, liefert null für jedes latest.* Feld statt 0 — position zero would read as "ranked first".
GET /api/v1/rank/history
Tägliche Positionshistorie für ein verfolgtes Keyword, mit der rangierenden URL und den SERP-Features bei jeder Prüfung. Enthält ein vorab berechnetes trend Zusammenfassung.
Abfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| keyword_id | Ganzzahl | Ja | Von /rank/keywords. Ein Keyword, das Sie nicht besitzen, liefert 404 NOT_FOUND. |
| Tage | Ganzzahl | Nein | 1–365, default 90 |
Beispielanfrage
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/rank/history?keyword_id=4821&days=30"
Beispielantwort
{
"success": true,
"data": {
"keyword": {
"id": 4821,
"keyword": "seo audit tool",
"project_id": 17,
"domain": "example.com",
"project": "Example Site"
},
"history": [
{
"check_date": "2026-08-19",
"position": 8,
"previous_position": 11,
"change": 3,
"landing_page": "https://example.com/tools/audit",
"gsc_clicks": 143,
"gsc_impressions": 5210,
"gsc_ctr": 2.74,
"gsc_average_position": 8.6,
"featured_snippet": true,
"ai_overview": false,
"people_also_ask": true,
"local_pack": false,
"images": false,
"videos": false,
"shopping": false,
"knowledge_graph": false,
"sitelinks": true
}
],
"trend": { "first": 14, "latest": 8, "best": 6, "worst": 15 }
},
"meta": { "days_requested": 30, "points": 1 }
}
Lesen trend
| Feld | Bedeutung |
|---|---|
| erste | Position am älteste Punkt im Fenster |
| neueste | Position beim letzten Check |
| beste | Niedrigste erreichte Nummer (beste Platzierung) |
| schlechteste | Höchste erreichte Nummer (schlechteste Platzierung) |
history ist nach dem neuesten zuerst sortiert. best und worst unranked Checks ignorieren, sodass sie null wenn das Schlüsselwort im Zeitraum nie gerankt wurde.
GET /api/v1/gsc/properties
Die mit Ihrem Konto verbundenen Google Search Console‑Properties, wie in Search Console Insights. Keine Parameter erforderlich.
This reads SignalSumo's synced copy — it does not call Google. last_synced_at zeigt Ihnen, wie aktuell dieser Text ist.
Beispielanfrage
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/gsc/properties"
Beispielantwort
{
"success": true,
"data": {
"properties": [
{
"property_id": 31,
"property_uri": "sc-domain:example.com",
"display_name": "example.com",
"status": "active",
"last_synced_at": "2026-08-20 04:15:02",
"last_sync_status": "ok",
"google_email": "[email protected]",
"is_sandbox": false
}
],
"count": 1
}
}
GET /api/v1/gsc/queries
Clicks, impressions, CTR and average position for a synced property, grouped by whichever dimension you ask for. Despite the name it is not limited to queries — set dim um dieselben Zahlen nach Seite, Land, Gerät oder Datum aufzuschlüsseln.
Abfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| property_id | Ganzzahl | Ja | Von /gsc/properties. Eine nicht Ihnen gehörende Property gibt zurück 404 NOT_FOUND. |
| dim | Zeichenkette | Nein | query (Standard), page, country, device, date, searchAppearance |
| from | Zeichenkette | Nein | YYYY-MM-DD, standardmäßig vor 28 Tagen |
| to | Zeichenkette | Nein | YYYY-MM-DD, standardmäßig heute |
| sort | Zeichenkette | Nein | clicks (Standard), impressions, ctr, position, key |
| dir | Zeichenkette | Nein | desc (Standard) oder asc |
| limit | Ganzzahl | Nein | 1–500, default 100 |
422 VALIDATION_ERROR, aber ein nicht erkanntes dim oder sort Der Wert fällt stillschweigend auf den Standard zurück, anstatt einen Fehler zu erzeugen. Prüfen Sie die dim zurückgespiegelt in data bevor Sie einer Aufschlüsselung vertrauen.
Beispielanfrage
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/gsc/queries?property_id=31&dim=query&limit=2"
Beispielantwort
{
"success": true,
"data": {
"property_id": 31,
"dim": "query",
"from": "2026-07-23",
"to": "2026-08-20",
"totals": {
"clicks": 4820,
"impressions": 216400,
"ctr": 2.23,
"position": 18.4
},
"rows": [
{ "key": "seo audit tool", "clicks": 143, "impressions": 5210, "ctr": 2.74, "position": 8.6 },
{ "key": "free seo checker", "clicks": 98, "impressions": 7740, "ctr": 1.27, "position": 14.2 }
],
"total_rows": 1842
},
"meta": { "sort": "clicks", "dir": "desc", "limit": 2 }
}
total_rows is the number of distinct keys in the period, not the number returned — use it to decide whether to raise limit. totals deckt immer den gesamten Zeitraum ab, unabhängig von limit.
GET /api/v1/ai-visibility/projects
Die Marken, die Sie über KI-Antwortmaschinen hinweg verfolgen, jeweils eine Zeile pro Projekt, mit dem aktuellen Sichtbarkeits-Score und seiner Entwicklung. Keine Parameter erforderlich. Angetrieben von der AI Visibility Checker.
Scores are collected by scheduled scans, so this endpoint never calls an AI provider — it returns what the last scan stored.
Beispielanfrage
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/ai-visibility/projects"
Beispielantwort
{
"success": true,
"data": {
"projects": [
{
"id": 9,
"domain": "example.com",
"brand_name": "Example",
"target_country": "US",
"target_language": "en",
"ai_engine": "all",
"tracking_frequency": "weekly",
"status": "active",
"visibility_score": 41.8,
"previous_visibility_score": 37.2,
"score_change": 4.6,
"created_at": "2026-05-02 11:20:44",
"updated_at": "2026-08-18 06:02:11"
}
],
"count": 1
}
}
score_change ist null until a project has been scanned at least twice — a first scan has nothing to compare against, and reporting 0 würde als „keine Bewegung“ gelesen werden.
GET /api/v1/ai-visibility/share-of-voice
Wie oft nennen KI-Assistenten Ihre Marke im Vergleich zu den gleichzeitig verfolgten Wettbewerbern, plus die vollständige Metrikaufteilung des letzten Scans.
Abfrageparameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| project_id | Ganzzahl | Ja | Von /ai-visibility/projects. Ein Projekt, das Sie nicht besitzen, liefert 404 NOT_FOUND. |
Beispielanfrage
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/ai-visibility/share-of-voice?project_id=9"
Beispielantwort
{
"success": true,
"data": {
"project": {
"id": 9,
"domain": "example.com",
"brand_name": "Example",
"target_country": "US",
"ai_engine": "all",
"visibility_score": 41.8,
"previous_visibility_score": 37.2
},
"latest_snapshot": {
"geo_score": 41.8,
"mention_rate": 38.0,
"avg_position": 2.4,
"sentiment_avg": 0.62,
"citation_rate": 21.5,
"competition_score": 58.3,
"prompts_evaluated": 50,
"snapshot_date": "2026-08-18"
},
"share_of_voice": {
"brand_mentions": 19,
"competitor_mentions": 74,
"total_mentions": 93,
"brand_share_pct": 20.43
},
"competitors": [
{
"competitor_name": "Competitor One",
"competitor_domain": "competitor1.com",
"mention_count": 31,
"visibility_score": 52.1,
"avg_position": 1.9,
"updated_at": "2026-08-18 04:41:07"
}
]
}
}
Zwei verschiedene Prozentsätze
Diese sind leicht zu verwechseln und beantworten unterschiedliche Fragen:
| Feld | Frage, die sie beantwortet |
|---|---|
mention_rate | Of the prompts we tested, what share mentioned you at all? — coverage. |
brand_share_pct | Of every brand mention across you and your tracked competitors, what share was yours? — competitive position. |
latest_snapshot ist null bevor der erste Scan eines Projekts abgeschlossen ist. competitors gibt höchstens 20 zurück, sortiert nach Erwähnungsanzahl. brand_share_pct ist null when no mentions have been recorded on either side — a share of nothing is not zero percent.
GET /api/v1/keyword-research/locations
Jeder Markt POST /keyword-research akzeptiert, damit Sie ein location_code statt zu raten und einen 422. Keine Parameter erforderlich.
Beispielanfrage
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/keyword-research/locations"
Beispielantwort
{
"success": true,
"data": {
"locations": [
{ "location_code": 2840, "location_name": "United States", "country_iso": "US", "language_code": "en" },
{ "location_code": 2826, "location_name": "United Kingdom", "country_iso": "GB", "language_code": "en" }
],
"count": 94,
"note": "These are the markets covered by the keyword database. Pass location_code to POST /keyword-research."
}
}
Changelog
| Version | Datum | Änderungen |
|---|---|---|
| v1.2 | Aug 2026 | Die sieben bereits live geschalteten Nur-Lese-Endpunkte dokumentiert: /rank/keywords, /rank/history, /gsc/properties, /gsc/queries, /ai-visibility/projects, /ai-visibility/share-of-voice und /keyword-research/locations. No behaviour changed — these were callable before, just undocumented. Added MCP and LLM client guidance. |
| v1.1 | Jul 2026 | Keyword‑ und Backlink‑Antworten auf vollständige Metrik‑Sätze erweitert (Schwierigkeit, Intent, Trend, SERP‑Features, angereicherte Backlink‑Felder, Übersicht & Insights). Site‑Audit‑Ergebnisse hinzufügen geo_score und Issue‑Counts. Hinzugefügte Standort‑/Sprachen‑Referenz und Abrechnungsdetails. |
| v1.0 | Jun 2026 | Erstveröffentlichung — Nutzung, Backlinks, Keyword-Recherche, Site-Audit, Jobs |
Fragen? E‑Mail [email protected]