API Google Integrations (GSC + GA4)
Flux OAuth, sélection de propriétés et import de données depuis Search Console et Analytics.
L'API Google Integrations connecte un compte Rankion à Google Search Console (GSC), Google Analytics 4 (GA4) et Google Reviews. Le flux OAuth lui-même passe par l'UI web (redirect navigateur vers le consent screen Google — une autorisation purement API n'est pas autorisée par Google pour les scopes offline-access), mais toutes les étapes suivantes (lister les propriétés, lier, tirer les données) sont entièrement scriptables via l'API.
Contexte du module : Google Integrations.
Connections
Une connection est le résultat d'un consent OAuth réussi — il peut y en avoir plusieurs par équipe (par ex. un compte avec accès à 5 propriétés GSC).
| Méthode | Endpoint | Description |
|---|---|---|
| GET | /v1/google/connections |
Toutes les connections actives (e-mail, scopes, statut) |
| DELETE | /v1/google/connections/{id} |
Déconnecter + révoquer le refresh token |
curl "$BASE/google/connections" -H "Authorization: Bearer $TOKEN" \
| jq '.data[] | {id, google_email, scopes, last_synced_at}'
GSC — Search Console
| Méthode | Endpoint | Crédits | Description |
|---|---|---|---|
| GET | /v1/google/gsc/properties |
— | Toutes les propriétés GSC pour tous les comptes connectés |
| POST | /v1/google/gsc/properties/{p}/link |
— | Lier la propriété à un projet Rankion. Body : {project_id} |
| DELETE | /v1/google/gsc/properties/{p}/link |
— | Délier |
| POST | /v1/google/gsc/properties/{p}/sync |
1 | Sync immédiat des 16 derniers mois de données de performance |
| GET | /v1/google/gsc/properties/{p}/metrics |
— | Clicks, impressions, CTR, position par query/page/date |
# Lier la propriété GSC + sync initial
curl -X POST "$BASE/google/gsc/properties/sc-domain%3Aexample.com/link" \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"project_id": 12}'
curl -X POST "$BASE/google/gsc/properties/sc-domain%3Aexample.com/sync" \
-H "Authorization: Bearer $TOKEN"
{p} est l'identifiant de propriété URL-encoded — les domain properties ont le format sc-domain:example.com, les URL properties https://example.com/. Les deux doivent être URL-encoded (%3A, %2F).
# Lire les métriques de performance
curl "$BASE/google/gsc/properties/sc-domain%3Aexample.com/metrics?from=2026-04-01&to=2026-04-30&dimension=query" \
-H "Authorization: Bearer $TOKEN" \
| jq '.data[] | {query, clicks, impressions, ctr, position}'
GA4 — Analytics
| Méthode | Endpoint | Description |
|---|---|---|
| GET | /v1/google/ga4/properties |
Toutes les propriétés GA4 (Property-ID, Stream-Name, compte) |
| POST | /v1/google/ga4/properties/{p}/link |
Lier. Body : {project_id} |
| DELETE | /v1/google/ga4/properties/{p}/link |
Délier |
| GET | /v1/google/ga4/properties/{p}/metrics |
Sessions, users, engagement, conversions |
curl "$BASE/google/ga4/properties/properties%2F123456789/metrics?from=2026-04-01&to=2026-04-30&metrics=sessions,users,conversions" \
-H "Authorization: Bearer $TOKEN" \
| jq '.data'
Google Reviews
| Méthode | Endpoint | Description |
|---|---|---|
| GET | /v1/integrations/google/reviews/status |
Statut du raccordement Google Business Profile reviews |
Les données de reviews elles-mêmes passent par l'API Review Sources — cet endpoint indique seulement si l'auth est vivante et quand a eu lieu le dernier pull réussi.
Flux typique
1) UI: l'utilisateur clique « Connecter Google » → redirect navigateur → consent Google → callback
→ Rankion stocke le refresh token en DB
2) API: GET /google/connections # montre : connection existe, scopes ok
3) API: GET /google/gsc/properties # liste ce que l'utilisateur a autorisé dans GSC
4) API: POST /gsc/properties/{p}/link # lie la propriété au projet
5) API: POST /gsc/properties/{p}/sync # sync initial (1 crédit)
6) API: GET /gsc/properties/{p}/metrics # les données sont prêtes
Notes
- OAuth uniquement via l'UI. Google refuse les refresh tokens offline-access pour les flux purement API sans passage par le consent screen. Prévois cela dans ton wizard d'onboarding.
- URL-encoder les identifiants de propriété.
sc-domain:est sinon interprété comme un schemepart inconnu (400). - Le sync est async-light.
/synclance un job qui tourne 30 s à 5 min selon le volume de 16 mois.last_synced_atdans/connectionsmontre le dernier run réussi. - Les quota-limits s'appliquent toujours. Le quota API GSC (1200 queries/min/projet) est respecté par Rankion — en cas de dépassement, erreur de rate-limit avec header
Retry-After. - DELETE Connection révoque proprement. Le refresh token est révoqué chez Google ; un re-link accidentel demande à nouveau le consent flow.
Voir aussi : Rank Tracking · API Review Sources · Google Integrations.