Ограничения и квоты API

В Google Ads API действуют ограничения на операции API, например на количество операций, которые можно отправить в одном запросе mutate. В таблице ниже приведены некоторые важные ограничения и квоты.

Тип запроса, ограничение и код ошибки
Операции с уровнем доступа Test 15 000 операций API в день для тестовых аккаунтов. RESOURCE_EXHAUSTED
Операции с уровнем доступа "Исследователь" 2880 операций API в день для рабочих аккаунтов
15 000 операций API в день для тестовых аккаунтов
RESOURCE_EXHAUSTED
Операции с базовым уровнем доступа 15 000 операций API в день для тестовых и рабочих аккаунтов. RESOURCE_EXHAUSTED
Операции, доступные пользователям со стандартным доступом Неограниченное количество операций API в день как для тестовых, так и для рабочих аккаунтов. Н/Д
Запросы mutate 10 000 операций изменения на запрос. TOO_MANY_MUTATE_OPERATIONS
Запросы к сервису планирования 1 запрос в секунду RESOURCE_EXHAUSTED
Запросы к Conversion Upload Service 2000 конверсий на запрос; TOO_MANY_CONVERSIONS_IN_REQUEST
Запросы на обслуживание, связанные с оплатой и бюджетом аккаунта 1 операция на запрос mutate TOO_MANY_MUTATE_OPERATIONS

Дневные ограничения на операции API

Суточные лимиты на использование API зависят от количества операций API, выполненных в вашем проекте Google Cloud. Операции API – это сумма запросов Search и SearchStream, отдельных операций изменения и других запросов сервиса. Ограничения на количество ежедневных операций API зависят от уровня доступа к API вашего проекта Google Cloud. В руководстве по уровням доступа и допустимому использованию указаны ограничения на количество операций API для каждого уровня доступа.

Запросы, нарушающие эти ограничения, отклоняются с ошибкой RESOURCE_EXHAUSTED.

Ограничения gRPC

Все клиентские библиотеки Google Ads API используют gRPC для создания запросов и ответов. По умолчанию размер сообщения gRPC составляет 4 МБ, но в наших клиентских библиотеках максимальный размер сообщения равен 64 МБ, что позволяет повысить эффективность.

Ответы не должны превышать этот лимит. Например, поисковый запрос, включающий много полей, может сгенерировать ответ, размер которого превышает 64 МБ. Чтобы избежать этого ограничения, вы можете уменьшить количество выбранных полей или использовать потоковую передачу. Если вы используете метод mutate, отправляйте меньше операций в запросе.

Запросы, нарушающие это ограничение, не будут генерировать GoogleAdsError, но будут генерировать ошибку RESOURCE_EXHAUSTED (код gRPC 8 / HTTP 429). Ознакомьтесь со списком кодов ошибок и сообщений gRPC.

Запросы mutate

Помимо того, что запрос mutate учитывается в дневной квоте пользователя,он не может содержать более 10 000 операций mutate. Запросы, нарушающие это ограничение, отклоняются с ошибкой TOO_MANY_MUTATE_OPERATIONS.

Дополнительные ограничения и рекомендации для определенных сервисов и типов запросов описаны ниже.

Поисковые запросы

Запрос Search или SearchStream считается одной операцией в рамках суточной квоты пользователя. Один запрос SearchStream считается одной операцией API независимо от количества пакетов.

Запросы с разбивкой на страницы

Запросы с разбивкой на страницы (например, содержащие действительный параметр next_page_token) не учитываются в суточной квоте пользователя на операции. Однако запросы на разбиение по страницам, содержащие недействительный токен страницы или токен с истекшим сроком действия, вызовут исключение и будут учитываться в дневной квоте на операции.

Подробнее о разбивке результатов на страницы…

Другие типы запросов

Запрос, не являющийся запросом Mutate, Search или SearchStream, считается одной операцией в рамках суточной квоты пользователя.

Вот несколько примеров таких запросов:

Запросы, возвращающие исключения API

Запросы, отклоненные с ошибкой GoogleAdsFailure, по-прежнему учитываются в суточной квоте пользователя.

Запросы, которые не удалось выполнить, но которые не возвращают ошибку GoogleAdsFailure (например, из-за ошибки на уровне сети), не учитываются в суточной квоте пользователя, поскольку они не доходят до сервиса. Примером этого является сбой сетевого подключения.

Сервис планирования ключевых слов

Из-за стоимости и сложности для перечисленных ниже методов Keyword Planning service действуют отдельные ограничения, не распространяющиеся на другие типы запросов.

При создании плана ключевых слов учитывайте следующие ограничения:

Объект плана ключевых слов Максимальное количество
KeywordPlan за аккаунт 10 000
KeywordPlanAdGroup за KeywordPlan 200
KeywordPlanAdGroupKeyword за KeywordPlan 10 000
KeywordPlanCampaignKeyword (минус-слова) на KeywordPlan 1000
KeywordPlanCampaign за KeywordPlan 1

Сервис статистики аудитории

Для перечисленных ниже методов AudienceInsightsService действуют определенные квоты.

Сервис загрузки конверсий

Сервис загрузки корректировок конверсий

Правила ценности конверсий

  • В одном аккаунте может быть не более 100 000 правил ценности конверсий.

    Запросы, нарушающие это ограничение, отклоняются с ошибкой ResourceCountLimitExceededError.ACCOUNT_LIMIT.

