Все статьи
Справочник APIAPI PolymarketЛимиты запросовCLOB

Лимиты запросов API Polymarket: полный справочник

Polymarket публикует свои лимиты запросов на нескольких страницах, в двух совершенно разных системах и с 10-секундным окном, которого почти никто не ожидает. Здесь всё это собрано в одном наборе таблиц — плюс что на самом деле происходит, когда вы превышаете лимит.

11 мин чтенияОбновлено 24 сентября 2026 г.

Если вы когда-нибудь пытались ответить на простой вопрос — сколько запросов в секунду можно отправлять в Polymarket? — то обнаружили, что простого ответа нет. Лимиты разбросаны по двум отдельным системам, опубликованы на разных страницах и выражены в 10-секундном окне, а не в запросах в секунду или в минуту, как у большинства API.

Лимит для конкретного маршрута также указан на отдельной странице каждого эндпоинта в справочнике API Polymarket.

На этой странице собраны все задокументированные лимиты, объяснены обе системы и показано, что на самом деле происходит при их превышении. Все цифры взяты из официальной документации Polymarket и актуальны на сентябрь 2026 года.

Короткий ответ

Делите на 10. Лимит 1,500 req / 10s — это 150 запросов в секунду. Глобальный потолок Polymarket — 15,000 req / 10s (1,500 rps), но у каждого семейства эндпоинтов есть гораздо более низкий лимит, и остановит вас именно лимит эндпоинта.

Две разные системы лимитов

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

Лимиты Cloudflare по IPToken bucket на подписанта
Область действияВаш IP-адресАдрес вашего подписанта
Применяется кКаждому API и эндпоинтуТолько к запросам ордеров и отмен в CLOB
МеханизмСкользящее окноToken bucket (скорость пополнения + всплеск)
При превышенииЗапросы замедляются — задерживаются и ставятся в очередьЗапрос отклоняется с 429
Зависит отЭндпоинтаУровня вашего 30-дневного торгового объёма
Ограничители действуют совместно. Боты, которые в основном читают, обычно сталкиваются только с первым; торговые боты — с обоими.

Замедление, а не отказ

Это самое полезное, что нужно понять о слое Cloudflare. Когда вы превышаете лимит по IP, Polymarket задерживает и ставит в очередь ваши запросы, а не отклоняет их сразу. Вы не увидите шквала 429 — вы увидите, как тихо растёт задержка. Бот, который выглядит здоровым, но у которого время ответа выросло с 40ms до 3s, обычно просто превысил лимит запросов.

Лимиты запросов Gamma API

Базовый URL https://gamma-api.polymarket.com. Gamma отдаёт метаданные рынков и событий — к этим эндпоинтам большинство обращается первыми, когда изучает платформу.

ЭндпоинтЛимитВ секунду
Общий4,000 запр. / 10 с400 запр./с
/events500 запр. / 10 с50 запр./с
/markets300 запр. / 10 с30 запр./с
Списки /markets + /events900 запр. / 10 с90 запр./с
/comments200 запр. / 10 с20 запр./с
/tags200 запр. / 10 с20 запр./с
/public-search350 запр. / 10 с35 запр./с

/markets — самый жёсткий лимит, в который вы упрётесь

С лимитом 300 запросов / 10 с /markets — самый ограниченный из часто используемых эндпоинтов на всей платформе, в 13 раз жёстче общего лимита Gamma над ним. Если вы в цикле листаете полный список рынков, сломается именно это.

Лимиты запросов Data API

Базовый URL https://data-api.polymarket.com. Позиции, история сделок и данные портфеля. Обратите внимание, насколько этот API жёстче, чем Gamma или CLOB: общий лимит — 1,000 запросов / 10 с, четверть от лимита Gamma.

ЭндпоинтЛимитВ секунду
Общий1,000 запр. / 10 с100 запр./с
/trades200 запр. / 10 с20 запр./с
/positions150 запр. / 10 с15 запр./с
/closed-positions150 запр. / 10 с15 запр./с
Проверка состояния (/ok)100 запр. / 10 с10 запр./с

