API‑referentie
Integreer SignalSumo's SEO‑data direct in je eigen tools, dashboards en workflows.
Snelstart
Drie stappen naar je eerste respons.
1. Maak een API‑sleutel
Op een Pro‑ of Agency‑plan, genereer een sleutel op API-sleutels en kopieer deze — hij wordt slechts één keer getoond.
2. Verifieer de verbinding
curl -H "Authorization: Bearer ss_live_your_key_here" \
"https://signalsumo.com/api/v1/usage"
A 200 reactie met uw plan en resterende oproepen betekent dat u verbonden bent.
3. Doe je eerste dataverzoek
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 en retourneert dezelfde JSON‑envelop — bekijk de onderstaande eindpunten voor parameters en responsvelden.
Overzicht
Alle API‑endpoints worden geserveerd onder:
https://signalsumo.com/api/v1/
Verzoeken en antwoorden gebruiken JSON. Elke respons volgt dezelfde envelop:
{
"success": true,
"data": { ... },
"meta": { "timestamp": "2026-06-26T10:00:00+00:00" }
}
Fouten volgen dezelfde structuur met success: false en een error object in plaats van data.
Endpoints vallen in twee groepen, en het verschil is wat ze je kosten:
- Onderzoeks‑endpoints —
/backlinks,/keyword-research,/site-audit— fetch fresh data from outside SignalSumo. They draw feature quota or credits. See Abonnementen & Facturering. - Jouw‑data‑endpoints — everything under
/rank,/gscen/ai-visibility— read what your account has already collected. They are plain database reads: they cost geen credits en geen functiekwota, en ze worden nooit zelf geweigerd vanwege een overschrijding van de maandelijkse limiet.
Authenticatie
Geef uw API‑sleutel door in de Authorization header bij elk verzoek:
Authorization: Bearer ss_live_your_key_here
Alternatief kun je het als query‑parameter doorgeven (niet aanbevolen voor productie):
GET /api/v1/usage?api_key=ss_live_your_key_here
De Authorization: Bearer header is de aanbevolen methode. De API stuurt ook permissieve CORS-headers, zodat deze direct vanuit browser‑gebaseerde tools kan worden aangeroepen. Houd geheime sleutels server‑side in productie.
Abonnementen & Facturering
API‑toegang is beschikbaar op de Pro en Agency plannen. Twee onafhankelijke meters bepalen het gebruik — een oproep wordt alleen uitgevoerd wanneer beide toestaan.
1. Maandelijkse API‑oproepen
Elke aanvraag (inclusief cache‑hits en fouten die een endpoint bereiken) telt als één API‑oproep.
| Plan | Maandelijkse API‑oproepen | Reset |
|---|---|---|
| Pro | 20 | 1e van elke maand |
| Agency | 100 | 1e van elke maand |
Overschrijding hiervan levert HTTP 429 (RATE_LIMITED) met een resets_at veld in meta. Controleer uw live limiet en gebruik op elk moment via GET /usage.
2. Per‑functie‑kwota & credits
Buiten de oproepmeter halen de data‑endpoints elk uit hun eigen maandelijkse functiekwota (dezelfde toelage die je ingelogde dashboard gebruikt). Hoe elk zich gedraagt wanneer die kwota op is:
| Endpoint | Wanneer functiekwota is uitgeput |
|---|---|
| /keyword-research | Retourneert 429 QUOTA_EXCEEDED. Nooit verbruikt credits — veilig om te loopen. |
| /backlinks | Valt terug op 1 credit per aanvraag. Een diep query (page > 1 of limit > 100) always costs 1 credit. No credits → 402 PAYMENT_REQUIRED. |
| /site-audit | Retourneert 429 QUOTA_EXCEEDED wanneer het maandelijkse crawl‑aantal of het rollende paginabudget is opgebruikt. |
"cached": true in meta, en trekt geen functiequota of credits (het telt nog steeds als één API‑aanroep).
3. Aanvragen per minuut
Los van de maandelijkse meters bepaalt je plan hoeveel aanvragen per minuut je kunt doen. Dit beperkt een uit de hand gelopen lus of een gelekte sleutel tot iets herstelbaars — een maandelijkse toelage zegt niets over het volledig uitgeven ervan binnen een uur.
| Plan | Aanvragen per minuut |
|---|---|
| Pro | 20 |
| Agency | 60 |
Elk eindpunt telt apart, zodat het benutten van uw backlink‑toewijzing u nooit uitsluit van zoekwoordonderzoek. Overschrijding hiervan levert 429 met retry_after (seconden) en limit in meta. Geweigerde verzoeken worden niet geteld, dus wachten retry_after maakt het altijd leeg.
409 ALREADY_RUNNING; probeer het over een paar seconden opnieuw en het zal een cache‑hit zijn.
Locaties & Talen
/keyword-research accepteert een location_code en language_code om resultaten te lokaliseren. Beide zijn optioneel — de standaard is de Verenigde Staten (2840) en Engels (en).
location_code
Een numerieke marktcode. Veelvoorkomende waarden:
| Code | Markt | Code | Markt |
|---|---|---|---|
| 2840 | Verenigde Staten | 2276 | Duitsland |
| 2826 | Verenigd Koninkrijk | 2250 | Frankrijk |
| 2124 | Canada | 2724 | Spanje |
| 2036 | Australië | 2380 | Italië |
| 2356 | India | 2528 | Nederland |
| 2392 | Japan | 2076 | Brazilië |
Meer dan 90 markten worden ondersteund. Een niet-herkende code retourneert 422 UNSUPPORTED_LOCATION in plaats van terug te vallen op de Verenigde Staten — gefactureerd worden voor Amerikaanse data die u niet heeft aangevraagd is erger dan te horen dat de code fout is. Bel GET /api/v1/keyword-research/locations voor de volledige lijst.
language_code
Een tweetalige taalcodes. Ondersteunde waarden:
| Code | Taal | Code | Taal |
|---|---|---|---|
| en | Engels | pt | Portugees |
| es | Spaans | nl | Nederlands |
| fr | Frans | ru | Russisch |
| de | Duits | ja | Japans |
| it | Italiaans | zh | Chinees |
language_code valt terug naar Engels in plaats van een fout terug te geven — controleer de code dubbel als resultaten onverwacht Engels lijken.
Foutcodes
| HTTP | code | Betekenis |
|---|---|---|
| 400 | BAD_REQUEST | Ongeldige request-syntaxis |
| 401 | UNAUTHORIZED | Ontbrekende of ongeldige API-sleutel |
| 403 | FORBIDDEN | API-toegang niet beschikbaar op uw abonnement (Pro of Agency vereist) |
| 404 | NOT_FOUND | Endpoint of resource niet gevonden |
| 402 | PAYMENT_REQUIRED | Functiequota uitgeput en geen credits meer (backlinks) |
| 422 | VALIDATION_ERROR | Vereiste parameter ontbreekt of heeft een ongeldige waarde |
| 409 | ALREADY_RUNNING | Hetzelfde verzoek wordt al opgehaald voor uw account — probeer het over een ogenblik opnieuw; het zal een cache-hit zijn. Er is niets in rekening gebracht |
| 429 | RATE_LIMITED / QUOTA_EXCEEDED | Maandelijks bel‑limiet, per‑minuut pacing of functie‑quotum‑overschrijding — zie resets_at of retry_after in meta |
| 502 | UPSTREAM_ERROR | Geen gegevens ontvangen van de upstream-gegevensprovider |
| 500 | SERVER_ERROR | Interne fout — veilig om opnieuw te proberen |
MCP & LLM‑clients
Als uw doel is om een assistent zoals Claude deze gegevens conversatie‑matig te laten lezen, hoeft u geen client te schrijven. SignalSumo spreekt de Model Context Protocol, die de onderstaande endpoints beschikbaar maakt als tools die een LLM direct kan aanroepen.
| Route | Auth | Beste voor |
|---|---|---|
| Gehoste connector | OAuth 2.1 — no key to copy | Claude en andere MCP‑clients. Niets te installeren, altijd actueel. |
@signalsumo/mcp op npm | API-sleutel in de clientconfiguratie | Lokale installaties, zelf‑gehoste omgevingen, of draaien tegen uw eigen omgeving. |
| Deze REST‑API | Authorization: Bearer | Uw eigen scripts, dashboards en back‑endintegraties. |
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
Geeft uw API‑quota‑gebruik weer voor de huidige kalendermaand.
Voorbeeldverzoek
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/usage"
Voorbeeldrespons
{
"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
Retourneert een domein‑backlinkprofiel: een samenvatting overview, distributie insights, en een verrijkte lijst van individuele backlinks. Resultaten worden gecached en gedeeld met uw dashboard (Pro: 2 dagen, Agency: 7 dagen); een cache‑hit wordt gemarkeerd "cached": true en kost geen functiequota.
Dit is dezelfde data die de 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 of limit > 100 — kost altijd 1 credit. Zie Abonnementen & Facturering.
Queryparameters
| Parameter | Type | Verplicht | Beschrijving |
|---|---|---|---|
| domein | string | Ja | Root‑domein, bijv. example.com (een volledige URL wordt ook geaccepteerd en genormaliseerd) |
| pagina | integer | Nee | Paginanummer, standaard 1 |
| limiet | integer | Nee | Resultaten per pagina, 1–200, standaard 100 |
Voorbeeldverzoek
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/backlinks?domain=example.com&limit=2"
Voorbeeldrespons
{
"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 }
}
Backlinkvelden
| Veld | Beschrijving |
|---|---|
| domain_from / url_from | De verwijzende site en de exacte pagina waarop de link staat |
| url_to | De pagina op uw domein waarnaar gelinkt wordt |
| anchor | Ankertekst van de link |
| dofollow | 1 = dofollow, 0 = nofollow |
| spam_score | Spamscore van de verwijzende pagina (0–100) |
| domain_from_rank / page_from_rank | Autoriteit van het verwijzende domein / pagina, genormaliseerd 0–100 |
| is_new / is_lost / is_broken | Link‑levenscyclusvlaggen (1/0) |
| first_seen / last_seen / lost_date | Wanneer de link voor het eerst werd gezien, laatst gezien, en (indien van toepassing) verloren |
| platform_type / country / tld_from | Platform, land en TLD van de verwijzende site |
| item_type | Linkvorm: anchor, image, redirect, … |
| page_from_status_code / url_to_status_code | HTTP-status van de verwijzende pagina / de gelinkte pagina |
| attributen | Link rel‑attributen, bijv. ["noopener","nofollow"] |
| kw_top3 / kw_top10 / kw_top100 | Trefwoorden waarop de verwijzende pagina rankt in de top 3 / 10 / 100 |
POST /api/v1/keyword-research
Retourneert een volledige metrische set voor een seed‑trefwoord — zoekvolume, CPC, concurrentie, moeilijkheidsgraad, zoekintentie, een 12‑maanden volume‑trend, SERP‑features en meer — plus een gerangschikte lijst van gerelateerde trefwoorden met dezelfde velden. Synchronous — reageert onmiddellijk.
Dit zijn de metrics die Keyword Research Tool worden weergegeven. Zodra u de trefwoorden hebt gekozen die de moeite waard zijn, de Rank Tracker follows their positions daily — and /rank/keywords leest die posities terug, gratis.
429 QUOTA_EXCEEDED, dus het is veilig om in een lus aan te roepen. Recente opzoekingen worden uit de cache geserveerd (gemarkeerd "cached": true) zonder quota‑kosten.
Request Body (JSON)
| Veld | Type | Verplicht | Beschrijving |
|---|---|---|---|
| zoekwoord | string | Ja | Startzoekwoord, max 200 tekens |
| location_code | integer | Nee | Locatiecode, standaard 2840 (Verenigde Staten) |
| language_code | string | Nee | Taalcode, standaard en |
| limiet | integer | Nee | Maximaal geretourneerde gerelateerde zoekwoorden, 1–100, standaard 10 |
Voorbeeldverzoek
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"
Voorbeeldrespons
{
"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" }
}
Zoekwoordvelden
De overview (seed‑keyword) en elke related_keywords rij deelt deze velden. Elk veld kan zijn null wanneer de upstream‑data niet beschikbaar is.
| Veld | Beschrijving |
|---|---|
| search_volume | Gemiddeld aantal maandelijkse zoekopdrachten |
| cpc | Gemiddelde kosten per klik (USD) |
| concurrentie | Betaalde concurrentie, 0–1 |
| competition_level | LOW / MEDIUM / HIGH |
| moeilijkheidsgraad | Organische rankingmoeilijkheid, 0–100 (null als nog niet berekend) |
| intentie | Zoekintentie, bijv. ["Commercial"] |
| trend | 12‑maanden volumegeschiedenis — { y, m, v } per maand |
| groei | Volume verandering %: m maandelijks, q kwartaal, y jaarlijks |
| serp_features | SERP‑functietypen aanwezig, bijv. ["organic","people_also_ask"] |
| bod_laag / bod_hoog | Bodbereik bovenaan pagina (USD) |
| gemidd_backlinks / gem_ref_domeinen | Gemiddeld aantal backlinks / verwijzende domeinen van de momenteel rankende pagina's |
| comp_domain_rank | Gemiddelde autoriteit (0–1000) van de momenteel rankende pagina's |
| se_results | Totaal concurrerende resultaten voor het zoekwoord |
| gerelateerd | Tot 8 gerelateerde sub-zoekwoorden (alleen gerelateerde rijen) |
| match_bucket | Relatie tot de seed: similar, related, of question |
POST /api/v1/site-audit
Voert dezelfde crawl uit als de 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} voor resultaten. Typische crawltijd: 1–5 minuten.
Request Body (JSON)
| Veld | Type | Verplicht | Beschrijving |
|---|---|---|---|
| url | string | Ja | Volledige URL om te crawlen, bijv. https://example.com |
| max_pages | integer | Nee | Maximaal te crawlen pagina's (standaard 100). Beperkt door de per-crawl limiet van uw abonnement en uw resterende maandelijkse pagina‑budget. |
| diepte | integer | Nee | Crawl‑diepte, 1–5, standaard 3 |
Voorbeeldverzoek
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"
Response (202 Accepted)
{
"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}
Poll de status van een async‑taak. Poll elke 10–15 seconden totdat status is complete of failed.
Statuswaarden
| Status | Betekenis |
|---|---|
| in wachtrij | Taak geaccepteerd, nog niet gestart |
| actief | Crawl bezig — controleer progress (0–100) |
| voltooid | Voltooid — data veld bevat resultaten |
| mislukt | Crawl mislukt — error veld heeft de reden |
Voorbeeldverzoek
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/jobs/a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5"
Reactie — Bezig
{
"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" }
}
Reactie — Voltooid
{
"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
Elke zoekterm die uw account volgt, elk met de markt en het apparaat waarop gemeten is en de meest recente positie. Dit is de data achter de Rank Tracker — no crawl is triggered and nothing is charged.
country, language en 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.
Queryparameters
| Parameter | Type | Verplicht | Beschrijving |
|---|---|---|---|
| project_id | integer | Nee | Beperk tot één project. Laat weg om zoekwoorden uit alle projecten die u bezit te retourneren. |
| limiet | integer | Nee | 1–500, default 100 |
Voorbeeldverzoek
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/rank/keywords?limit=1"
Voorbeeldrespons
{
"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 is positief wanneer het zoekwoord is verplaatst omhoog. Een zoekwoord dat nog nooit is gecontroleerd, geeft null voor elke latest.* veld in plaats van 0 — position zero would read as "ranked first".
GET /api/v1/rank/history
Dagelijkse positiegeschiedenis voor één gevolgde zoekterm, met de gerangschikte URL en de SERP‑features die bij elke controle aanwezig waren. Inclusief een vooraf berekende trend samenvatting.
Queryparameters
| Parameter | Type | Verplicht | Beschrijving |
|---|---|---|---|
| keyword_id | integer | Ja | Van /rank/keywords. Een zoekwoord dat je niet bezit, geeft 404 NOT_FOUND. |
| dagen | integer | Nee | 1–365, default 90 |
Voorbeeldverzoek
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/rank/history?keyword_id=4821&days=30"
Voorbeeldrespons
{
"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 }
}
Lezen trend
| Veld | Betekenis |
|---|---|
| eerste | Positie op de oudste punt in het venster |
| nieuwste | Positie bij de meest recente controle |
| beste | Laagste nummer bereikt (beste ranking) |
| slechtste | Hoogste nummer bereikt (slechtste ranking) |
history is gesorteerd op nieuwste eerst. best en worst negeer niet-gerankte controles, zodat ze null wanneer het zoekwoord nooit gerangschikt was in het venster.
GET /api/v1/gsc/properties
De Google Search Console-eigenschappen die aan uw account zijn gekoppeld, zoals weergegeven in Search Console Insights. Neemt geen parameters.
This reads SignalSumo's synced copy — it does not call Google. last_synced_at vertelt je hoe actueel die kopie is.
Voorbeeldverzoek
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/gsc/properties"
Voorbeeldrespons
{
"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 om dezelfde cijfers op te splitsen per pagina, land, apparaat of datum.
Queryparameters
| Parameter | Type | Verplicht | Beschrijving |
|---|---|---|---|
| property_id | integer | Ja | Van /gsc/properties. Een eigenschap die u niet bezit, retourneert 404 NOT_FOUND. |
| dim | string | Nee | query (standaard), page, country, device, date, searchAppearance |
| from | string | Nee | YYYY-MM-DD, standaard 28 dagen geleden |
| to | string | Nee | YYYY-MM-DD, standaard vandaag |
| sort | string | Nee | clicks (standaard), impressions, ctr, position, key |
| dir | string | Nee | desc (standaard) of asc |
| limiet | integer | Nee | 1–500, default 100 |
422 VALIDATION_ERROR, maar een niet‑herkende dim of sort waarde valt stilzwijgend terug op de standaard in plaats van een fout te geven. Controleer de dim teruggekaatst in data voordat u een uitsplitsing vertrouwt.
Voorbeeldverzoek
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/gsc/queries?property_id=31&dim=query&limit=2"
Voorbeeldrespons
{
"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 dekt altijd de volledige periode, ongeacht limit.
GET /api/v1/ai-visibility/projects
De merken die u volgt over AI-antwoordmachines, één rij per project, met de huidige zichtbaarheidsscore en de beweging ervan. Neemt geen parameters. Aangedreven door de AI Visibility Checker.
Scores are collected by scheduled scans, so this endpoint never calls an AI provider — it returns what the last scan stored.
Voorbeeldverzoek
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/ai-visibility/projects"
Voorbeeldrespons
{
"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 is null until a project has been scanned at least twice — a first scan has nothing to compare against, and reporting 0 zou lezen als "geen beweging".
GET /api/v1/ai-visibility/share-of-voice
Hoe vaak AI-assistenten uw merk noemen versus de concurrenten die naast uw merk worden gevolgd, plus de volledige metrische uitsplitsing van de meest recente scan.
Queryparameters
| Parameter | Type | Verplicht | Beschrijving |
|---|---|---|---|
| project_id | integer | Ja | Van /ai-visibility/projects. Een project dat je niet bezit, geeft 404 NOT_FOUND. |
Voorbeeldverzoek
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/ai-visibility/share-of-voice?project_id=9"
Voorbeeldrespons
{
"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"
}
]
}
}
Twee verschillende percentages
Deze zijn gemakkelijk te verwarren, en ze beantwoorden verschillende vragen:
| Veld | Vraag die het beantwoordt |
|---|---|
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 is null voordat de eerste scan van een project voltooid is. competitors retourneert maximaal 20, gesorteerd op vermeldingsteller. brand_share_pct is null when no mentions have been recorded on either side — a share of nothing is not zero percent.
GET /api/v1/keyword-research/locations
Elke markt POST /keyword-research accepteert, zodat u een kunt ontdekken location_code in plaats van er één te raden en een 422. Neemt geen parameters.
Voorbeeldverzoek
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/keyword-research/locations"
Voorbeeldrespons
{
"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
| Versie | Datum | Wijzigingen |
|---|---|---|
| v1.2 | aug 2026 | Documenteerde de zeven alleen‑lezen eindpunten die al live waren: /rank/keywords, /rank/history, /gsc/properties, /gsc/queries, /ai-visibility/projects, /ai-visibility/share-of-voice en /keyword-research/locations. No behaviour changed — these were callable before, just undocumented. Added MCP and LLM client guidance. |
| v1.1 | jul 2026 | Keyword‑ en backlink‑reacties uitgebreid naar volledige metrische sets (moeilijkheid, intentie, trend, SERP‑functies, verrijkte backlink‑velden, overzicht & inzichten). Site‑auditresultaten toevoegen geo_score en probleemtelling. Toegevoegde locatie-/taalreferentie en factureringsdetails. |
| v1.0 | jun 2026 | Eerste release — gebruik, backlinks, zoekwoordenonderzoek, site-audit, taken |
Vragen? E‑mail [email protected]