Quotas et limites de l'API Data

Les limites et quotas suivants s'appliquent à l'API Data.

Application des quotas

Toutes les requêtes adressées à l'API Google Analytics Data v1 nécessitent un projet Google Cloud et sont soumises aux quotas décrits sur cette page. Les quotas sont consommés, quelle que soit la méthode utilisée pour identifier le projet appelant, y compris :

  • les requêtes authentifiées avec des identifiants OAuth 2.0 ;
  • les requêtes authentifiées à l'aide d'une clé API uniquement.

Les clés API permettent d'associer une requête à un projet Google Cloud spécifique à des fins de quota et de facturation. Tous les appels d'API effectués à l'aide d'identifiants ou d'une clé API de votre projet seront comptabilisés dans les quotas applicables de votre projet et de la propriété Google Analytics.

Catégories de quotas

L'API Data comporte quatre catégories de quotas de requêtes : Core, Temps réel, Entonnoir et Chat.

Les requêtes API adressées aux méthodes Core sont facturées selon les quotas Core. Les requêtes API adressées aux méthodes Temps réel sont facturées selon les quotas Temps réel. Les requêtes API adressées aux méthodes Entonnoir sont facturées selon les quotas Entonnoir. Les requêtes API adressées aux méthodes Chat sont facturées selon les quotas Chat. Chaque requête ne consomme qu'un seul type de quota.

Catégorie de quota Méthodes d'API
Core runReport, runPivotReport, batchRunReports, batchRunPivotReports, runAccessReport, getMetadata, checkCompatibility, createAudienceExports
Temps réel runRealtimeReport
Entonnoir runFunnelReport
Chat properties.chat

Quotas des propriétés Analytics

Toutes les requêtes consomment des quotas de propriété.

Nom du quota Limite de propriété standard Limite de propriété Analytics 360
Jetons Core par propriété et par jour 200 000 2 000 000
Jetons Core par propriété et par heure 40 000 400 000
Jetons Core par projet, par propriété et par heure 14 000 140 000
Requêtes Core simultanées par propriété 10 50
Erreurs du serveur Core par projet, par propriété et par heure 10 50
Jetons Temps réel par propriété et par jour 200 000 2 000 000
Jetons Temps réel par propriété et par heure 40 000 400 000
Jetons Temps réel par projet, par propriété et par heure 14 000 140 000
Requêtes Temps réel simultanées par propriété 10 50
Erreurs du serveur Temps réel par projet, par propriété et par heure 10 50
Jetons Entonnoir par propriété et par jour 200 000 2 000 000
Jetons Entonnoir par propriété et par heure 40 000 400 000
Jetons Entonnoir par projet, par propriété et par heure 14 000 140 000
Requêtes simultanées par propriété pour l'entonnoir 10 50
Erreurs du serveur Entonnoir par projet, par propriété et par heure 10 50
Jetons Chat par propriété et par jour 3 750 000 3 750 000
Jetons Chat par propriété et par heure 500 000 500 000
  • Les requêtes simultanées sont mesurées par le nombre de requêtes exécutées simultanément. Pour réduire la simultanéité des requêtes, attendez que les requêtes précédentes soient terminées avant d'en envoyer d'autres.
  • Les erreurs du serveur sont les codes 500 et 503. Les quotas d'erreurs du serveur ne sont facturés que lorsqu'une requête génère une erreur du serveur. Lorsque les quotas d'erreurs du serveur sont épuisés pour une paire projet/propriété, toutes les requêtes adressées à la propriété à partir du projet sont bloquées. Pour obtenir la liste complète des réponses d'erreur, consultez la section Error Responses.
  • Chaque requête consomme un quota pour les jetons par propriété et par heure, ainsi que pour les jetons par projet, par propriété et par heure. Cela signifie qu'une propriété doit être accessible par plus de trois projets pour que le quota "Jetons par propriété et par heure" puisse être épuisé avant le quota "Jetons par projet, par propriété et par heure".

Les propriétés sont autorisées à envoyer 120 requêtes potentiellement seuillées par heure. Les dimensions userAgeBracket, userGender, brandingInterest, audienceId et audienceName sont potentiellement seuillées. Les seuils sont appliqués pour éviter que la personne qui consulte un rapport puisse déduire les données démographiques ou les centres d'intérêt des utilisateurs individuels.

Quota de jetons de propriété

Les jetons sont consommés à chaque requête adressée à l'API Google Analytics Data v1. Le nombre de jetons facturés dépend de la complexité de la requête. Bien que la plupart des requêtes facturent 10 jetons ou moins, les requêtes plus complexes (telles que les requêtes chat Ask Advisor) en consomment davantage.

Facteurs qui influencent la consommation de jetons

Le coût exact des jetons pour une requête est déterminé au moment de l'exécution, ce qui rend difficile le précalcul précis. Le coût est influencé par une combinaison de facteurs liés à la requête elle-même et aux données sous-jacentes de la propriété Google Analytics. Ces facteurs peuvent entraîner des coûts plus élevés :

  • Nombre de lignes : demande d'un plus grand nombre de lignes.
  • Nombre de dimensions et de métriques : inclusion d'un plus grand nombre de dimensions et de métriques.
  • Complexité des filtres : utilisation d'expressions de filtre complexes.
  • Durée de la période : requête sur des périodes plus longues.
  • Cardinalité des données : les dimensions à cardinalité élevée (nombreuses valeurs uniques, telles que pagePath, dimensions personnalisées) peuvent augmenter considérablement le coût des jetons.
  • Volume d'événements de la propriété : les requêtes sur des propriétés avec un volume d'événements plus élevé peuvent consommer plus de jetons que la même requête sur une propriété avec moins de données.