Data API v2

Data API v2 вышел 4 сентября 2026 года по адресу https://data-api.polymarket.com/v2 с собственными лимитами. v1 продолжает работать, но заморожен — новые эндпоинты и поля появляются только в v2.

ЭндпоинтЛимитВ секунду
Общий (все эндпоинты /v2)800 запр. / 10 с80 запр./с
/v2/trades300 запр. / 10 с30 запр./с
/v2/positions, /v2/positions/combos200 запр. / 10 с20 запр./с
/v2/activity, /v2/activity/combos200 запр. / 10 с20 запр./с
/v2/prices-history200 запр. / 10 с20 запр./с
/v2/status100 запр. / 10 с10 запр./с

История цен переехала на другой хост и стала в 5 раз жёстче

GET /v2/prices-history на хосте data заменяет маршрут на хосте CLOB. Версия CLOB допускала 1,000 запросов / 10 с; маршрут v2 допускает 200. Перенесёте вызов, не перенеся темп, — и упрётесь в потолок в пять раз быстрее. Кроме того, v2 сигнализирует о нагрузке через 429 с Retry-After и использует пагинацию с непрозрачными курсорами — offset нет.

Лимиты запросов CLOB API

Базовый URL https://clob.polymarket.com. Сам стакан. У CLOB самый высокий общий лимит среди всех API Polymarket (9,000 запросов / 10 с), но он делится на четыре группы с очень разными лимитами.

Общие

ЭндпоинтЛимитВ секунду
Общий9,000 запр. / 10 с900 запр./с
GET баланса и разрешений200 запр. / 10 с20 запр./с
UPDATE баланса и разрешений50 запр. / 10 с5 запр./с

Рыночные данные

Закономерность, которую стоит заметить: эндпоинты в единственном числе получают 1,500 запросов / 10 с, пакетные во множественном — 500 запросов / 10 с. Это похоже на понижение, пока не вспомнишь, что один пакетный вызов охватывает много токенов. По лимиту пакетный запрос втрое дороже, но каждый вызов делает гораздо больше работы — всегда выбирайте /books, а не цикл по /book.

ЭндпоинтЛимитВ секунду
/book1,500 запр. / 10 с150 запр./с
/books500 запр. / 10 с50 запр./с
/price1,500 запр. / 10 с150 запр./с
/prices500 запр. / 10 с50 запр./с
/midpoint1,500 запр. / 10 с150 запр./с
/midpoints500 запр. / 10 с50 запр./с
/prices-history1,000 запр. / 10 с100 запр./с
Размер тика рынка200 запр. / 10 с20 запр./с

Журнал

ЭндпоинтЛимитВ секунду
/trades, /orders, /notifications, /order900 запр. / 10 с90 запр./с
/data/orders500 запр. / 10 с50 запр./с
/data/trades500 запр. / 10 с50 запр./с
/notifications125 запр. / 10 с12.5 запр./с

Аутентификация

ЭндпоинтЛимитВ секунду
Эндпоинты API-ключей100 запр. / 10 с10 запр./с

Торговля — всплеск и устойчивый темп

Торговые эндпоинты — единственные, у которых два лимита Cloudflare: лимит всплеска для коротких пиков и устойчивый лимит, измеряемый за 10 минут. Нужно укладываться в оба.

ЭндпоинтВсплескУстойчивый
POST /order5,000 запр. / 10 с120,000 запр. / 10 мин
DELETE /order5,000 запр. / 10 с120,000 запр. / 10 мин
POST /orders2,000 запр. / 10 с21,000 запр. / 10 мин
DELETE /orders2,000 запр. / 10 с15,000 запр. / 10 мин
DELETE /cancel-all250 запр. / 10 с6,000 запр. / 10 мин
DELETE /cancel-market-orders1,500 запр. / 10 с21,000 запр. / 10 мин

