В этом документе перечислены квоты, которые применяются к Merchant API.
В Merchant API используются квоты, чтобы обеспечить стабильную и справедливую работу для всех пользователей. Квоты не позволяют одному пользователю API создавать чрезмерную нагрузку на систему, обеспечивая высокую производительность. Знать квоты необходимо, чтобы управлять данными и развивать бизнес в Google.
Общие понятия
Квоты Merchant API управляются с помощью групп квот.
Методы API сопоставляются с группами квот. Структура этого сопоставления может быть разной:
- Один метод на группу. Некоторые группы квот применяются к одному методу API.
Например, у метода
accounts.dataSources.listесть собственная группа квот. - Несколько методов в группе (объединение). Часто связанные методы объединяются в одну группу квот. Все методы в этой группе имеют одинаковые ограничения на количество запросов в день и в минуту. Примеры:
- Группировка всех операций чтения для связанных методов и ресурсов, например
merchant-accounts-read-methods. - Группировка всех операций записи для связанных методов и ресурсов, например
merchant-accounts-write-methods.
- Группировка всех операций чтения для связанных методов и ресурсов, например
Каждый вызов метода учитывается один раз, независимо от его типа. Запрос list, содержащий 250 объектов, учитывается как один запрос, а не как 250 запросов get.
Встроенная пакетная обработка HTTP не влияет на квоту. Каждый отдельный запрос в пакете учитывается как один запрос в рамках квоты. Например, пакетный запрос, содержащий 500 запросов insert, будет оплачиваться как 500 отдельных запросов метода insert.
Исключение для пакетной обработки в определенном регионе. Специализированные методы пакетной обработки в определенном регионе (batchCreate, batchUpdate, batchDelete) считаются одним вызовом API в группе квот merchant_regions независимо от количества операций в регионе, содержащихся в полезной нагрузке.
Чтобы эффективно управлять интеграцией, вам нужно ознакомиться с квотами, связанными с каждым методом API, который вы планируете использовать. Эти сведения можно найти в методе списка квот. Подробную информацию вы найдете в разделе Мониторинг и видимость.
Правила обновления
Merchant API обеспечивает соблюдение следующих правил в отношении обновлений:
- По умолчанию вы можете обновлять информацию о товарах до двух раз в день. Чтобы соблюдать квоту на количество минут, равномерно распределите звонки в течение дня.
- По умолчанию вы можете обновлять дочерние аккаунты не более двух раз в день. Ваша ежедневная квота на обновление дочерних аккаунтов – это совокупный лимит, основанный на общем количестве разрешенных дочерних аккаунтов.
- По умолчанию методы источников данных для дочерних аккаунтов, например
listилиcreate, можно вызывать не более двух раз в день для каждого дочернего аккаунта.
Квоты на частоту запросов
В каждой группе квот есть два типа лимитов (и ежедневное использование):
- Дневной лимит (
quotaLimit). Максимальное количество запросов, разрешенное в день. Дневные квоты сбрасываются в 12:00 пополудни UTC. - Лимит в минуту (
quotaMinuteLimit). Максимальное количество запросов, разрешенное в минуту. Этот параметр контролирует скорость запросов. Квоты в минуту используют скользящее окно, в котором период действия начинается с момента первого вызова API для определенного метода и ресурса. Например, если вы сделаете вызов в 10:01:30, то квота на минуту для этого метода будет действовать до 10:02:30. - Ежедневное использование (
quotaUsage). Количество запросов, которые уже были сделаны и учтены в дневном ограничении за текущий день. Если поле отсутствует, значит для этой группы ещё не использовалась квота.
Три поля, описанные выше (quotaLimit, quotaMinuteLimit и quotaUsage), можно найти в ответе метода quotas.list.
Конкретные значения дневных и минутных лимитов значительно различаются в разных группах квот. Операции с большим ожидаемым объемом или низкой системной стоимостью, например чтение данных о товарах, обычно имеют более высокие лимиты. В то же время для более сложных или конфиденциальных операций, например изменения аккаунта, могут быть установлены более низкие лимиты.
Распределение квот и иерархия
В этом разделе рассказывается, от чьего имени Merchant API отслеживает и применяет использование квоты:
Как правило, квота взимается с пользователя, который отправляет запрос к API.
- Отдельные аккаунты. Если для аутентификации вызова API используется отдельный аккаунт, запрос учитывается в квоте этого аккаунта.
- Пример. Продавец Магазин обуви А (идентификатор аккаунта: 12345) проходит аутентификацию с помощью собственного сервисного аккаунта, чтобы вызвать метод
products.insert, предназначенный для его аккаунта (accounts/12345). Квота расходуется из пула квот Магазина обуви А.
- Пример. Продавец Магазин обуви А (идентификатор аккаунта: 12345) проходит аутентификацию с помощью собственного сервисного аккаунта, чтобы вызвать метод
- Расширенные аккаунты. При аутентификации в качестве расширенного аккаунта квота расходуется из пула расширенного аккаунта, даже если целевым является дочерний аккаунт.
- Пример. Агентство Retail Management Account (идентификатор расширенного аккаунта: 12345) управляет дочерним аккаунтом Clothing Store B (идентификатор аккаунта: 11111).
Агентство проходит аутентификацию с помощью собственных учетных данных и вызывает
products.insert, предназначенный для магазина одежды Б (accounts/11111). Квота расходуется из пула родительского агентства (идентификатор расширенного аккаунта: 12345), а не из пула дочернего аккаунта.
- Пример. Агентство Retail Management Account (идентификатор расширенного аккаунта: 12345) управляет дочерним аккаунтом Clothing Store B (идентификатор аккаунта: 11111).
Агентство проходит аутентификацию с помощью собственных учетных данных и вызывает
- Дочерние аккаунты. Если вызовы API аутентифицируются с помощью учетных данных дочернего аккаунта, квота списывается из индивидуального пула этого аккаунта. Он работает так же, как обычный аккаунт, хотя им управляет родительский расширенный аккаунт.
- Пример. Если Магазин одежды Б (идентификатор аккаунта: 11111) проходит аутентификацию с помощью учетных данных, настроенных специально для его дочернего аккаунта, чтобы вызвать
products.insert, предназначенный для его собственного аккаунта (accounts/11111), квота расходуется из индивидуального пула квот Магазина одежды Б, а пул родительского агентства остается нетронутым.
- Пример. Если Магазин одежды Б (идентификатор аккаунта: 11111) проходит аутентификацию с помощью учетных данных, настроенных специально для его дочернего аккаунта, чтобы вызвать
Исключения из общих правил
Существует несколько исключений из общих правил распределения квот:
- Accounts.list:
Квота для этого метода взимается с аутентифицированного пользователя или сервисного аккаунта, выполняющего вызов, а не с идентификатора аккаунта Merchant Center.
Использование квоты не будет отображаться на стандартной странице диагностики Merchant Center API.
Если у вас расширенный аккаунт, рекомендуем использовать метод
accounts.listSubaccounts, который учитывается в квоте расширенных аккаунтов. - Методы устранения проблем: эти методы всегда учитываются в квоте аккаунта, для которого запрашиваются проблемы, даже если запрос аутентифицируется другим аккаунтом.
Иерархия распределения
Сервисы сравнения цен (ССЦ) – это сайты, на которых собраны предложения товаров и с которых пользователи переходят на сайты продавцов, чтобы совершить покупку. При вызовах API квоты применяются к определенной группе ССЦ, домену ССЦ, аккаунту или дочернему аккаунту, для которых вы проходите аутентификацию.
Примеры:
- Группа ССЦ Europe Shopping Group (идентификатор аккаунта: 10001) хочет создать список связанных с ней доменов ССЦ. При аутентификации с помощью собственных учетных данных для выполнения этого вызова API квота расходуется непосредственно из пула квот Europe Shopping Group.
- Домен ССЦ TopDeals CSS (идентификатор аккаунта: 20002) проходит аутентификацию, чтобы вызвать метод, предназначенный для одного из связанных аккаунтов продавца (
accounts/30003), и назначить ярлык. Квота расходуется из пула квот ССЦ TopDeals, а не из пула аккаунта продавца.
Торговые площадки. Это онлайн-платформы, на которых размещаются товары нескольких продавцов. Они работают как специальные расширенные аккаунты, в которых можно создавать отдельные дочерние аккаунты для каждого продавца.
На схеме ниже показана иерархия групп ССЦ, ССЦ, торговых площадок, расширенных аккаунтов, отдельных аккаунтов и дочерних аккаунтов.