Surveillance de l'utilisation des jetons

Le moyen le plus efficace de déterminer le coût des jetons pour vos appels d'API spécifiques consiste à inclure le paramètre "returnPropertyQuota": true dans le corps de la requête (compatible avec runReport, batchRunReports, runPivotReport, batchRunPivotReports, runRealtimeReport et runFunnelReport). La réponse de l'API inclut alors l'objet PropertyQuota, qui détaille les jetons consommés par cette requête spécifique et les soldes de quota restants.

Exemple de requête avec returnPropertyQuota
POST https://analyticsdata.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runReport
{
  "dateRanges": [
    { "startDate": "7daysAgo", "endDate": "yesterday" }
  ],
  "dimensions": [
    { "name": "country" }
  ],
  "metrics": [
    { "name": "activeUsers" }
  ],
  "returnPropertyQuota": true
}
Exemple de charge utile de réponse propertyQuota

Lorsque "returnPropertyQuota": true est défini, la réponse inclut un propertyQuota objet dans lequel chaque champ contient un QuotaStatus avec consumed et remaining entiers :

{
  "dimensionHeaders": [
    { "name": "country" }
  ],
  "metricHeaders": [
    { "name": "activeUsers", "type": "TYPE_INTEGER" }
  ],
  "rows": [
    {
      "dimensionValues": [{ "value": "United States" }],
      "metricValues": [{ "value": "4820" }]
    }
  ],
  "propertyQuota": {
    "tokensPerDay": {
      "consumed": 1,
      "remaining": 199999
    },
    "tokensPerHour": {
      "consumed": 1,
      "remaining": 39999
    },
    "concurrentRequests": {
      "consumed": 0,
      "remaining": 10
    },
    "serverErrorsPerProjectPerHour": {
      "consumed": 0,
      "remaining": 10
    },
    "potentiallyThresholdedRequestsPerHour": {
      "consumed": 0,
      "remaining": 120
    },
    "tokensPerProjectPerHour": {
      "consumed": 1,
      "remaining": 13999
    }
  }
}

Chaque champ de propertyQuota correspond à un quota dans les quotas de propriété Analytics. Le coût des jetons d'une seule requête API est déduit simultanément de tokensPerDay, tokensPerHour et tokensPerProjectPerHour. Si un bucket de quota atteint 0, les requêtes suivantes adressées à cette propriété renvoient une erreur 429 RESOURCE_EXHAUSTED.

Bonnes pratiques pour éviter les erreurs 429 RESOURCE_EXHAUSTED
  • Surveillez dynamiquement les sold1}es : inspectez propertyQuota.tokensPerProjectPerHour.remaining et propertyQuota.tokensPerHour.remaining dans les réponses, puis limitez ou mettez en pause les tâches d'arrière-plan non urgentes lorsque le nombre de jetons restants est inférieur à un seuil de sécurité .remaining
  • Regroupez les requêtes associées : utilisez batchRunReports ou batchRunPivotReports pour regrouper jusqu'à cinq rapports dans un seul appel HTTP et réduire la surcharge des allers-retours HTTP (notez que chaque rapport d'un lot est toujours comptabilisé individuellement dans les quotas de jetons et concurrentRequests).
  • Réduisez la complexité et la cardinalité des requêtes : limitez les requêtes aux dimensions et métriques dont vous avez besoin, raccourcissez les dateRanges lorsque cela est possible et évitez de combiner plusieurs dimensions à cardinalité élevée (telles que pagePath ou fullPageUrl) dans les requêtes d'interrogation fréquentes.
  • Contrôlez la simultanéité des requêtes : mettez les requêtes en file d'attente ou limitez la taille du pool de nœuds de calcul afin que les requêtes en cours restent inférieures à la limite concurrentRequests (10 pour Standard, 50 pour Analytics 360).
  • Implémentez un intervalle exponentiel entre les tentatives avec des limites de tentatives : si une requête échoue avec 429 RESOURCE_EXHAUSTED, 500 INTERNAL, ou 503 UNAVAILABLE, réessayez en utilisant un intervalle exponentiel entre les tentatives tronqué, comme décrit dans la section Réponses d'erreur.

Consommation et surveillance des jetons de chat

Pour les requêtes chat Ask Advisor, les jetons représentent les coûts de calcul, de raisonnement et de récupération des données sous-jacentes du modèle. La consommation de jetons de chat est influencée par les facteurs suivants :

  • Portée analytique et des requêtes : complexité et étendue de l'analyse demandée.
  • Jetons d'entrée et de sortie du modèle : volume de données contextuelles traitées et récit de réponse généré.
  • Jetons de réflexion : étapes de raisonnement du modèle nécessaires pour synthétiser les résultats.
  • Latence d'exécution : temps de traitement requis pour les explorations de données en plusieurs étapes.

Pour surveiller l'utilisation des jetons de chat, définissez "returnPropertyQuota": true dans votre ChatRequest. La réponse inclut l' PropertyChatQuota objet contenant les tokensPerDay et les tokensPerHour champs avec les soldes consommés et restants.