Если в аккаунте уже есть ConversionValueRuleSet с attachment_type CUSTOMER, то, чтобы новые правила ценности конверсий начали действовать, их нужно добавить в этот набор. Если такого набора правил ценности конверсий нет, создайте его и добавьте в него правила ценности конверсий.

Сервисы для работы с платежами и бюджетом аккаунта

  • Изменения можно вносить только в аккаунты, для которых настроена кредитная линия.

    Запросы, нарушающие это ограничение, отклоняются с ошибкой MUTATE_NOT_ALLOWED.

  • В запросах mutate разрешена только одна операция.

    Запросы, нарушающие это ограничение, отклоняются с ошибкой TOO_MANY_MUTATE_OPERATIONS.

  • Между изменениями бюджета аккаунта (AccountBudget или AccountBudgetProposal) должно пройти не менее 12 часов. Если вы внесете изменения раньше, чем через 12 часов, это может привести к неустранимым ошибкам, которые сможет исправить только специалист по работе с аккаунтом Google Рекламы.

Приглашения в клиентские аккаунты

Новых пользователей можно приглашать в существующие клиентские аккаунты с помощью CustomerUserAccessInvitationService. Поскольку эта функция отправляет электронные письма с приглашениями другим пользователям, существует вероятность злоупотребления ею, поэтому существуют ограничения на ее поведение:

  • Пользователи не могут получить более одного приглашения в один и тот же клиентский аккаунт. Если вы попытаетесь отправить приглашение пользователю, у которого уже есть ожидающее приглашение, появится ошибка EMAIL_ADDRESS_ALREADY_HAS_PENDING_INVITATION.

  • В клиентском аккаунте не может быть больше 70 приглашений, ожидающих рассмотрения. Если отправленный запрос превышает это значение, возвращается ошибка PENDING_INVITATIONS_LIMIT_EXCEEDED.

Пользовательские данные

Управление пользовательскими данными осуществляется с помощью UserDataService и OfflineUserDataJobService.

Каждый объект UserData в операции create или remove относится к одному конечному пользователю. Поле user_identifiers в одном объекте UserData может содержать не более 20 идентификаторов. Если в одном объекте UserData будет больше элементов, возникнет ошибка OfflineUserDataJobError.TOO_MANY_USER_IDENTIFIERS или UserDataError.TOO_MANY_USER_IDENTIFIERS.

Как обрабатывать пользователей с более чем 20 идентификаторами

Если у одного конечного пользователя больше 20 идентификаторов, которые нужно загрузить, распределите их по нескольким объектам UserData. Чтобы Google мог связать все эти идентификаторы с одним и тем же конечным пользователем, каждый объект UserData для этого пользователя должен включать хотя бы один общий user_identifier, например один и тот же hashed_email, hashed_phone_number или third_party_user_id. Google использует эти общие идентификаторы, чтобы связать и объединить информацию, полученную в результате отдельных операций UserData, с нужным профилем конечного пользователя.

Если вы используете информацию, позволяющую идентифицировать личность, например хешированные адреса электронной почты или номера телефонов, убедитесь, что они нормализованы и хешированы в соответствии с требованиями Google Ads API (SHA-256, строчные буквы, без пробелов), чтобы предотвратить сбои связывания.

Например, если у пользователя 30 адресов электронной почты, вы можете отправить два объекта UserData с общим значением third_party_user_id. В первый объект добавьте thirdPartyUserId и адреса с 1 по 19, чтобы не превысить ограничение в 20 идентификаторов, а во второй – thirdPartyUserId и адреса с 20 по 30.

{
  "userIdentifiers": [
    { "thirdPartyUserId": "user123" },
    { "hashedEmail": "SHA256_OF_EMAIL_1" },
    // Hashed emails 2 through 18 are omitted here.
    { "hashedEmail": "SHA256_OF_EMAIL_19" }
  ]
}
{
  "userIdentifiers": [
    { "thirdPartyUserId": "user123" },
    { "hashedEmail": "SHA256_OF_EMAIL_20" },
    // Hashed emails 21 through 29 are omitted here.
    { "hashedEmail": "SHA256_OF_EMAIL_30" }
  ]
}

Общее ограничение для user_identifiers во всех операциях в одном AddOfflineUserDataJobOperationsRequest составляет 100 000 (OfflineUserDataJob может принимать несколько вызовов AddOfflineUserDataJobOperationsRequest, до рекомендуемого максимума в 1 000 000 операций на задание). При синхронной загрузке с помощью UploadUserDataRequest (UserDataService.UploadUserData) каждый запрос ограничен максимум 10 операциями и 100 user_identifiers.

Другие типы ограничений

Если в повторяющемся поле, например в списке операций, слишком много элементов, может возникнуть ошибка REQUEST_SIZE_LIMIT_EXCEEDED. Это же сообщение об ошибке может появляться и по другим причинам.

Если вы столкнулись с этим ограничением и отправляете запросы, в которых используется повторяющееся поле, попробуйте уменьшить количество элементов в нем, разделив список операций между несколькими запросами mutate.

При выполнении запроса GAQL максимальное количество элементов в предложении IN составляет 20 000. Если вы превысите это ограничение, то получите ошибку FILTER_HAS_TOO_MANY_VALUES.