Todos os posts
Referência da APIAPI da PolymarketLimites de requisiçõesCLOB

Limites de requisições da API da Polymarket: a referência completa

A Polymarket publica seus limites de requisições em várias páginas, em dois sistemas completamente diferentes, usando uma janela de 10 segundos que quase ninguém espera. Aqui está tudo em um só conjunto de tabelas — mais o que realmente acontece quando você passa de um limite.

11 min de leituraAtualizado em 24 de setembro de 2026

Se você já tentou responder a uma pergunta simples — quantas requisições por segundo posso enviar para a Polymarket? —, deve ter descoberto que não há resposta simples. Os limites estão espalhados por dois sistemas separados, publicados em páginas diferentes e expressos em uma janela de 10 segundos, em vez dos números por segundo ou por minuto que a maioria das APIs usa.

Para o limite de uma rota específica, cada endpoint também tem sua própria página na referência da API da Polymarket.

Esta página reúne todos os limites documentados em um só lugar, explica os dois sistemas e mostra o que realmente acontece quando você passa da linha. Todos os números vêm da documentação oficial da Polymarket e estão atualizados até setembro de 2026.

A resposta curta

Divida por 10. Um limite de 1,500 req / 10s equivale a 150 requisições por segundo. O teto global da Polymarket é 15,000 req / 10s (1,500 rps), mas cada família de endpoints tem um limite bem menor abaixo dele, e o limite do endpoint é o que vai parar você.

Dois sistemas diferentes de limite de requisições

Esta é a parte que pega a maioria dos desenvolvedores. A Polymarket roda dois limitadores independentes, e estar abaixo de um não protege você do outro.

Limites por IP da CloudflareToken buckets por signer
EscopoSeu endereço IPSeu endereço de signer
Aplica-se aTodas as APIs e endpointsApenas requisições de ordem + cancelamento do CLOB
MecanismoJanela deslizanteToken bucket (taxa de recarga + pico)
Acima do limiteAs requisições são limitadas — atrasadas e colocadas em filaA requisição é rejeitada com 429
Varia porEndpointSeu nível de volume de trading de 30 dias
Os dois limitadores são cumulativos. Bots que mais leem costumam encontrar só o primeiro; bots de trading encontram os dois.

Atrasado, não rejeitado

Esta é a coisa mais útil para entender sobre a camada da Cloudflare. Quando você excede um limite por IP, a Polymarket atrasa e coloca em fila suas requisições em vez de rejeitá-las de cara. Você não vai ver uma rajada de 429 — vai ver sua latência subir em silêncio. Um bot que parece saudável, mas foi de 40ms para 3s de tempo de resposta, geralmente é um bot acima do limite de requisições.

Limites da API Gamma

URL base https://gamma-api.polymarket.com. A Gamma serve os metadados de mercados e eventos — os endpoints que a maioria das pessoas acessa primeiro ao explorar a plataforma.

EndpointLimitePor segundo
Geral4,000 req / 10s400 rps
/events500 req / 10s50 rps
/markets300 req / 10s30 rps
Listagem /markets + /events900 req / 10s90 rps
/comments200 req / 10s20 rps
/tags200 req / 10s20 rps
/public-search350 req / 10s35 rps

/markets é o limite mais apertado que você vai encontrar

Com 300 req / 10s, /markets é o endpoint de uso comum mais restritivo de toda a plataforma — 13× mais apertado do que o limite geral da Gamma acima dele. Se você está paginando a lista completa de mercados em um loop, é isso que quebra primeiro.

Limites da Data API

URL base https://data-api.polymarket.com. Posições, histórico de negociações e dados de portfólio. Note quanto esta API é mais apertada do que a Gamma ou o CLOB — o limite geral é de 1,000 req / 10s, um quarto do da Gamma.

EndpointLimitePor segundo
Geral1,000 req / 10s100 rps
/trades200 req / 10s20 rps
/positions150 req / 10s15 rps
/closed-positions150 req / 10s15 rps
Health check (/ok)100 req / 10s10 rps

Data API v2

A Data API v2 foi lançada em 4 de setembro de 2026 em https://data-api.polymarket.com/v2, com seus próprios limites. A v1 continua no ar, mas está congelada — novos endpoints e campos só chegam na v2.