Отдельно стоит отметить DELETE /cancel-all с 250 запросами / 10 с. Маркетмейкеры, которые делают cancel-all в каждом цикле перекотировки, быстро исчерпывают этот лимит, а устойчивый лимит в 6,000 за 10 минут в среднем даёт всего 10 вызовов cancel-all в секунду.

Bridge, Relayer и всё остальное

ЭндпоинтЛимит
Общее ограничение (глобальный потолок)15,000 запр. / 10 с
Проверка состояния (/ok)100 запр. / 10 с
Bridge API (https://bridge.polymarket.com)50 запр. / 10 с
Relayer /submit25 запр. / 1 мин
API пользовательского PNL200 запр. / 10 с

Лимит Relayer — исключение из правил

Relayer /submit — единственный задокументированный лимит, измеряемый в минуту, а не за 10 секунд, и с 25 запросами в минуту это самое жёсткое число на платформе. Если вы отправляете транзакции через relayer, это примерно одна отправка каждые 2.4 секунды.

Token bucket на подписанта (торговля в CLOB)

Отдельно от Cloudflare Polymarket проверяет запросы ордеров и отмен в CLOB по token bucket на каждого подписанта. У каждого адреса подписанта есть bucket ордеров и bucket отмен; расход из одного не влияет на другой. В отличие от слоя Cloudflare, превышение здесь возвращает настоящий 429.

Запросы стоят токенов, а не считаются как одна единица каждый:

BucketЗапросСтоимость в токенах
ОрдераPOST /order1
ОрдераPOST /ordersКоличество ордеров в пакете
ОтменыDELETE /order1
ОтменыDELETE /ordersКоличество переданных ID ордеров
ОтменыDELETE /cancel-all1 + количество фактически отменённых ордеров
ОтменыDELETE /cancel-market-orders1 + количество отменённых подходящих ордеров

Пакеты — всё или ничего

Пакет принимается, только если в bucket достаточно токенов для каждой записи. Иначе отклоняется весь запрос, и ничего не обрабатывается. Пакет, стоимость которого в токенах превышает ёмкость всплеска вашего уровня, не может быть принят никогда, сколько ни жди, — его нужно разбить.

Уровни по объёму

Размер вашего bucket зависит от совокупного объёма кошелька-мейкера за скользящие 30 дней. Уровни пересчитываются каждые три часа.

УровеньОбъём за 30 днейОрдеров/сВсплеск ордеровОтмен/сВсплеск отмен
Standard—406080120
Copper$30,000+6090120180
Bronze$50,000+80120160240
Silver$100,000+200300400600
Gold$500,000+4006008001,200
Platinum$2.5M+4506759001,350
Diamond$5M+5257871,0501,575
Elite$10M+6009001,2001,800
Уровни Standard, Copper, Bronze, Silver и Gold допускают отрицательный баланс отмен; у Platinum, Diamond и Elite он не опускается ниже нуля.

Сколько длится полный всплеск, считается по формуле burst_seconds = burst / rate_per_sec. Для подписанта уровня Standard это 60 / 40 — 1.5 секунды отправки ордеров на полной скорости, после чего вы ограничены скоростью пополнения 40/с.

Как читать заголовки лимитов

Ограничитель на подписанта возвращает заголовки в каждом проверенном запросе. Это самый дешёвый способ следить за бюджетом — никаких дополнительных вызовов API.

ЗаголовокЗначение
Poly-RateLimit-RemainingБаланс токенов в соответствующем bucket после этого запроса
Poly-RateLimit-ResetUnix-метка времени окончания текущего периода ожидания
Poly-RateLimit-TierКакой уровень был применён
Retry-AfterЗадержка до повтора в секундах — только в ответах 429
Poly-RateLimit-Warningtrue, если при реальном применении ограничений запрос был бы отклонён

Poly-RateLimit-Reset — не время полного пополнения

При 429 он сообщает, когда токенов будет достаточно для запроса, который вы только что попытались отправить, а не когда bucket заполнится. Обычно ждать нужно меньше, чем кажется. А Poly-RateLimit-Remaining может уйти в минус после cancel-all на уровнях, допускающих отрицательный баланс отмен.

Правильная обработка 429

Правильная стратегия повторов зависит от того, в какой ограничитель вы упёрлись, и ошибка здесь делает только хуже. Соблюдайте Retry-After, если он есть; если нет — используйте экспоненциальный отступ со случайным разбросом. Разброс важен: без него все ваши обработчики повторяют запрос в один и тот же момент, и вы сразу снова упираетесь в лимит.

const MAX_RETRIES = 5;

async function polyFetch(url: string, init?: RequestInit): Promise<Response> {
  for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
    const res = await fetch(url, init);

    // Watch the budget even on success — this is your early warning.
    const remaining = res.headers.get("Poly-RateLimit-Remaining");
    if (remaining !== null && Number(remaining) < 10) {
      console.warn(`Low token budget: ${remaining} (tier ${res.headers.get("Poly-RateLimit-Tier")})`);
    }

    // Warning mode: not rejected yet, but it would have been.
    if (res.headers.get("Poly-RateLimit-Warning") === "true") {
      console.warn("Request would be rejected under live enforcement — slow down.");
    }

    if (res.status !== 429) return res;
    if (attempt === MAX_RETRIES) return res;

    // Prefer the server's own answer, else exponential backoff.
    const retryAfter = res.headers.get("Retry-After");
    const baseMs = retryAfter
      ? Number(retryAfter) * 1000
      : Math.min(2 ** attempt * 250, 8000);

    // Full jitter — spreads a fleet of workers out instead of resynchronising them.
    await new Promise((r) => setTimeout(r, Math.random() * baseMs));
  }

  throw new Error("unreachable");
}

