Synupv1
Créer une clé
v1Ressources/Fiches publiées

Fiches publiées

Consultez l'état de synchronisation des fiches d'un établissement sur les annuaires.

Renvoie l'état de synchronisation par publisher, le statut du profil Google Business et les pistes d'amélioration pour un établissement.

Obtenir la fiche d'un établissement

get/api/v1/listings
listings:read
Paramètres de requête
locationIdstringobligatoire
L'établissement à consulter. Obligatoire. Retrouvez-le avec GET /api/v1/locations.
clientIdstringfacultatif
Le client de l'établissement. Nécessaire seulement pour lever une ambiguïté quand votre clé est limitée à des clients spécifiques.
Réponse
dataobjectfacultatif
statsobjectfacultatif
Chiffres résumés sur l'ensemble des publishers de cet établissement.
publishersnumberfacultatif
Nombre total de publishers suivis.
syncednumberfacultatif
Nombre de publishers actuellement synchronisés.
notConnectednumberfacultatif
Nombre de publishers pas encore connectés.
googleVerifiedLocationsnumberfacultatif
Nombre d'établissements vérifiés par Google.
duplicatesnumberfacultatif
Nombre de fiches en double détectées.
connectionIssuesnumberfacultatif
Nombre de publishers ayant un problème de connexion.
requiresActionnumberfacultatif
Nombre de publishers nécessitant une action.
publishersarray of objectfacultatif
État de synchronisation par publisher.
publisherIdstringfacultatif
Identifiant de l'annuaire/publisher.
publisherNamestringfacultatif
Nom d'affichage du publisher.
statusstring (synced | in_progress | failed | requires_action | not_connected | expired | suspended | pending_approval | inaccessible | credentials_invalidated | not_available)facultatif
L'une des valeurs : synced, in_progress, failed, requires_action, not_connected, expired, suspended, pending_approval, inaccessible, credentials_invalidated, not_available.
liveLinksnumberfacultatif
Nombre de liens actifs trouvés pour ce publisher, ou null.
gbpobjectfacultatif
Synthèse du profil Google Business, lorsqu'il est connecté.
connectedbooleanfacultatif
Si un profil Google Business est connecté.
scorenumberfacultatif
Score de complétude du profil, de 0 à 100, ou null.
donearray of stringfacultatif
Éléments d'amélioration du profil déjà réalisés.
todoarray of stringfacultatif
Éléments d'amélioration du profil restant à faire.
opportunitiesarray of objectfacultatif
Améliorations suggérées, chacune avec un message court et un ton.
textstringfacultatif
tonestring (amber | rose | blue | zinc)facultatif
aiobjectfacultatif
Un court titre généré par IA et jusqu'à 3 corrections prioritaires pour cet établissement, ou null.
headlinestringfacultatif
Résumé en une phrase de l'état des fiches de cet établissement.
fixFirstarray of objectfacultatif
Jusqu'à 3 actions suggérées, classées par impact.
textstringfacultatif
impactstring (High | Med | Low)facultatif
noticestringfacultatif
Une note lisible sur les données de fiches de cet établissement, ou null.
Erreurs
400Il manque un paramètre requis à la requête, ou elle est invalide.
401Clé API manquante, invalide, expirée ou révoquée.
403La clé n'a pas la permission requise, ou n'est pas autorisée pour ce client/établissement.
404La ressource est introuvable, ou n'appartient pas à votre agence.
429Trop de requêtes. Réessayez après le nombre de secondes indiqué dans l'en-tête Retry-After.
get/api/v1/listings
Votre clé API
locationId *
clientId
{
  "data": {
    "stats": {
      "publishers": 42,
      "synced": 38,
      "notConnected": 2,
      "googleVerifiedLocations": 1,
      "duplicates": 0,
      "connectionIssues": 1,
      "requiresAction": 1
    },
    "publishers": [
      {
        "publisherId": "google",
        "publisherName": "Google",
        "status": "synced",
        "liveLinks": 1
      }
    ],
    "gbp": {
      "connected": true,
      "score": 82,
      "done": [
        "Business name",
        "Address"
      ],
      "todo": [
        "Add photos"
      ]
    },
    "opportunities": [
      {
        "text": "Add more photos to your Google profile",
        "tone": "amber"
      }
    ],
    "ai": {
      "headline": "90% synced — 1 listing needs action.",
      "fixFirst": [
        {
          "text": "Reconnect 1 listing needing action.",
          "impact": "High"
        }
      ]
    },
    "notice": null
  }
}
v1Ressources/Fiches publiées/getObtenir un résumé des fiches