EndpointLimitePor segundo
Geral (todos os endpoints /v2)800 req / 10s80 rps
/v2/trades300 req / 10s30 rps
/v2/positions, /v2/positions/combos200 req / 10s20 rps
/v2/activity, /v2/activity/combos200 req / 10s20 rps
/v2/prices-history200 req / 10s20 rps
/v2/status100 req / 10s10 rps

O histórico de preços mudou de host e ficou 5x mais apertado

GET /v2/prices-history no host data substitui a rota hospedada no CLOB. A versão do CLOB permitia 1,000 req / 10s; a rota v2 permite 200. Migre a chamada sem migrar o ritmo e você bate no teto cinco vezes mais cedo. A v2 também sinaliza carga com 429 mais Retry-After e pagina com cursores opacos — não existe offset.

Limites da API CLOB

URL base https://clob.polymarket.com. O livro de ofertas em si. O CLOB tem a maior cota geral de todas as APIs da Polymarket (9,000 req / 10s), mas se divide em quatro grupos distintos, com limites muito diferentes.

Geral

EndpointLimitePor segundo
Geral9,000 req / 10s900 rps
GET de allowance de saldo200 req / 10s20 rps
UPDATE de allowance de saldo50 req / 10s5 rps

Dados de mercado

O padrão a notar aqui: os endpoints no singular têm 1,500 req / 10s, os endpoints de lote no plural têm 500 req / 10s. Parece um rebaixamento até você lembrar que uma chamada em lote cobre muitos tokens. O lote custa 3× menos por requisição, mas cada chamada faz muito mais trabalho — prefira sempre /books a um loop de /book.

EndpointLimitePor segundo
/book1,500 req / 10s150 rps
/books500 req / 10s50 rps
/price1,500 req / 10s150 rps
/prices500 req / 10s50 rps
/midpoint1,500 req / 10s150 rps
/midpoints500 req / 10s50 rps
/prices-history1,000 req / 10s100 rps
Tick size do mercado200 req / 10s20 rps

Registro

EndpointLimitePor segundo
/trades, /orders, /notifications, /order900 req / 10s90 rps
/data/orders500 req / 10s50 rps
/data/trades500 req / 10s50 rps
/notifications125 req / 10s12.5 rps

Autenticação

EndpointLimitePor segundo
Endpoints de chave de API100 req / 10s10 rps

Trading — pico e sustentado

Os endpoints de trading são os únicos com dois limites da Cloudflare: um limite de pico para picos curtos e um limite sustentado medido ao longo de 10 minutos. Você precisa ficar abaixo dos dois.

EndpointPicoSustentado
POST /order5,000 req / 10s120,000 req / 10 min
DELETE /order5,000 req / 10s120,000 req / 10 min
POST /orders2,000 req / 10s21,000 req / 10 min
DELETE /orders2,000 req / 10s15,000 req / 10 min
DELETE /cancel-all250 req / 10s6,000 req / 10 min
DELETE /cancel-market-orders1,500 req / 10s21,000 req / 10 min

Vale destacar o DELETE /cancel-all com 250 req / 10s. Market makers que fazem cancel-all a cada ciclo de recotação esgotam esse limite rapidamente, e o limite sustentado de 6,000 a cada 10 minutos dá, em média, só 10 chamadas de cancel-all por segundo.

Bridge, Relayer e todo o resto

