Référence API
Intégrez les données SEO de SignalSumo directement dans vos propres outils, tableaux de bord et flux de travail.
Démarrage rapide
Trois étapes pour votre première réponse.
1. Créez une clé API
Sur une offre Pro ou Agency, générez une clé sur Clés API et copiez‑la — elle n’est affichée qu’une fois.
2. Vérifiez la connexion
curl -H "Authorization: Bearer ss_live_your_key_here" \
"https://signalsumo.com/api/v1/usage"
A 200 réponse avec votre forfait et les appels restants signifie que vous êtes connecté.
3. Effectuez votre premier appel de données
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 en-tête et renvoie le même enveloppe JSON — parcourez les points d'accès ci-dessous pour les paramètres et les champs de réponse.
Vue d'ensemble
Tous les points de terminaison API sont accessibles sous :
https://signalsumo.com/api/v1/
Les requêtes et réponses utilisent JSON. Chaque réponse suit la même enveloppe :
{
"success": true,
"data": { ... },
"meta": { "timestamp": "2026-06-26T10:00:00+00:00" }
}
Les erreurs suivent la même structure avec success: false et un error objet au lieu de data.
Les points de terminaison se répartissent en deux groupes, et la différence réside dans leur coût :
- Points d'accès de recherche —
/backlinks,/keyword-research,/site-audit— fetch fresh data from outside SignalSumo. They draw feature quota or credits. See Offres & Facturation. - Points d'accès de vos données — everything under
/rank,/gscet/ai-visibility— read what your account has already collected. They are plain database reads: they cost pas de crédits et pas de quota de fonctionnalité, et ils ne sont jamais refusés eux‑mêmes pour dépassement du plafond mensuel.
Authentification
Passez votre clé API dans le Authorization en-tête sur chaque requête :
Authorization: Bearer ss_live_your_key_here
Vous pouvez également le transmettre comme paramètre de requête (non recommandé en production) :
GET /api/v1/usage?api_key=ss_live_your_key_here
Le Authorization: Bearer l'en-tête est la méthode recommandée. L'API envoie également des en-têtes CORS permissifs, de sorte qu'elle peut être appelée directement depuis des outils basés sur le navigateur. Conservez les clés secrètes côté serveur en production.
Offres & Facturation
L'accès API est disponible sur le Pro et Agence plans. Deux compteurs indépendants régissent l'utilisation — un appel n'est servi que lorsque les deux l'autoriser.
1. Appels API mensuels
Chaque requête (y compris les hits de cache et les erreurs qui atteignent un point d'accès) compte comme un appel API.
| Plan | Appels API mensuels | Réinitialisations |
|---|---|---|
| Pro | 20 | 1er de chaque mois |
| Agence | 100 | 1er de chaque mois |
Dépasser cela renvoie HTTP 429 (RATE_LIMITED) avec un resets_at champ dans meta. Vérifiez votre limite en direct et votre utilisation à tout moment via GET /usage.
2. Quota par fonctionnalité & crédits
Au‑delà du compteur d'appels, les points d'accès de données puisent chacun dans leur propre quota mensuel de fonctionnalité (le même plafond que votre tableau de bord connecté utilise). Voici le comportement lorsqu'il est épuisé :
| Point d'accès | Lorsque le quota de fonctionnalité est épuisé |
|---|---|
| /keyword-research | Renvoie 429 QUOTA_EXCEEDED. Jamais consomme des crédits — sûr pour les boucles. |
| /backlinks | Reculer vers 1 crédit par requête. Un profond requête (page > 1 ou limit > 100) always costs 1 credit. No credits → 402 PAYMENT_REQUIRED. |
| /site-audit | Renvoie 429 QUOTA_EXCEEDED lorsque le nombre mensuel d’explorations ou le budget de pages roulant est épuisé. |
"cached": true dans meta, et ne consomme aucun quota de fonctionnalité ou crédit (cela compte toujours comme un appel API).
3. Requêtes par minute
Séparément des compteurs mensuels, votre plan définit le nombre de requêtes par minute que vous pouvez effectuer. Cela limite une boucle incontrôlée ou une clé fuyante à quelque chose de récupérable — un plafond mensuel ne dit rien sur la dépense totale en une heure.
| Plan | Requêtes par minute |
|---|---|
| Pro | 20 |
| Agence | 60 |
Chaque point d’accès compte séparément, ainsi exploiter votre quota de backlinks ne vous bloque jamais pour la recherche de mots‑clés. Le dépasser renvoie 429 avec retry_after (secondes) et limit dans meta. Les requêtes refusées ne sont pas comptabilisées, donc attendre retry_after efface toujours cela.
409 ALREADY_RUNNING; réessayez dans quelques secondes et ce sera un cache hit.
Emplacements & Langues
/keyword-research accepte un location_code et language_code pour localiser les résultats. Les deux sont facultatifs — les paramètres par défaut sont les États‑Unis (2840) et anglais (en).
location_code
Un code de marché numérique. Valeurs courantes :
| Code | Marché | Code | Marché |
|---|---|---|---|
| 2840 | États-Unis | 2276 | Allemagne |
| 2826 | Royaume-Uni | 2250 | France |
| 2124 | Canada | 2724 | Espagne |
| 2036 | Australie | 2380 | Italie |
| 2356 | Inde | 2528 | Pays-Bas |
| 2392 | Japon | 2076 | Brésil |
Plus de 90 marchés sont pris en charge. Un code non reconnu renvoie 422 UNSUPPORTED_LOCATION plutôt que de revenir aux États‑Unis — être facturé pour des données américaines que vous n'avez pas demandées est pire que d'être informé que le code est erroné. Appelez GET /api/v1/keyword-research/locations pour la liste complète.
language_code
Un code de langue à deux lettres. Valeurs prises en charge:
| Code | Langue | Code | Langue |
|---|---|---|---|
| en | Anglais | pt | Portugais |
| es | Espagnol | nl | Néerlandais |
| fr | Français | ru | Russe |
| de | Allemand | ja | Japonais |
| it | Italien | zh | Chinois |
language_code revenir à Anglais plutôt que de renvoyer une erreur — vérifiez donc le code si les résultats semblent inattenduement en anglais.
Codes d’erreur
| HTTP | code | Signification |
|---|---|---|
| 400 | BAD_REQUEST | Syntaxe de requête malformée |
| 401 | UNAUTHORIZED | Clé API manquante ou invalide |
| 403 | INTERDIT | Accès API non disponible sur votre forfait (Pro ou Agency requis) |
| 404 | NON_TROUVÉ | Point de terminaison ou ressource non trouvé |
| 402 | PAIEMENT_REQUIS | Quota de fonctionnalité épuisé et aucun crédit restant (backlinks) |
| 422 | ERREUR_DE_VALIDATION | Paramètre requis manquant ou valeur invalide |
| 409 | DÉJÀ_EN_COURS | La même requête est déjà en cours de récupération pour votre compte — réessayez rapidement et ce sera un cache hit. Aucun frais n'a été facturé |
| 429 | LIMITATION_DE_TAUX / QUOTA_EXCÉDÉ | Limite d’appels mensuelle, cadence par minute ou quota de fonctionnalité atteint — voir resets_at ou retry_after dans meta |
| 502 | ERREUR_EN_AMONT | Aucune donnée renvoyée par le fournisseur de données en amont |
| 500 | ERREUR_SERVEUR | Erreur interne — sécuritaire à réessayer |
MCP & Clients LLM
Si votre objectif est de permettre à un assistant comme Claude de lire ces données de façon conversationnelle, vous n'avez pas besoin d'écrire un client. SignalSumo parle le Protocole de contexte de modèle, qui expose les points de terminaison ci-dessous comme des outils qu'un LLM peut appeler directement.
| Route | Authentification | Idéal pour |
|---|---|---|
| Connecteur hébergé | OAuth 2.1 — no key to copy | Claude et autres clients MCP. Aucun besoin d'installation, toujours à jour. |
@signalsumo/mcp sur npm | Clé API dans la configuration du client | Installations locales, configurations auto-hébergées ou exécution sur votre propre environnement. |
| Cette API REST | Authorization: Bearer | Vos propres scripts, tableaux de bord et intégrations back‑end. |
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
Renvoie votre utilisation du quota API pour le mois civil en cours.
Exemple de requête
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/usage"
Exemple de réponse
{
"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
Renvoie le profil de backlinks d'un domaine : un résumé overview, distribution insights, et une liste enrichie d'individus backlinks. Les résultats sont mis en cache et partagés avec votre tableau de bord (Pro : 2 jours, Agence : 7 jours) ; un hit de cache est marqué "cached": true et ne consomme aucun quota de fonctionnalité.
Ceci est les mêmes données que le 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 ou limit > 100 — coûte toujours 1 crédit. Voir Offres & Facturation.
Paramètres de requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| domain | chaîne | Oui | Domaine racine, par ex. example.com (une URL complète est également acceptée et normalisée) |
| page | entier | Non | Numéro de page, par défaut 1 |
| limite | entier | Non | Résultats par page, 1–200, par défaut 100 |
Exemple de requête
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/backlinks?domain=example.com&limit=2"
Exemple de réponse
{
"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 }
}
Champs de backlink
| Champ | Description |
|---|---|
| domain_from / url_from | Le site de liaison et la page exacte où se trouve le lien |
| url_to | La page de votre domaine vers laquelle le lien pointe |
| ancre | Texte d’ancre du lien |
| dofollow | 1 = dofollow, 0 = nofollow |
| spam_score | Score de spam de la page de liaison (0–100) |
| domain_from_rank / page_from_rank | Autorité du domaine / page de liaison, normalisée 0–100 |
| is_new / is_lost / is_broken | Indicateurs du cycle de vie du lien (1/0) |
| first_seen / last_seen / lost_date | Quand le lien a été vu pour la première fois, vu pour la dernière fois et (le cas échéant) perdu |
| platform_type / country / tld_from | Plateforme, pays et TLD du site de liaison |
| item_type | Forme du lien : anchor, image, redirect, … |
| page_from_status_code / url_to_status_code | Statut HTTP de la page de liaison / de la page liée |
| attributs | Attributs rel du lien, par ex. ["noopener","nofollow"] |
| kw_top3 / kw_top10 / kw_top100 | Mots‑clés pour lesquels la page de liaison se classe dans le top 3 / 10 / 100 |
POST /api/v1/keyword-research
Renvoie un ensemble complet de métriques pour un mot‑clé de base — volume de recherche, CPC, concurrence, difficulté, intention de recherche, tendance du volume sur 12 mois, fonctionnalités SERP et plus — ainsi qu’une liste classée de mots‑clés associés contenant les mêmes champs. Synchronous — répond immédiatement.
Voici les métriques que Keyword Research Tool affiche. Une fois que vous avez sélectionné les mots‑clés à poursuivre, le Rank Tracker follows their positions daily — and /rank/keywords lit ces positions en retour, gratuitement.
429 QUOTA_EXCEEDED, donc il est sûr d'appeler en boucle. Les recherches récentes sont servies depuis le cache (marquées "cached": true) sans coût de quota.
Corps de la requête (JSON)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| mot‑clé | chaîne | Oui | Mot‑clé de départ, max 200 caractères |
| location_code | entier | Non | Code localisation, par défaut 2840 (États‑Unis) |
| language_code | chaîne | Non | Code langue, par défaut en |
| limite | entier | Non | Mots‑clés associés max retournés, 1–100, par défaut 10 |
Exemple de requête
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"
Exemple de réponse
{
"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" }
}
Champs de mots‑clés
Le overview (mot‑clé source) et chaque related_keywords ligne partage ces champs. Tout champ peut être null lorsque les données en amont ne sont pas disponibles.
| Champ | Description |
|---|---|
| search_volume | Recherches mensuelles moyennes |
| cpc | Coût moyen par clic (USD) |
| competition | Concurrence payante, 0–1 |
| competition_level | LOW / MEDIUM / HIGH |
| difficulty | Difficulté de classement organique, 0–100 (null si pas encore calculé) |
| intent | Intention de recherche, par ex. ["Commercial"] |
| trend | Historique du volume sur 12 mois — { y, m, v } par mois |
| growth | Variation du volume % : m mensuel, q trimestriel, y annuel |
| serp_features | Types de fonctionnalités SERP présents, par ex. ["organic","people_also_ask"] |
| bid_low / bid_high | Fourchette d’enchère en haut de page (USD) |
| avg_backlinks / avg_ref_domains | Moyenne des backlinks / domaines référents des pages actuellement classées |
| comp_domain_rank | Autorité moyenne (0–1000) des pages actuellement classées |
| se_results | Nombre total de résultats concurrents pour le mot‑clé |
| related | Jusqu’à 8 sous‑mots‑clés associés (lignes associées uniquement) |
| match_bucket | Relation à la graine : similar, related, ou question |
POST /api/v1/site-audit
Exécute le même crawl que le 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} pour les résultats. Temps d'exploration typique : 1–5 minutes.
Corps de la requête (JSON)
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
| url | chaîne | Oui | URL complète à explorer, ex. https://example.com |
| max_pages | entier | Non | Pages max à explorer (par défaut 100). Limité par la limite de crawl de votre forfait et votre budget mensuel de pages restant. |
| depth | entier | Non | Profondeur de crawl, 1–5, par défaut 3 |
Exemple de requête
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"
Réponse (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}
Interrogez le statut d'un travail asynchrone. Interrogez toutes les 10–15 secondes jusqu'à status est complete ou failed.
Valeurs d’état
| Statut | Signification |
|---|---|
| queued | Travail accepté, pas encore démarré |
| running | Crawl en cours — vérifier progress (0–100) |
| complete | Terminé — data le champ contient des résultats |
| failed | Crawl échoué — error le champ a la raison |
Exemple de requête
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/jobs/a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5"
Réponse — Running
{
"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" }
}
Réponse — Complète
{
"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
Chaque mot‑clé suivi par votre compte, avec le marché et l’appareil de mesure ainsi que sa position la plus récente. Ce sont les données derrière le Rank Tracker — no crawl is triggered and nothing is charged.
country, language et 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.
Paramètres de requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| project_id | entier | Non | Restreindre à un projet. Omettre pour obtenir les mots‑clés de tous les projets que vous possédez. |
| limite | entier | Non | 1–500, default 100 |
Exemple de requête
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/rank/keywords?limit=1"
Exemple de réponse
{
"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 est positif lorsque le mot‑clé a bougé en hausse. Un mot‑clé jamais vérifié renvoie null pour chaque latest.* champ plutôt que 0 — position zero would read as "ranked first".
GET /api/v1/rank/history
Historique quotidien des positions pour un mot‑clé suivi, avec l’URL classée et les fonctionnalités SERP présentes à chaque vérification. Inclut un pré‑calculé trend résumé.
Paramètres de requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| keyword_id | entier | Oui | De /rank/keywords. Un mot‑clé que vous ne possédez pas renvoie 404 NOT_FOUND. |
| jours | entier | Non | 1–365, default 90 |
Exemple de requête
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/rank/history?keyword_id=4821&days=30"
Exemple de réponse
{
"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 }
}
Lecture trend
| Champ | Signification |
|---|---|
| premier | Position au plus ancien point dans la fenêtre |
| dernier | Position lors du contrôle le plus récent |
| meilleur | Nombre le plus bas atteint (meilleur classement) |
| pire | Nombre le plus élevé atteint (pire classement) |
history est trié du plus récent au plus ancien. best et worst ignorer les vérifications non classées, afin qu'elles soient null lorsque le mot‑clé n’a jamais été classé dans la période.
GET /api/v1/gsc/properties
Les propriétés Google Search Console connectées à votre compte, comme affichées dans Search Console Insights. Aucun paramètre requis.
This reads SignalSumo's synced copy — it does not call Google. last_synced_at vous indique à quel point cette copie est fraîche.
Exemple de requête
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/gsc/properties"
Exemple de réponse
{
"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 pour décomposer les mêmes chiffres par page, pays, appareil ou date.
Paramètres de requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| property_id | entier | Oui | De /gsc/properties. Une propriété que vous ne possédez pas renvoie 404 NOT_FOUND. |
| dim | chaîne | Non | query (par défaut), page, country, device, date, searchAppearance |
| from | chaîne | Non | YYYY-MM-DD, par défaut il y a 28 jours |
| to | chaîne | Non | YYYY-MM-DD, par défaut aujourd’hui |
| sort | chaîne | Non | clicks (par défaut), impressions, ctr, position, key |
| dir | chaîne | Non | desc (par défaut) ou asc |
| limite | entier | Non | 1–500, default 100 |
422 VALIDATION_ERROR, mais un non reconnu dim ou sort la valeur revient silencieusement aux paramètres par défaut au lieu de générer une erreur. Consultez le dim renvoyé dans data avant de faire confiance à une ventilation.
Exemple de requête
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/gsc/queries?property_id=31&dim=query&limit=2"
Exemple de réponse
{
"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 couvre toujours toute la période, quel que soit limit.
GET /api/v1/ai-visibility/projects
Les marques que vous suivez sur les moteurs de réponse IA, une ligne par projet, avec le score de visibilité actuel et son évolution. Aucun paramètre requis. Propulsé par le AI Visibility Checker.
Scores are collected by scheduled scans, so this endpoint never calls an AI provider — it returns what the last scan stored.
Exemple de requête
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/ai-visibility/projects"
Exemple de réponse
{
"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 est null until a project has been scanned at least twice — a first scan has nothing to compare against, and reporting 0 serait lu comme « aucun mouvement ».
GET /api/v1/ai-visibility/share-of-voice
À quelle fréquence les assistants IA mentionnent votre marque par rapport aux concurrents suivis, ainsi que la répartition complète des métriques du dernier scan.
Paramètres de requête
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| project_id | entier | Oui | De /ai-visibility/projects. Un projet que vous ne possédez pas renvoie 404 NOT_FOUND. |
Exemple de requête
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/ai-visibility/share-of-voice?project_id=9"
Exemple de réponse
{
"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"
}
]
}
}
Deux pourcentages différents
Ce sont des notions faciles à confondre, et elles répondent à des questions différentes :
| Champ | Question à laquelle elle répond |
|---|---|
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 est null avant que le premier scan d'un projet ne soit terminé. competitors renvoie au maximum 20, triés par nombre de mentions. brand_share_pct est null when no mentions have been recorded on either side — a share of nothing is not zero percent.
GET /api/v1/keyword-research/locations
Tous les marchés POST /keyword-research accepte, afin que vous puissiez découvrir un location_code au lieu de deviner un et de gagner un 422. Aucun paramètre requis.
Exemple de requête
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/keyword-research/locations"
Exemple de réponse
{
"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."
}
}
Journal des modifications
| Version | Date | Modifications |
|---|---|---|
| v1.2 | Août 2026 | Documenté les sept points d’accès en lecture seule déjà actifs : /rank/keywords, /rank/history, /gsc/properties, /gsc/queries, /ai-visibility/projects, /ai-visibility/share-of-voice et /keyword-research/locations. No behaviour changed — these were callable before, just undocumented. Added MCP and LLM client guidance. |
| v1.1 | Juil. 2026 | Réponses mot‑clé & backlink étendues aux ensembles complets de métriques (difficulté, intention, tendance, fonctionnalités SERP, champs backlink enrichis, aperçu & insights). Les résultats d’audit du site ajoutent geo_score et le nombre de problèmes. Référence de localisation/langue ajoutée et détails de facturation. |
| v1.0 | Jun 2026 | Version initiale — utilisation, backlinks, recherche de mots‑clés, audit de site, jobs |
Des questions ? Email [email protected]