Автоматическая корректировка квоты
В Merchant API есть система автоматического управления квотами для определенных сервисов. Она корректирует лимиты квот для растущих продавцов в зависимости от использования, количества предложений и размера аккаунта. Merchant API пересчитывает эти квоты ежедневно.
В автоматическую корректировку квот входят следующие группы:
Сервисы для работы с товарами
- Все группы квот для методов, связанных с ресурсами
productsиproductInputs. - Дневная квота на звонки обычно в два раза больше квоты на предложения. Это означает, что продавцу может потребоваться обновлять информацию о каждом товаре до двух раз в день.
- Отдельные товары можно обновлять чаще, но общее количество вызовов API в день не должно превышать дневную квоту.
Сервисы аккаунтов
- Все группы квот для методов, связанных с различными детализированными ресурсами, относящимися к аккаунту, в Merchant API.
- Дневная квота на вызовы установлена на уровне максимального количества дочерних аккаунтов, разрешенного для этого аккаунта. Это позволяет выполнять до двух вызовов чтения в день для каждого дочернего аккаунта.
Сервисы источников данных
- Все группы квот для методов, связанных с ресурсами источников данных в Merchant API, например
listилиcreate, которые расширенный аккаунт выполняет в своих дочерних аккаунтах. - Квота на количество вызовов в день обычно в два раза превышает количество дочерних аккаунтов, связанных с расширенным аккаунтом. При этом предполагается, что продавец может обновлять источники данных каждого дочернего аккаунта до двух раз в день.
Автоматическая корректировка квот предусмотрена только для сервисов, описанных выше. Для других сервисов установлена квота по умолчанию, и ее можно увеличить только вручную. Подробнее о процессе увеличения квоты…
Что происходит при превышении квот
Если квота превышена, в ответах API и на странице диагностики в аккаунте Merchant Center будут появляться ошибки:
- В минуту:
quota/request_rate_too_high
{
"error": {
"code": 429,
"message": "Quota per minute exceeded. Please distribute your requests over a longer time period. For more information check https://developers.google.com/merchant/api/guides/quotas-limits",
"status": "RESOURCE_EXHAUSTED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "quotaExceeded",
"domain": "merchantapi.googleapis.com",
"metadata": {
"HELP_CENTER_LINK": "https://developers.google.com/merchant/api/guides/quotas-limits",
"REASON": "QUOTA_REQUEST_RATE_TOO_HIGH"
}
}
]
}
}
- В день:
quota/daily_limit_exceeded
{
"error": {
"code": 429,
"message": "Daily request quota exceeded. Please reduce number of requests. For more information check https://developers.google.com/merchant/api/guides/quotas-limits",
"status": "RESOURCE_EXHAUSTED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "quotaExceeded",
"domain": "merchantapi.googleapis.com",
"metadata": {
"HELP_CENTER_LINK": "https://developers.google.com/merchant/api/guides/quotas-limits",
"REASON": "QUOTA_TOO_MANY_REQUESTS"
}
}
]
}
}
Ошибки, перечисленные ниже, связаны с ограничениями Merchant Center и не имеют отношения к квотам Merchant API. Вы можете запросить увеличение лимита товаров, фидов или дочерних аккаунтов.
too_many_items: превышена квота продавцаtoo_many_subaccounts: достигнуто максимальное количество дочерних аккаунтов
Мониторинг и видимость
Чтобы проверить текущие квоты на вызовы и использование для аккаунта, вызовите quotas.list с названием аккаунта.
POST https://merchantapi.googleapis.com/quota/v1/accounts/{ACCOUNT_ID}/quotas
Content-Type: application/json
Authorization: Bearer {ACCESS_TOKEN}
Замените следующее:
ACCOUNT_ID– идентификатор Merchant Center.ACCESS_TOKEN– токен авторизации для вызова API.
При успешном выполнении запроса API возвращает список ресурсов quotaGroups, содержащих ресурс name группы квот, различные квоты и методы, к которым применяется квота группы.
{
"quotaGroups": [
{
"name": "accounts/{ACCOUNT_ID}/quotas/merchant-quota-listquotagroups",
"quotaUsage": "2",
"quotaLimit": "1000",
"methodDetails": [
{
"method": "quotaservice.listquotagroups",
"version": "v1",
"subapi": "quota",
"path": "quota/v1/quotaservice.listquotagroups"
}
],
"quotaMinuteLimit": "10"
},
{
"name": "accounts/{ACCOUNT_ID}/quotas/merchant-commission-group-list",
"quotaLimit": "10000",
"methodDetails": [
{
"method": "commissiongroupservice.listcommissiongroups",
"version": "v1",
"subapi": "youtube",
"path": "youtube/v1/commissiongroupservice.listcommissiongroups"
}
],
"quotaMinuteLimit": "60"
},
{
"name": "accounts/{ACCOUNT_ID}/quotas/merchant-merchantreviews-list",
"quotaLimit": "20000000",
"methodDetails": [
{
"method": "merchantreviewsservice.listmerchantreviews",
"version": "v1",
"subapi": "reviews",
"path": "reviews/v1/merchantreviewsservice.listmerchantreviews"
}
],
"quotaMinuteLimit": "60000"
}
]
}
Как увеличить квоту
Чтобы запросить увеличение квоты, откройте форму обращения в службу поддержки, выберите "Запрос на увеличение квоты" в поле "Проблема или вопрос" и заполните все обязательные поля, в том числе идентификатор Merchant Center, целевые методы и обоснование.
- Для ресурсов с автоматическими квотами (
products,accountsиdatasourcesдля продвинутых аккаунтов): вы можете запросить только временное увеличение квоты для особых случаев, например при запуске на новом рынке или в сезон повышенного спроса. Мы не принимаем запросы на постоянное увеличение квоты для этих типов ресурсов. - Для всех остальных ресурсов без автоматических квот запрашивайте увеличение квот по мере необходимости.
Мы рекомендуем периодически проверять квоты, чтобы убедиться, что их достаточно для вашей реализации, и посмотреть, как они корректируются автоматически.
Используйте метод quotas.list, чтобы посмотреть текущий дневной лимит, лимит в минуту и текущее дневное использование для каждой группы методов API.
Рекомендации
Следуя этим рекомендациям, вы сможете обеспечить бесперебойную работу интеграции, избежать неожиданных ошибок, связанных с квотами, и эффективно использовать ресурсы Merchant Center.
Оптимизация распределения запросов
- Отправляйте запросы равномерно. Не отправляйте сразу много запросов. Распределите ежедневные вызовы API равномерно в течение дня, чтобы не превышать поминутные лимиты квоты (
quotaMinuteLimit). - Проактивное ограничение частоты запросов. Реализуйте в приложении клиентское ограничение частоты запросов. Не полагайтесь только на серверы Google для отклонения избыточного трафика. Контролируйте частоту запросов в источнике.
Корректная обработка ошибок
- Обрабатывайте ошибку HTTP 429. Ваше приложение должно быть готово к обработке ошибок 429 Too Many Requests (
quota/request_rate_too_high). - Экспоненциальная выдержка с добавлением случайности. При повторной отправке неудачных запросов (особенно после ошибки 429) используйте экспоненциальную выдержку (увеличивая время ожидания) и добавьте случайную задержку. Джиттер предотвращает "штормы повторных попыток", когда несколько экземпляров клиента пытаются повторно подключиться к серверу в одно и то же время, снова перегружая его.
- Учитывайте подсказки о повторных попытках. Если в ответе API содержатся сведения или заголовки, связанные с повторными попытками, используйте их, чтобы определить, когда возобновить вызовы.
Как сократить количество лишних звонков
- Предотвращайте устаревшие вызовы (404 NOT_FOUND). Не запрашивайте и не удаляйте ресурсы, которые больше не существуют. Даже неудачные вызовы расходуют квоту API. Отслеживайте
NOT_FOUNDошибки в разделе "Диагностика API" в Merchant Center, чтобы выявлять устаревшие данные или ненужные опросы. - Проверяйте данные перед обновлением. Прежде чем отправлять запрос на обновление, убедитесь, что данные действительно изменились. Не отправляйте обновления с одинаковыми значениями.
- Используйте кеширование. Кешируйте ответы на запросы чтения (например, сведения о товарах, настройки) локально, когда это возможно, чтобы избежать повторяющихся вызовов
getилиlistдля неизмененных данных.
Как работать с иерархией квот и исключениями
- Расширенные аккаунты и дочерние аккаунты. Если у вас расширенный аккаунт, выполните аутентификацию на уровне расширенного аккаунта, чтобы звонки учитывались в общем пуле расширенного аккаунта.
- Используйте
listSubaccounts. В расширенных аккаунтах вместоaccounts.listиспользуйтеaccounts.listSubaccounts. Квотаaccounts.listсписывается с вызывающего пользователя (а не с идентификатора клиента) и не видна в стандартной диагностике.listSubaccountsучитывается в квоте мультиаккаунта.