EndpointLimite
Limitação geral de requisições (teto global)15,000 req / 10s
Health check (/ok)100 req / 10s
API Bridge (https://bridge.polymarket.com)50 req / 10s
Relayer /submit25 req / 1 min
API de PNL do usuário200 req / 10s

O limite do Relayer é o ponto fora da curva

O /submit do Relayer é o único limite documentado medido por minuto em vez de a cada 10 segundos, e com 25 req/min é de longe o número mais apertado da plataforma. Se você envia transações pelo relayer, isso dá mais ou menos um envio a cada 2.4 segundos.

Token buckets por signer (trading no CLOB)

Separadamente da Cloudflare, a Polymarket avalia as requisições de ordem e cancelamento do CLOB com token buckets por signer. Cada endereço de signer tem um bucket de ordens e um bucket de cancelamentos; gastar de um não afeta o outro. Diferentemente da camada da Cloudflare, exceder esses limites retorna um 429 de verdade.

As requisições custam tokens, em vez de contarem como uma unidade cada:

BucketRequisiçãoCusto em tokens
OrdensPOST /order1
OrdensPOST /ordersNúmero de ordens no lote
CancelamentosDELETE /order1
CancelamentosDELETE /ordersNúmero de IDs de ordens enviados
CancelamentosDELETE /cancel-all1 + número de ordens efetivamente canceladas
CancelamentosDELETE /cancel-market-orders1 + número de ordens correspondentes canceladas

Os lotes são tudo ou nada

Um lote só é aceito quando o bucket tem tokens suficientes para todas as entradas. Caso contrário, a requisição inteira é rejeitada e nada é processado. Um lote cujo custo em tokens excede a capacidade de pico do seu nível nunca pode ser aceito, não importa quanto você espere — ele precisa ser dividido.

Níveis de volume

O tamanho do seu bucket depende do volume acumulado da carteira maker em uma janela móvel de 30 dias. A atribuição de nível é atualizada a cada três horas.

NívelVolume de 30 diasOrdens/sPico de ordensCancelamentos/sPico de cancelamentos
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
Os níveis Standard, Copper, Bronze, Silver e Gold permitem saldo de cancelamentos negativo; Platinum, Diamond e Elite o limitam a zero.

Calcule quanto dura um pico completo com burst_seconds = burst / rate_per_sec. Para um signer Standard, isso dá 60 / 40 — 1.5 segundo de envio de ordens a toda velocidade antes de você ficar limitado à taxa de recarga de 40/s.

Lendo os headers de limite de requisições

O limitador por signer retorna headers em toda requisição avaliada. Eles são a forma mais barata possível de monitorar seu orçamento — nenhuma chamada extra à API é necessária.

HeaderSignificado
Poly-RateLimit-RemainingSaldo de tokens no bucket aplicável depois desta requisição
Poly-RateLimit-ResetTimestamp Unix em que termina o período de espera atual
Poly-RateLimit-TierQual nível foi aplicado
Retry-AfterAtraso para nova tentativa em segundos — só em respostas 429
Poly-RateLimit-Warningtrue quando a aplicação real dos limites teria rejeitado a requisição

Poly-RateLimit-Reset não é o momento em que o bucket se recarrega por completo

Em um 429, ele diz quando haverá tokens suficientes para a requisição que você acabou de tentar — não quando o bucket estará cheio. Normalmente você não precisa esperar tanto quanto acha. E Poly-RateLimit-Remaining pode ficar negativo depois de um cancel-all nos níveis que permitem saldo de cancelamentos negativo.

Tratando os 429 corretamente

A estratégia certa de nova tentativa muda conforme o limitador que você atingiu, e errar piora as coisas. Respeite o Retry-After quando ele estiver presente; recorra ao backoff exponencial com jitter quando não estiver. O jitter importa: sem ele, todos os seus workers tentam de novo no mesmo instante e você dispara o limite de novo na hora.

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");
}

Não tente de novo um lote grande demais sem alterá-lo

Se um lote custa mais tokens do que a capacidade de pico do seu nível, tentar de novo é inútil — ele nunca vai ser aceito como uma única requisição. Divida-o. Este é o único caso em que o backoff fica em loop para sempre.

Ficando abaixo dos limites por design

  • Use lotes em vez de loops. Uma chamada a /books em vez de cinquenta chamadas a /book custa uma requisição contra um orçamento de 500 req/10s, em vez de cinquenta contra um de 1,500 req/10s — uma folga 17× maior.
  • Guarde os metadados em cache. Os metadados de mercado de /markets quase não mudam durante a vida de um mercado, mas /markets tem o limite mais apertado da Gamma, 300 req/10s. Busque uma vez, guarde em cache e pare de pedi-los de novo no seu loop quente.
  • Use WebSockets para o estado ao vivo. Fazer polling de /book com um timer é a forma mais comum de queimar o orçamento de requisições. Assine o stream e deixe o servidor enviar as mudanças.
  • Adicione jitter aos jobs agendados. Se todos os workers acordam exatamente na virada do minuto, você cria um pico sincronizado bem acima da sua taxa média. Torne aleatórios os deslocamentos de início.
  • Observe a latência, não só as taxas de erro. Como a Cloudflare atrasa em vez de rejeitar, a latência p99 subindo é o primeiro sinal de que você passou de um limite por IP — muito antes de qualquer coisa aparecer como erro.
  • Acompanhe os headers. Ler Poly-RateLimit-Remaining não custa nada e diz exatamente quanto orçamento resta.

Limites de requisições não são o mesmo que acesso a dados

