API Limits and Quotas  |  Google Ads API  |  Google for Developers (2024)

The Google Ads API enforces limits on API operations, such as the number of operationsthat can be sent in a single mutate request. The table below summarizes some ofthe important limits and quotas to be aware of.

Request Type, Limitation, and Error Code
Paginated requests 10,000 rows per page INVALID_PAGE_SIZE
Operations with Basic Access 15,000 API operations per day RESOURCE_EXHAUSTED
Mutate requests 10,000 operations per request TOO_MANY_MUTATE_OPERATIONS
Planning Service requests 1 QPS RESOURCE_EXHAUSTED
Conversion Upload Service requests 2,000 conversions per request TOO_MANY_CONVERSIONS_IN_REQUEST
Billing and Account Budget Service requests 1 operation per mutate request TOO_MANY_MUTATE_OPERATIONS

Daily API operation limits

Daily API usage limits are based on the number of APIoperations made per developer token. APIoperations are the total sum of get requests and mutate operations. The limitsfor daily API operations depends on the access level of the developer token. TheAccess Levels and Permissible Use guide outlines thespecific 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 usegRPC for generating requests and responses. By default, gRPC has amessage size of 4 MB, but our client libraries set the max message size to64 MB in order to increase efficiency.

Responses must not exceed this limit. For example, a search request thatincludes a lot of fields may generate a response that exceeds 64 MB in size. Toavoid this limit, you can reduce the number of selected fields, reduce the pagesize, or use streaming. For mutates, send feweroperations per request.

Requests that violate this limitation will not generate aGoogleAdsError, but will generate a429 Resource Exhausted gRPC error. Refer to the list of gRPC error codes andmessages.

Mutate requests

In addition to counting against the user’s daily operation quota, a mutaterequest 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 areoutlined below.

Search requests

A Search or SearchStream request counts as one operation against the user'sdaily operation quota. One SearchStream request counts as one API operationirrespective of the number of batches.

Paginated requests

Paginated requests (for example, requests that contain a validnext_page_token) are not counted against a user's daily operation quota.However, pagination requests that contain an expired or invalid page token willgenerate an exception and will count against the daily operation quota.

Requests that are paginated, such as search requests, are also subject to thePage size cannot exceed 10,000 rows limitation and are rejected if it violatesthis limit, with the error:INVALID_PAGE_SIZE.

For more details on pagination, refer to Paging throughresults.

Other types of requests

A request that is not a Get, Mutate, Search, or SearchStream requestcounts as one operation against the user's daily operation quota.

A few examples of such requests include:

  • BatchJobService.ListMutateJobResults
  • ConversionUploadService.UploadCallConversions
  • ConversionUploadService.UploadClickConversions
  • OfflineUserDataJobService.AddOfflineUserDataJobOperations
  • OfflineUserDataJobService.CreateOfflineUserDataJob
  • UserDataService.UploadUserData

Requests that return API exceptions

Requests that are rejected with aGoogleAdsFailure still count against theuser's daily operation quota.

Requests that fail but don't return aGoogleAdsFailure, such as from an error atthe network level, won't count against the user's daily operation quotasince the requests would never reach the service. An example of this is anetwork connectivity failure.

Planning services

Due to cost and complexity, the Planning service methods listed below aresubject to separate limits from other types of requests.

  • Limited to 1 request per second per CID or developer token:

    • KeywordPlanService.GetKeywordPlan
    • KeywordPlanService.GenerateHistoricalMetrics
    • KeywordPlanService.GenerateForecastMetrics

    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.

Keyword Plan ObjectMaximum Number
KeywordPlan per account10,000
KeywordPlanAdGroup per KeywordPlan200
KeywordPlanAdGroupKeyword per KeywordPlan10,000
KeywordPlanCampaignKeyword (negative keywords)1,000
KeywordPlanCampaign per KeywordPlan1

Conversion upload service

  • Limited to 2,000 call or click conversions per request:

    • ConversionUploadService.UploadCallConversions
    • ConversionUploadService.UploadClickConversions

    Requests that violate these limits are rejected with the error:TOO_MANY_CONVERSIONS_IN_REQUEST.

Conversion adjustment upload service

  • Limited to 2,000 conversion adjustments per request:

    • ConversionAdjustmentUploadService.UploadConversionAdjustments

    Requests that violate these limits are rejected with the error:TOO_MANY_ADJUSTMENTS_IN_REQUEST.

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 thesame account. Making changes before 12 hours have elapsed may result inunrecoverable failures which can only be resolved by your Google Ads accountrepresentative.

Invitations to customer accounts

New users can be invited to existing client accounts with theCustomerUserAccessService. Becausethis functionality sends invitation emails to other users, it has the potentialto be misused, and thus there are limitations to its behavior:

  • Users cannot receive more than one pending invitation for the same clientaccount. If a subsequent request is made to send an invitation to a userthat already has a pending invitation, this error is returned:ACCESS_INVITATION_ERROR_EMAIL_ADDRESS_ALREADY_HAS_PENDING_INVITATION.

  • Client accounts cannot have more than 70 invitations pending at one time.If a request is sent that causes this value to be exceeded, this error isreturned:ACCESS_INVITATION_ERROR_PENDING_INVITATIONS_LIMIT_EXCEEDED.

User data

User data is managed with theUserDataService and theOfflineUserDataJobService.In a given create/remove UserData operation, eachset of user_identifiersshould be specific to a single user.

To enforce this,an OfflineUserDataJobError.TOO_MANY_USER_IDENTIFIERSorUserDataError.TOO_MANY_USER_IDENTIFIERSerror is returned when there are more than 20 user_identifiers in aUserData set.

Other types of limits

A repeated field, such as a list of operations, that has too many items in arequest 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 repeatedfield, try reducing the number of items in the repeated field by deploying alist of operations in a mutate request.

When making a GAQL query, the maximum number of itemswithin an IN clause is 20,000. If you exceed that limit, aFILTER_HAS_TOO_MANY_VALUESerror is returned.

API Limits and Quotas  |  Google Ads API  |  Google for Developers (2024)
Top Articles
Latest Posts
Article information

Author: Maia Crooks Jr

Last Updated:

Views: 5806

Rating: 4.2 / 5 (63 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Maia Crooks Jr

Birthday: 1997-09-21

Address: 93119 Joseph Street, Peggyfurt, NC 11582

Phone: +2983088926881

Job: Principal Design Liaison

Hobby: Web surfing, Skiing, role-playing games, Sketching, Polo, Sewing, Genealogy

Introduction: My name is Maia Crooks Jr, I am a homely, joyous, shiny, successful, hilarious, thoughtful, joyous person who loves writing and wants to share my knowledge and understanding with you.