Pour qui

API avis Google : récupérer tous vos avis en JSON (Business Profile, Places ou Revys)

Récupérer ses avis Google par API : Business Profile API (accès sur dossier, OAuth), Places API (5 avis max) ou API Revys en JSON. Exemples curl, JS, PHP.

Mis à jour le

Vous voulez les avis Google d'un établissement en données, pas dans un widget tout fait : pour un design sur mesure, une application, un tableau de bord ou le site d'un client. La question est de savoir quelle API utiliser, et ce qu'elle exige vraiment.

Existe-t-il une API officielle pour les avis Google ?

Oui, deux, qui n'ont rien à voir. L'API Google Business Profile (l'ex-API Google My Business) donne tous les avis d'une fiche, mais seulement à son propriétaire ou à un gestionnaire. L'API Places, de Google Maps Platform, est ouverte à tous avec une clé, mais ne renvoie que 5 avis.

API Google Business ProfileAPI Places (New)API Revys
Avis renvoyésTous, 50 par page5 au maximum, triés par pertinenceTous ceux de vos fiches
Qui peut l'utiliserPropriétaire ou gestionnaire de la ficheTout le mondeVous, pour les fiches connectées
AccèsDemande d'accès à Google, puis OAuthClé API Google CloudClé API Revys
CoûtSans frais1 000 requêtes gratuites par mois, puis 25 $ les 1 000Inclus dans le plan Pro
Stockage des avisPossibleInterdit hors des services GoogleFait par Revys
Répondre aux avisOui (updateReply)NonNon (lecture seule)

L'API Google Business Profile : complète, mais longue à obtenir

Elle renvoie tous les avis, avec la réponse du propriétaire, et permet d'y répondre. En contrepartie, il faut franchir quatre étapes avant le premier appel.

  1. Remplir les conditions

    Google exige de gérer une fiche validée et active depuis plus de 60 jours, et d'avoir un site web qui représente l'établissement. La fiche peut être la vôtre ou celle d'un client que vous gérez.

  2. Demander l'accès

    Créez un projet Google Cloud, notez son numéro, puis envoyez le formulaire de contact de l'API en choisissant « Application for Basic API Access », depuis une adresse propriétaire ou gestionnaire de la fiche. Tant que la demande n'est pas acceptée, votre quota est de 0 requête par minute ; une fois acceptée, il passe à 300.

  3. Mettre en place l'OAuth

    Chaque appel se fait au nom d'un utilisateur qui a autorisé le scope https://www.googleapis.com/auth/business.manage. Il faut stocker son jeton de rafraîchissement, le renouveler et gérer sa révocation.

  4. Parcourir comptes, fiches et avis

    Listez les comptes, puis les fiches de chaque compte, puis les avis de chaque fiche : GET https://mybusiness.googleapis.com/v4/accounts/{compte}/locations/{fiche}/reviews, 50 avis par page au plus, tri par updateTime desc par défaut (ou par note).

Ensuite commence le travail de fond : synchroniser régulièrement, répercuter les avis modifiés ou supprimés, respecter le quota de 300 requêtes par minute, stocker les avis dans votre base. C'est faisable, mais c'est un petit produit à maintenir.

L'API Places : simple, mais 5 avis seulement

L'API Places (New) répond avec une simple clé API : GET https://places.googleapis.com/v1/places/{place_id} avec l'en-tête X-Goog-FieldMask: reviews. Le masque de champs est obligatoire. Google le documente clairement : 5 avis au maximum, « triés par pertinence ». Pas de pagination, pas de tri par date.

Deux autres contraintes :

  • Le coût. Demander le champ reviews déclenche le SKU « Place Details Enterprise + Atmosphere » : 1 000 requêtes gratuites par mois, puis 25 $ les 1 000 (tranche jusqu'à 100 000).
  • Le stockage. Les conditions de Google Maps Platform (§ 3.2.3 a, « No Scraping ») interdisent d'extraire, de stocker ou de réhéberger ce contenu en dehors des services Google. Vous ne pouvez donc pas constituer votre propre base d'avis à partir de l'API Places.

C'est la raison pour laquelle tant de widgets gratuits n'affichent que 5 avis qui ne changent jamais.

Comment fonctionne l'API Revys ?

Revys se charge de la partie Google (accès à l'API, OAuth, synchronisation environ toutes les heures, stockage), puis expose vos avis dans une API JSON en lecture seule.

Endpoint : GET https://revys.io/api/v1/reviews

Authentification : un en-tête Authorization: Bearer rv_<prefix>_<secret>. Les clés se créent dans le tableau de bord, rubrique « API & développeurs » ; le secret n'est affiché qu'une fois. Gardez-le côté serveur.

Paramètres (exactement un des deux) :

ParamètreEffet
?widget=<publicId>Reprend les fiches et les filtres (note minimale, nombre d'avis) d'un widget existant
?source=<sourceId>Cible directement une fiche, sans filtre

Le plus simple est ?widget= : vous réglez les filtres dans l'éditeur de widget et l'API les applique.

Exemple avec curl

curl -H "Authorization: Bearer $REVYS_API_KEY" \
  "https://revys.io/api/v1/reviews?widget=VOTRE_WIDGET_ID"

Forme de la réponse

{
  "data": {
    "reviews": [
      {
        "id": "rev_123",
        "authorName": "Camille Lefebvre",
        "authorImage": null,
        "rating": 5,
        "text": "Service impeccable et équipe très professionnelle.",
        "language": "fr",
        "reviewedAt": "2026-05-01T10:00:00.000Z",
        "ownerReply": null
      }
    ],
    "aggregate": {
      "count": 128,
      "average": 4.8,
      "distribution": { "1": 1, "2": 2, "3": 5, "4": 30, "5": 90 }
    },
    "schemaOrg": {
      "@context": "https://schema.org",
      "@type": "Organization",
      "name": "Votre entreprise"
    }
  }
}

(Exemple d'avis fictif.) Les avis arrivent du plus récent au plus ancien ; ceux que vous avez masqués dans Revys n'y figurent pas. aggregate est calculé sur tous les avis de la ou des fiches, jamais tronqué par la note minimale du widget : average correspond à votre vraie note. schemaOrg est un objet Organization seul, sans aggregateRating ni review, conformément à la règle de Google sur les avis « self-serving » (détails dans étoiles d'avis Google : ce qui est éligible).

Exemple en JavaScript (Node.js 18 et plus, côté serveur)

const res = await fetch("https://revys.io/api/v1/reviews?widget=VOTRE_WIDGET_ID", {
  headers: { Authorization: `Bearer ${process.env.REVYS_API_KEY}` },
  signal: AbortSignal.timeout(3000),
});
if (!res.ok) throw new Error(`Revys a répondu ${res.status}`);
const { data } = await res.json();

for (const r of data.reviews) {
  console.log(`${r.rating}/5 — ${r.authorName} : ${r.text ?? "(note sans texte)"}`);
}

Sur Next.js, faites cet appel dans un Server Component pour que les avis soient dans le HTML ; exemple complet dans notre page avis Google sur Next.js.

Exemple en PHP

<?php
$ch = curl_init('https://revys.io/api/v1/reviews?widget=VOTRE_WIDGET_ID');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_TIMEOUT => 3,
  CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('REVYS_API_KEY')],
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

$data = $status === 200 ? json_decode($body, true)['data'] : null;
foreach ($data['reviews'] ?? [] as $r) {
  echo '<blockquote><p>' . htmlspecialchars($r['text'] ?? '') . '</p>'
     . '<cite>' . htmlspecialchars($r['authorName']) . ', ' . (int) $r['rating'] . '/5</cite></blockquote>';
}
if ($data) {
  echo '<script type="application/ld+json">' . json_encode($data['schemaOrg']) . '</script>';
}

Mettez la réponse en cache (une heure suffit) plutôt que d'appeler l'API à chaque affichage de page.

Quelles sont les limites de l'API Revys ?

Les limites sont celles du code en production, sans plafond caché.

LimiteValeur
Plan requisPro (le plan Free reçoit 403 plan_required)
Quota mensuel10 000 appels par mois et par fiche payée, remis à zéro le 1er du mois (UTC) ; seules les réponses 200 comptent
Débit120 requêtes par 60 secondes et par clé (en-têtes X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset)
CacheCache-Control: public, max-age=300 (5 minutes)
Quota dépasséLa dernière réponse 200 pour la même cible est renvoyée (statut 200, en-tête X-Revys-Quota: exceeded, non décomptée) ; sinon 429 quota_exceeded

Les autres erreurs renvoient un JSON { "error": "<code>" } : 401 unauthorized (clé absente ou invalide), 400 missing_target (ni widget ni source), 404 widget_not_found ou source_not_found, 429 rate_limited, 500 internal_error.

Besoin de HTML plutôt que de JSON ?

Si vous voulez seulement afficher les avis, l'API est souvent superflue. L'include serveur https://revys.io/api/embed/<publicId>/html renvoie le widget déjà rendu : avis, CSS isolé et JSON-LD, sans JavaScript. Il est public, sans clé, et gère ETag et 304.

<?php echo @file_get_contents('https://revys.io/api/embed/VOTRE_ID/html'); ?>

Le tableau de bord fournit une version avec cache d'une heure et délai de 2 secondes pour PHP, Next.js, Astro, Node.js, Python, Ruby et Cloudflare Workers : voir PHP et sites HTML. Sur WordPress, le plugin Revys fait tout sans code.

Votre besoinChoisissez
Design entièrement sur mesure, application, tableau de bordAPI JSON
Afficher les avis sur un site PHP, Next.js, Node…Include serveur
Site WordPressPlugin
Comparer toutes les méthodesAfficher les avis Google sur son site

Ce que l'API Revys ne fait pas

  • Les fiches des autres : elle ne renvoie que les avis des fiches connectées à votre compte, donc dont vous êtes propriétaire ou gestionnaire.
  • Les réponses : elle est en lecture seule. Pour répondre, utilisez le tableau de bord et sa réponse IA, qui publient via l'API Google.
  • Les autres plateformes : Google seulement aujourd'hui ; Facebook et Trustpilot viendront ensuite.
  • Les webhooks : pas encore de notification push vers votre application ; interrogez l'API (le cache de 5 minutes et la synchronisation horaire suffisent pour un affichage).

Vous gérez les avis de plusieurs clients ? Voir Revys pour les agences, avec 10 000 appels par mois pour chaque fiche.

Questions fréquentes

L'API Google Business Profile est-elle gratuite ?

Oui. Google indique que l'API est disponible sans frais pour les utilisateurs enregistrés. Il faut en revanche obtenir l'accès : avant validation de votre demande, le quota de votre projet est de 0 requête par minute.

Pourquoi l'API Google Places ne renvoie-t-elle que 5 avis ?

C'est une limite de l'API : le champ reviews renvoie au maximum 5 avis, triés par pertinence. Il n'existe pas de paramètre pour en obtenir plus. Pour tous les avis d'une fiche, il faut l'API Google Business Profile, réservée aux propriétaires et gestionnaires de la fiche.

Comment récupérer les avis Google d'une fiche qui n'est pas la mienne ?

Par une API officielle, seulement les 5 avis de l'API Places. Les conditions de Google Maps Platform interdisent d'extraire ou de stocker ce contenu hors de ses services. Le scraping des pages Google enfreint aussi ses conditions. Pour tous les avis, faites-vous ajouter comme gestionnaire de la fiche.

Combien d'appels l'API Revys autorise-t-elle ?

10 000 appels par mois et par fiche payée sur le plan Pro (3 fiches donnent 30 000 appels), avec un plafond de 120 requêtes par minute et par clé. Seules les réponses 200 sont comptées. Le plan Free n'a pas accès à l'API.

Puis-je appeler l'API Revys depuis le navigateur ?

Ne le faites pas : la clé API serait visible dans le code de la page. Appelez l'API depuis votre serveur, puis rendez les avis dans le HTML. C'est aussi la condition pour que les robots des IA, qui n'exécutent pas le JavaScript, voient vos avis.

L'API permet-elle de répondre aux avis ?

Côté Google, oui : la méthode updateReply de l'API Business Profile publie la réponse du propriétaire. L'API Revys, elle, est en lecture seule ; les réponses passent par le tableau de bord Revys et sa réponse IA, qui publient via l'API Google.

Sources

  1. Google Business Profile APIs : conditions préalables d'accès (MAJ 2026-08-28)
  2. Google Business Profile APIs : frais d'utilisation (MAJ 2026-08-28)
  3. Google Business Profile APIs : accounts.locations.reviews.list (MAJ 2026-04-07)
  4. Google Places API (New) : ressource Place, champ reviews
  5. Google Maps Platform : tarifs des SKU Places (MAJ 2026-10-16)
  6. Conditions d'utilisation de Google Maps Platform, § 3.2.3 (a) No Scraping (MAJ 2026-08-26)

Dans le même thème

Vos avis méritent d'être lus.

Par vos clients, par Google, et par les IA.