Uma última coisa que vale deixar explícita, porque é o equívoco mais comum que vemos: nenhum nível de limite de requisições dá acesso à profundidade histórica do livro de ofertas. A API da Polymarket serve o estado atual do livro. Ela não expõe um arquivo histórico de como estava o livro às 14:03:17 da última terça-feira, e depois que um mercado é resolvido o livro de ofertas dele retorna 404.

Isso é uma lacuna estrutural, e não um problema de limitação, e nenhuma lógica de backoff resolve. Se você está tentando fazer backtest de uma estratégia, precisa de snapshots pontuais que alguém gravou na época — que é exatamente o que a PolyTest existe para oferecer: mais de 240M de snapshots históricos dos mercados cripto Up/Down da Polymarket, com profundidade completa do livro de ofertas, resolução abaixo de um segundo e sem lacunas.

PlanoRequisições / minPico / sHistórico
Free302Mercados recentes
Builder2501214 dias
Pro75040Histórico completo
EnterprisePersonalizadoPersonalizadoHistórico completo + exportação em massa
Os limites da própria PolyTest, para comparação. Consulte os seus de forma programática com GET /api/v1/limits. Veja limites de requisições e preços.

Perguntas frequentes

Qual é o limite de requisições por segundo da API da Polymarket?
A Polymarket publica os limites por janela de 10 segundos, então divida por 10. O teto global é de 15,000 req / 10s (1,500 rps), mas os limites por endpoint são bem menores e são eles que valem na prática: /book e /price do CLOB permitem 1,500 req / 10s (150 rps), o endpoint /markets da Gamma permite só 300 req / 10s (30 rps) e o endpoint /positions da Data API permite 150 req / 10s (15 rps).
A Polymarket retorna 429 quando você excede o limite de requisições?
Depende de qual limitador você atingiu. Os limites por IP da Cloudflare atrasam as requisições — elas são atrasadas e colocadas em fila em vez de rejeitadas —, então você vê a latência subir em vez de erros. Os token buckets por signer, separados, nos endpoints de ordem e cancelamento do CLOB retornam 429 Too Many Requests, junto com um header Retry-After que informa o atraso mínimo antes de tentar de novo.
Quais são os limites de requisições da API CLOB da Polymarket?
O limite geral do CLOB é de 9,000 req / 10s. Os endpoints de dados de mercado /book, /price e /midpoint permitem 1,500 req / 10s cada, enquanto seus equivalentes em lote /books, /prices e /midpoints permitem 500 req / 10s. Os endpoints de registro permitem 900 req / 10s. Os endpoints de trading têm limites de pico e sustentados: POST /order permite 5,000 req / 10s de pico e 120,000 req / 10 min sustentados.
Quais são os limites de requisições da API Gamma da Polymarket?
O limite geral da API Gamma é de 4,000 req / 10s. Os endpoints individuais são mais apertados: /events tem 500 req / 10s, /markets tem 300 req / 10s, a listagem combinada /markets + /events tem 900 req / 10s, /public-search tem 350 req / 10s e /comments e /tags têm 200 req / 10s cada. O limite de /markets é o limite de uso comum mais apertado da plataforma.
Os limites de requisições da Polymarket são por endereço IP ou por chave de API?
Os principais limites da Cloudflare são por endereço IP, não por chave de API, então várias chaves atrás de um mesmo IP compartilham um único orçamento. Os limites separados de token bucket nos endpoints de ordem e cancelamento do CLOB têm como escopo o seu endereço de signer e são dimensionados pelo nível de volume de trading de 30 dias da sua carteira maker.
Consigo dados históricos do livro de ofertas da Polymarket pela API?
Não. A API da Polymarket serve apenas o estado atual do mercado. Não existe arquivo histórico de profundidade do livro de ofertas, e o livro de um mercado resolvido retorna 404. O backtesting exige snapshots pontuais gravados enquanto os mercados estavam ativos. A PolyTest oferece mais de 240M desses snapshots dos mercados cripto Up/Down da Polymarket, com profundidade completa de 8 níveis do livro de ofertas e resolução abaixo de um segundo.

Tenha os dados históricos que a Polymarket não guarda

A PolyTest registra os mercados cripto Up/Down da Polymarket enquanto estão ativos — mais de 240M de snapshots com 8 níveis de profundidade do livro de ofertas, timestamps abaixo de um segundo e mercados resolvidos preservados. Comece com um teste grátis de 3 dias.

Continue lendo