The Google Ads API enforces limits on API operations, such as the number of operations
that can be sent in a single mutate request. The table below summarizes some of
the important limits and quotas to be aware of.
Daily API operation limits
Daily API usage limits are based on the number of
API
operations
made per developer token. API
operations are the total sum of get requests and mutate operations. The limits
for daily API operations depends on the access level of the developer token. The
Access Levels and Permissible Use guide
outlines the
specific API operation limits for each access level.
Requests that violate these limits are rejected with the error:
RESOURCE_EXHAUSTED
.
gRPC limitations
All of the Google Ads API
client libraries
use
gRPC
for generating requests and responses. By default, gRPC has a
message size of 4 MB, but our client libraries set the max message size to
64 MB
in order to increase efficiency.
Responses must not exceed this limit. For example, a search request that
includes a lot of fields may generate a response that exceeds 64 MB in size. To
avoid this limit, you can reduce the number of selected fields, reduce the page
size, or use
streaming
. For mutates, send fewer
operations per request.
Requests that violate this limitation will
not
generate a
GoogleAdsError
, but will generate a
429 Resource Exhausted
gRPC error. Refer to the
list of gRPC error codes and
messages
.
Mutate requests
In addition to counting against the user’s daily operation quota, a mutate
request cannot contain more than
10,000
operations per request.
Requests that violate this limitation are rejected with the error:
TOO_MANY_MUTATE_OPERATIONS
.
Additional limits and considerations for specific services and request types are
outlined below.
Search requests
A
Search
or
SearchStream
request counts as one operation against the user's
daily operation quota. One
SearchStream
request counts as one API operation
irrespective of the number of batches.
Paginated requests
Paginated requests (for example, requests that contain a valid
next_page_token
) are not counted against a user's daily operation quota.
However, pagination requests that contain an expired or invalid page token will
generate an exception and will count against the daily operation quota.
Requests that are paginated, such as search requests, are also subject to the
Page size cannot exceed 10,000 rows
limitation and are rejected if it violates
this limit, with the error:
INVALID_PAGE_SIZE
.
For more details on pagination, refer to
Paging through
results
.
Other types of requests
A request that is not a
Get
,
Mutate
,
Search
, or
SearchStream
request
counts as one operation against the user's daily operation quota.
A few examples of such requests include:
Requests that return API exceptions
Requests that are rejected with a
GoogleAdsFailure
still count against the
user's daily operation quota.
Requests that fail but don't return a
GoogleAdsFailure
, such as from an error at
the network level, won't count against the user's daily operation quota
since the requests would never reach the service. An example of this is a
network connectivity failure.
Planning services
Due to cost and complexity, the Planning service methods listed below are
subject to separate limits from other types of requests.
Limited to
1
request per second per CID or developer token:
Requests that violate these limitations are rejected with the error:
RESOURCE_EXHAUSTED
.
1 QPS is calculated as 60 requests per 60 seconds.
Keep in mind these limits when creating a keyword plan.
Conversion upload service
Conversion adjustment upload service
Billing and account budget services
Mutates can only be made against accounts configured for monthly invoicing.
Requests that violate this limitation are rejected with the error:
MUTATE_NOT_ALLOWED
.
Only
1
operation is permitted for mutate requests.
Requests that violate this limitation are rejected with the error:
TOO_MANY_MUTATE_OPERATIONS
.
You should wait at least
12
hours between budget order changes to the
same account. Making changes before 12 hours have elapsed may result in
unrecoverable failures which can only be resolved by your Google Ads account
representative.
Invitations to customer accounts
New users can be invited to existing client accounts with the
CustomerUserAccessService
. Because
this functionality sends invitation emails to other users, it has the potential
to be misused, and thus there are limitations to its behavior:
User data
User data is managed with the
UserDataService
and the
OfflineUserDataJobService
.
In a given create/remove
UserData
operation, each
set of
user_identifiers
should be specific to a single user.
To enforce this,
an
OfflineUserDataJobError.TOO_MANY_USER_IDENTIFIERS
or
UserDataError.TOO_MANY_USER_IDENTIFIERS
error is returned when there are more than 20
user_identifiers
in a
UserData
set.
Other types of limits
A repeated field, such as a list of operations, that has too many items in a
request can incur the error:
REQUEST_SIZE_LIMIT_EXCEEDED
.
This same error message can also be due to other issues.
If you encounter this limitation and are making requests that use a repeated
field, try reducing the number of items in the repeated field by deploying a
list of operations in a mutate request.
When making a
GAQL
query, the maximum number of items
within an
IN
clause is 20,000. If you exceed that limit, a
FILTER_HAS_TOO_MANY_VALUES
error is returned.