État de synchronisation des publishers sur les emplacements de ce client (ou de toute l'agence) — un résumé agrégé ainsi qu'une répartition par emplacement, des insights (% de santé, répartition de synchronisation, publishers les plus faibles, éléments « à traiter » classés) et un titre déterministe. Restreindre à un sous-ensemble avec tags. Utilise le même rollup que la vue Fiches → Tous les emplacements.

Obtenir un résumé des fiches

get/api/v1/listings/summary
listings:read
Paramètres de requête
clientIdstringfacultatif
Limiter aux emplacements d'un client.
tagsstringfacultatif
Noms de tags d'emplacement séparés par des virgules — seuls les emplacements portant au moins un de ces tags sont inclus.
pageintegerfacultatif
Page des lignes par emplacement (base 1). Par défaut 1.
perPageintegerfacultatif
Lignes par page (max 200). Par défaut 50.
Réponse
dataobjectfacultatif
summaryobjectfacultatif
Totaux agrégés sur tous les emplacements du périmètre.
locationsnumberfacultatif
Nombre d'emplacements dans le périmètre.
publishersTotalnumberfacultatif
Total des emplacements publisher sur tous les emplacements du périmètre.
publishersSyncednumberfacultatif
Parmi eux, actuellement synchronisés.
connectionIssuesnumberfacultatif
Lignes de connecteurs natifs (Google/Facebook) avec un problème de connexion.
duplicatesnumberfacultatif
Fiches en double détectées dans le périmètre.
reviewsnumberfacultatif
Total des avis dans le périmètre.
avgRatingnumberfacultatif
Note moyenne parmi les emplacements qui en ont une.
rowsarray of objectfacultatif
Une ligne par emplacement du périmètre (paginée).
locationIdstringfacultatif
ID de l'emplacement.
namestringfacultatif
Nom de l'emplacement.
citystringfacultatif
Ville de l'emplacement.
publishersnumberfacultatif
Emplacements publisher pour cet emplacement.
syncednumberfacultatif
Parmi eux, actuellement synchronisés.
connectionIssuesnumberfacultatif
Lignes de connecteurs natifs avec un problème de connexion.
duplicatesnumberfacultatif
Fiches en double détectées pour cet emplacement.
reviewsnumberfacultatif
Total des avis pour cet emplacement.
unrepliednumberfacultatif
Avis en attente de réponse.
avgRatingnumberfacultatif
Note moyenne de cet emplacement.
googleVerifiedbooleanfacultatif
La fiche Google est connectée et vérifiée.
googleConnectedbooleanfacultatif
Google est connecté (la vérification peut être encore en attente).
tagsarray of stringfacultatif
Tags internes de cet emplacement.
insightsobjectfacultatif
Insights dérivés calculés à partir des lignes ci-dessus.
healthnumberfacultatif
publishersSynced / publishersTotal, en pourcentage.
distributionobjectfacultatif
Emplacements répartis par taux de synchronisation (fullySynced 100 %, healthy 90-99 %, atRisk <90 %).
fullySyncednumberfacultatif
Emplacements à 100 % de synchronisation.
healthynumberfacultatif
Emplacements à 90-99 % de synchronisation.
atRisknumberfacultatif
Emplacements en dessous de 90 % de synchronisation.
weakestarray of objectfacultatif
Publishers ayant la plus faible couverture dans le périmètre.
idstringfacultatif
ID du publisher.
namestringfacultatif
Nom du publisher.
totalnumberfacultatif
Emplacements portant ce publisher.
syncednumberfacultatif
Parmi eux, synchronisés.
requiresActionnumberfacultatif
Parmi eux, nécessitant une action.
notConnectednumberfacultatif
Parmi eux, non connectés.
pctnumberfacultatif
Pourcentage synchronisé, arrondi.
directoriesarray of objectfacultatif
Tableau complet de couverture par publisher.
idstringfacultatif
ID du publisher.
namestringfacultatif
Nom du publisher.
totalnumberfacultatif
Emplacements portant ce publisher.
syncednumberfacultatif
Parmi eux, synchronisés.
requiresActionnumberfacultatif
Parmi eux, nécessitant une action.
notConnectednumberfacultatif
Parmi eux, non connectés.
pctnumberfacultatif
Pourcentage synchronisé, arrondi.
attentionarray of objectfacultatif
Cartes « à traiter » classées.
nnumberfacultatif
Nombre représenté par cette carte.
titlestringfacultatif
Titre de la carte.
substringfacultatif
Sous-titre de la carte.
tonestring (amber | blue | rose | zinc)facultatif
Ton visuel de cette carte.
filterstring (issues | duplicates | under80 | unverified | notconnected)facultatif
Clé de filtre correspondante dans le tableau des emplacements.
headlinestringfacultatif
Un titre déterministe d'une ligne sur l'état du périmètre.
fixFirstarray of objectfacultatif
Corrections prioritaires classées.
textstringfacultatif
Description de la correction.
impactstring (High | Med | Low)facultatif
Impact estimé de cette correction.
filterstring (issues | duplicates | under80 | unverified | notconnected)facultatif
Clé de filtre correspondante dans le tableau des emplacements.
totalnumberfacultatif
Total des emplacements correspondants (pour la pagination), indépendant de perPage.
pagenumberfacultatif
Page actuelle (base 1).
perPagenumberfacultatif
Lignes par page.
Erreurs
401Clé API manquante, invalide, expirée ou révoquée.
403La clé n'a pas la permission requise, ou n'est pas autorisée pour ce client/établissement.
429Trop de requêtes. Réessayez après le nombre de secondes indiqué dans l'en-tête Retry-After.
get/api/v1/listings/summary
Votre clé API
clientId
tags
page
perPage
{
  "data": {
    "summary": {
      "locations": 12,
      "publishersTotal": 96,
      "publishersSynced": 81,
      "connectionIssues": 3,
      "duplicates": 2,
      "reviews": 340,
      "avgRating": 4.6
    },
    "rows": [
      {
        "locationId": "loc_456",
        "name": "Acme Dental — Downtown",
        "city": "Austin",
        "publishers": 8,
        "synced": 7,
        "connectionIssues": 0,
        "duplicates": 0,
        "reviews": 26,
        "unreplied": 2,
        "avgRating": 4.8,
        "googleVerified": true,
        "googleConnected": true,
        "facebookConnected": true,
        "tags": [
          "vip"
        ]
      }
    ],
    "insights": {
      "health": 84,
      "distribution": {
        "fullySynced": 9,
        "healthy": 2,
        "atRisk": 1
      },
      "weakest": [
        {
          "locationId": "loc_789",
          "name": "Acme Dental — Eastside",
          "health": 40
        }
      ],
      "directories": [
        {
          "id": "google",
          "name": "Google Maps",
          "total": 12,
          "synced": 11,
          "requiresAction": 0,
          "notConnected": 1,
          "pct": 92
        }
      ],
      "attention": [
        {
          "n": 1,
          "title": "1 location under 90% synced",
          "sub": "Listings not fully propagated",
          "tone": "amber",
          "filter": "under80"
        }
      ],
      "headline": "84% listing health — 1 location under 90% synced needs attention.",
      "fixFirst": [
        {
          "text": "Reconnect 1 location's listing sync.",
          "impact": "Med"
        }
      ]
    },
    "total": 12,
    "page": 1,
    "perPage": 50
  }
}
v1Ressources/Fiches publiées/getObtenir le Share of Voice

Votre part de Grid Rank face aux concurrents nommés, vos mots-clés les plus performants classés par part top-3 actuelle, et une tendance mensuelle de rang moyen sur la fenêtre — pour un emplacement.

Obtenir le Share of Voice

get/api/v1/seo/share-of-voice
seo:read
Paramètres de requête
locationIdstringobligatoire
L'emplacement à consulter. Retrouvez-le avec GET /api/v1/locations.
clientIdstringfacultatif
Le client de l'emplacement. Nécessaire uniquement pour lever une ambiguïté lorsque votre clé est limitée à des clients spécifiques.
fromstringfacultatif
Début de la fenêtre (date ISO). Par défaut, il y a 30 jours.
tostringfacultatif
Fin de la fenêtre (date ISO). Par défaut, maintenant.
Réponse
dataobjectfacultatif
comparisonobjectfacultatif
Vous face aux concurrents nommés selon la part top-3 du grid.
availablebooleanfacultatif
Indique si cet établissement dispose de données de grid-rank pour calculer le Share of Voice.
rowsarray of objectfacultatif
Une ligne par entreprise dans la comparaison — vous et vos concurrents nommés.
namestringfacultatif
Le nom de l'entreprise, ou le nom de votre propre client pour votre propre ligne.
top3Pctnumberfacultatif
Part des mots-clés suivis pour lesquels cette entreprise se classe dans le top 3 (0–100), ou null en cas de données insuffisantes.
isYoubooleanfacultatif
True sur la ligne correspondant à votre propre établissement. Omis (jamais false) sur les lignes des concurrents.
keywordsobjectfacultatif
Les mots-clés de cet emplacement, classés par part top-3 la plus récente.
availablebooleanfacultatif
Indique si cet établissement dispose de données de grid-rank pour calculer le Share of Voice.
rowsarray of objectfacultatif
Une ligne par mot-clé suivi.
keywordstringfacultatif
Le mot-clé suivi.
top3Pctnumberfacultatif
Part des mots-clés suivis pour lesquels cette entreprise se classe dans le top 3 (0–100), ou null en cas de données insuffisantes.
avgRanknumberfacultatif
Rang moyen sur la période, ou null en cas de données insuffisantes.
performanceobjectfacultatif
Tendance mensuelle de rang moyen par mot-clé, bornée par from/to.
availablebooleanfacultatif
Indique si cet établissement dispose de données de grid-rank pour calculer le Share of Voice.
seriesarray of objectfacultatif
Une série par mot-clé suivi.
keywordstringfacultatif
Le mot-clé suivi.
pointsarray of objectfacultatif
Points de données de rang moyen mensuel pour ce mot-clé.
Erreurs
400Il manque un paramètre requis à la requête, ou elle est invalide.
401Clé API manquante, invalide, expirée ou révoquée.
403La clé n'a pas la permission requise, ou n'est pas autorisée pour ce client/établissement.
429Trop de requêtes. Réessayez après le nombre de secondes indiqué dans l'en-tête Retry-After.
get/api/v1/seo/share-of-voice
Votre clé API
locationId *
clientId
from
to
{
  "data": {
    "comparison": {
      "available": true,
      "rows": [
        {
          "name": "Acme Dental — Downtown",
          "top3Pct": 62,
          "isYou": true
        },
        {
          "name": "Bright Smiles Dental",
          "top3Pct": 74
        }
      ]
    },
    "keywords": {
      "available": true,
      "rows": [
        {
          "keyword": "dentist near me",
          "top3Pct": 62,
          "avgRank": 3.2
        }
      ]
    },
    "performance": {
      "available": true,
      "series": [
        {
          "keyword": "dentist near me",
          "points": [
            {
              "yearMonth": "2026-01",
              "avgRank": 3.6
            },
            {
              "yearMonth": "2026-02",
              "avgRank": 3.2
            }
          ]
        }
      ]
    }
  }
}
v1Ressources/Fiches publiées/getObtenir l'Indice de Citations

Combien d'annuaires indexent cet emplacement, actuellement face à une période antérieure.

Obtenir l'Indice de Citations

get/api/v1/seo/citation-index
seo:read
Paramètres de requête
locationIdstringobligatoire
L'emplacement à consulter. Retrouvez-le avec GET /api/v1/locations.
clientIdstringfacultatif
Le client de l'emplacement. Nécessaire uniquement pour lever une ambiguïté lorsque votre clé est limitée à des clients spécifiques.
fromstringfacultatif
Début de la fenêtre (date ISO). Par défaut, il y a 30 jours.
tostringfacultatif
Fin de la fenêtre (date ISO). Par défaut, maintenant.
Réponse
dataobjectfacultatif
availablebooleanfacultatif
Si un instantané de l'indice de citations existe déjà pour cet emplacement.
currentobjectfacultatif
Le dernier instantané à la fin de la fenêtre ou avant.
percentagenumberfacultatif
Pourcentage de fiches actuellement indexées (0–100), ou null.
listingsnumberfacultatif
Nombre total de fiches actives comptabilisées dans cet instantané, ou null.
indexednumberfacultatif
Parmi elles, combien sont indexées, ou null.
previousobjectfacultatif
Le dernier instantané au début de la fenêtre ou avant, pour comparaison.
percentagenumberfacultatif
Pourcentage de fiches actuellement indexées (0–100), ou null.
listingsnumberfacultatif
Nombre total de fiches actives comptabilisées dans cet instantané, ou null.
indexednumberfacultatif
Parmi elles, combien sont indexées, ou null.
Erreurs
400Il manque un paramètre requis à la requête, ou elle est invalide.
401Clé API manquante, invalide, expirée ou révoquée.
403La clé n'a pas la permission requise, ou n'est pas autorisée pour ce client/établissement.
429Trop de requêtes. Réessayez après le nombre de secondes indiqué dans l'en-tête Retry-After.
get/api/v1/seo/citation-index
Votre clé API
locationId *
clientId
from
to
{
  "data": {
    "available": true,
    "current": {
      "percentage": 90.48,
      "listings": 42,
      "indexed": 38
    },
    "previous": {
      "percentage": 83.33,
      "listings": 42,
      "indexed": 35
    }
  }
}