Google Analytics · Rate Limits

Google Analytics Rate Limits

Google Analytics rate limiting is quota-based and split by service. The Data API charges variable-cost "tokens" per GA4 property in three independent categories (Core, Realtime, Funnel), with Analytics 360 properties getting 10x the Standard ceilings. The Admin API uses flat requests-per-minute and writes-per-minute counters and signals exhaustion with 403, not 429. The Measurement Protocol has an hourly request ceiling and hard per-event structural caps.

Google Analytics Rate Limits is the machine-readable rate-limit profile for Google Analytics on the APIs.io network, conforming to the API Commons Rate Limits specification.

It captures 26 rate-limit definitions, measuring tokens_per_day, tokens_per_hour, concurrent_requests, errors_per_hour, and error_responses.

The profile also includes 6 backoff/retry policies defined and response codes documented for throttled, quotaExceeded, adminApiQuotaExceeded, serverError, and unavailable.

Tagged areas include Analytics, Data, Google, Web Analytics, and Reporting.

26 Limits Throttle: 429 Quota: 429
AnalyticsDataGoogleWeb AnalyticsReportingRate Limiting

Limits

Core tokens — daily (Standard) property
tokens_per_day · day
200000
Applies to runReport, runPivotReport, batchRunReports, batchRunPivotReports, runAccessReport, getMetadata, checkCompatibility, createAudienceExports. Refreshes at midnight Pacific.
Core tokens — hourly (Standard) property
tokens_per_hour · hour
40000
Core tokens — hourly per project/property (Standard) project/property
tokens_per_hour · hour
14000
Core concurrent requests (Standard) property
concurrent_requests
10
Core server errors per hour (Standard) project/property
errors_per_hour · hour
10
500 and 503 responses only. When exhausted, ALL requests from that project to that property are blocked.
Core tokens — daily (Analytics 360) property
tokens_per_day · day
2000000
Core tokens — hourly (Analytics 360) property
tokens_per_hour · hour
400000
Core tokens — hourly per project/property (Analytics 360) project/property
tokens_per_hour · hour
140000
Core concurrent requests (Analytics 360) property
concurrent_requests
50
Core server errors per hour (Analytics 360) project/property
errors_per_hour · hour
50
Realtime tokens — daily (Standard / 360) property
tokens_per_day · day
200000
runRealtimeReport only. Independent bucket from Core.
Realtime tokens — hourly (Standard / 360) property
tokens_per_hour · hour
40000
Realtime tokens — hourly per project/property (Standard / 360) project/property
tokens_per_hour · hour
14000
Realtime concurrent requests (Standard / 360) property
concurrent_requests
10
Realtime server errors per hour (Standard / 360) project/property
errors_per_hour · hour
10
Funnel tokens — daily (Standard / 360) property
tokens_per_day · day
200000
runFunnelReport only (v1alpha). Independent bucket from Core and Realtime.
Funnel tokens — hourly (Standard / 360) property
tokens_per_hour · hour
40000
Funnel concurrent requests (Standard / 360) property
concurrent_requests
10
Client errors per project per property project/property
error_responses · 15 minutes
10000
Added 2024-06-28. Counts every response that is neither 200 nor 500 — authentication failures and incompatible dimension/metric combinations included. Exceeding it temporarily blocks the project from the property until the window closes.
Potentially thresholded requests per hour property
requests_per_hour · hour
120
Requests using userAgeBracket, userGender, brandingInterest, audienceId or audienceName. Thresholding prevents inferring demographics of individual users.
Requests per minute project
requests_per_minute · minute
1200
Quota refills every 60 seconds. Exhaustion returns HTTP 403, not 429.
Requests per minute per user user
requests_per_minute · minute
600
Writes per minute project
writes_per_minute · minute
600
Any create, patch, delete, archive or update method charges BOTH the request and the write quota.
Writes per minute per user user
writes_per_minute · minute
180
User deletions per day per property property
deletions_per_day · day
500
Non-conversion requests per hour property
requests_per_hour · hour
100000000
100 million per property per hour. Beyond it the Measurement Protocol SILENTLY ignores all non-conversion requests for the rest of the hour — no error, no status code. Does not apply to Analytics 360 properties.

Policies

Token-based cost
Token cost is computed at execution time and varies with row count, number of dimensions and metrics, filter complexity, date range length, dimension cardinality and the property's event volume. Most requests cost 10 tokens or fewer. There is no way to pre-calculate cost; send returnPropertyQuota=true to observe it.
Independent quota categories
Core, Realtime and Funnel each have their own buckets. A request consumes exactly one category.
Cross-quota interaction
Every request charges both "tokens per property per hour" and "tokens per project per property per hour". A property must be queried by more than three projects before the per-property ceiling binds before the per-project one.
Bounded backoff
Retry with exponential backoff AND a retry limit. Retries are self-limiting: 5xx responses charge the server-error quota and everything else charges the client-error quota, so unbounded retry gets the project blocked.
Quota attribution
The global quotaUser query parameter shards per-user quota when one server calls on behalf of many end users.
Sampling
Standard properties may return sampled reports at high cardinality. Analytics 360 gets higher sampling limits (1 billion events) and an UNSAMPLED setting on report tasks.