Не повторяйте слишком большой пакет без изменений

Если пакет стоит больше токенов, чем ёмкость всплеска вашего уровня, повторять бесполезно — одним запросом его никогда не примут. Разбейте его. Это единственный случай, когда отступ будет крутиться вечно.

Как изначально укладываться в лимиты

  • Используйте пакеты вместо циклов. Один вызов /books вместо пятидесяти вызовов /book стоит одного запроса из бюджета 500 запросов / 10 с, а не пятидесяти из бюджета 1,500 запросов / 10 с — запас увеличивается в 17 раз.
  • Кешируйте метаданные. Метаданные рынка из /markets почти не меняются за время жизни рынка, а у /markets самый жёсткий лимит в Gamma — 300 запросов / 10 с. Получите один раз, закешируйте и перестаньте запрашивать их заново в горячем цикле.
  • Используйте WebSocket для текущего состояния. Опрос /book по таймеру — самый частый способ сжечь бюджет запросов. Подпишитесь на поток, и пусть сервер сам присылает изменения.
  • Добавляйте случайный разброс к запланированным задачам. Если каждый обработчик просыпается ровно в начале минуты, вы создаёте синхронный всплеск намного выше среднего темпа. Рандомизируйте смещения запуска.
  • Следите за задержкой, а не только за долей ошибок. Поскольку Cloudflare замедляет, а не отклоняет, рост задержки p99 — первый сигнал превышения лимита по IP, задолго до того, как что-то проявится в виде ошибок.
  • Отслеживайте заголовки. Poly-RateLimit-Remaining ничего не стоит прочитать, и он точно говорит, сколько бюджета осталось.

Лимиты запросов — это не то же самое, что доступ к данным

И последнее, о чём стоит сказать прямо, потому что это самое частое заблуждение, которое мы видим: ни один уровень лимитов не даёт историческую глубину стакана. API Polymarket отдаёт текущее состояние стакана. Он не предоставляет исторический архив того, как выглядел стакан в 14:03:17 прошлого вторника, а после разрешения рынка его стакан возвращает 404.

Это структурный пробел, а не проблема ограничения скорости, и никакая логика отступа его не решит. Если вы пытаетесь провести бэктест стратегии, вам нужны снимки на конкретный момент времени, которые кто-то записал в то время, — ровно для этого и существует PolyTest: 240M+ исторических снимков крипторынков Polymarket Up/Down с полной глубиной стакана, разрешением до долей секунды и без пропусков.

ТарифЗапросов / минВсплеск / сИстория
Free302Свежие рынки
Builder2501214 дней
Pro75040Вся история
EnterpriseИндивидуальноИндивидуальноВся история + массовая выгрузка
Собственные лимиты PolyTest — для сравнения. Проверить свои можно программно через GET /api/v1/limits. См. лимиты запросов и цены.

Часто задаваемые вопросы

Какой лимит запросов в секунду у API Polymarket?
Polymarket публикует лимиты на 10-секундное окно, так что делите на 10. Глобальный потолок — 15,000 запросов / 10 с (1,500 rps), но лимиты отдельных эндпоинтов гораздо ниже, и именно они ограничивают на практике: /book и /price в CLOB допускают 1,500 запросов / 10 с (150 rps), эндпоинт /markets в Gamma — всего 300 запросов / 10 с (30 rps), а эндпоинт /positions в Data API — 150 запросов / 10 с (15 rps).
Возвращает ли Polymarket 429 при превышении лимита запросов?
Зависит от того, в какой ограничитель вы упёрлись. Лимиты Cloudflare по IP замедляют запросы — они задерживаются и ставятся в очередь, а не отклоняются, — поэтому вы видите рост задержки, а не ошибки. Отдельные token bucket на подписанта на эндпоинтах ордеров и отмен CLOB действительно возвращают 429 Too Many Requests вместе с заголовком Retry-After, указывающим минимальную задержку до повтора.
Какие лимиты запросов у CLOB API Polymarket?
Общий лимит CLOB — 9,000 запросов / 10 с. Эндпоинты рыночных данных /book, /price и /midpoint допускают по 1,500 запросов / 10 с, а их пакетные аналоги /books, /prices и /midpoints — 500 запросов / 10 с. Эндпоинты журнала допускают 900 запросов / 10 с. У торговых эндпоинтов есть и лимит всплеска, и устойчивый лимит: POST /order допускает всплеск 5,000 запросов / 10 с и устойчивый темп 120,000 запросов / 10 мин.
Какие лимиты запросов у Gamma API Polymarket?
Общий лимит Gamma API — 4,000 запросов / 10 с. Отдельные эндпоинты жёстче: /events — 500 запросов / 10 с, /markets — 300 запросов / 10 с, совместные списки /markets + /events — 900 запросов / 10 с, /public-search — 350 запросов / 10 с, а /comments и /tags — по 200 запросов / 10 с. Лимит /markets — самый жёсткий среди часто используемых на платформе.
Лимиты запросов Polymarket действуют на IP-адрес или на API-ключ?
Основные лимиты Cloudflare действуют на IP-адрес, а не на API-ключ, поэтому несколько ключей за одним IP делят один бюджет. Отдельные лимиты token bucket на эндпоинтах ордеров и отмен CLOB привязаны к адресу вашего подписанта, а их размер зависит от уровня 30-дневного торгового объёма вашего кошелька-мейкера.
Можно ли получить исторические данные стакана Polymarket через API?
Нет. API Polymarket отдаёт только текущее состояние рынка. Архива исторической глубины стакана нет, а стакан разрешившегося рынка возвращает 404. Для бэктестинга нужны снимки на конкретный момент времени, записанные во время работы рынков. PolyTest предоставляет 240M+ таких снимков крипторынков Polymarket Up/Down с полной 8-уровневой глубиной стакана и разрешением до долей секунды.

Получите исторические данные, которые Polymarket не хранит

PolyTest записывает крипторынки Polymarket Up/Down в процессе их работы — 240M+ снимков с 8 уровнями глубины стакана, метками времени с точностью до долей секунды и сохранёнными разрешившимися рынками. Начните с 3-дневного бесплатного пробного периода.

Читать дальше