Todos los artículos
Referencia de la APIAPI de PolymarketLímites de tasaCLOB

Límites de tasa de la API de Polymarket: la referencia completa

Polymarket publica sus límites de tasa en varias páginas, en dos sistemas completamente distintos y con una ventana de 10 segundos que casi nadie espera. Aquí lo tienes todo en un conjunto de tablas, más lo que pasa realmente cuando superas un límite.

11 min de lecturaActualizado el 24 de septiembre de 2026

Si alguna vez has intentado responder a una pregunta sencilla (¿cuántas solicitudes por segundo puedo enviar a Polymarket?), habrás descubierto que no hay una respuesta sencilla. Los límites están repartidos en dos sistemas separados, publicados en páginas distintas y expresados en una ventana de 10 segundos en lugar de las cifras por segundo o por minuto que usan la mayoría de las APIs.

Para el límite de una ruta concreta, cada endpoint tiene además su propia página en la referencia de la API de Polymarket.

Esta página reúne todos los límites documentados en un solo lugar, explica los dos sistemas y muestra lo que pasa realmente cuando cruzas la línea. Todas las cifras salen de la documentación oficial de Polymarket y están actualizadas a septiembre de 2026.

La respuesta corta

Divide entre 10. Un límite de 1,500 req / 10s son 150 solicitudes por segundo. El techo global de Polymarket es 15,000 req / 10s (1,500 rps), pero cada familia de endpoints tiene por debajo un límite mucho menor, y el límite del endpoint es el que te frenará.

Dos sistemas distintos de límites de tasa

Esta es la parte que pilla a la mayoría de los desarrolladores. Polymarket tiene dos limitadores independientes, y estar por debajo de uno no te protege del otro.

Límites por IP de CloudflareToken buckets por firmante
ÁmbitoTu dirección IPTu dirección de firmante
Se aplica aTodas las APIs y endpointsSolo solicitudes de órdenes + cancelaciones del CLOB
MecanismoVentana deslizanteToken bucket (tasa de recarga + ráfaga)
Por encima del límiteLas solicitudes se ralentizan: se retrasan y se ponen en colaLa solicitud se rechaza con 429
Varía segúnEl endpointTu nivel de volumen de trading de 30 días
Los dos limitadores se acumulan. Los bots que sobre todo leen suelen toparse solo con el primero; los bots de trading, con ambos.

Ralentizadas, no rechazadas

Es lo más útil que puedes entender sobre la capa de Cloudflare. Cuando superas un límite por IP, Polymarket retrasa y pone en cola tus solicitudes en lugar de rechazarlas directamente. No verás una ráfaga de 429: verás cómo tu latencia sube sin hacer ruido. Un bot que parece sano pero ha pasado de tiempos de respuesta de 40ms a 3s suele ser un bot por encima de su límite de tasa.

Límites de tasa de la API Gamma

URL base https://gamma-api.polymarket.com. Gamma sirve los metadatos de mercados y eventos, los endpoints a los que la mayoría llama primero cuando explora la plataforma.

EndpointLímitePor segundo
General4,000 req / 10s400 rps
/events500 req / 10s50 rps
/markets300 req / 10s30 rps
Listado de /markets + /events900 req / 10s90 rps
/comments200 req / 10s20 rps
/tags200 req / 10s20 rps
/public-search350 req / 10s35 rps

/markets es el límite más estricto con el que te toparás

Con 300 req / 10s, /markets es el endpoint de uso común más restrictivo de toda la plataforma, 13× más estricto que el límite general de Gamma que tiene por encima. Si paginas la lista completa de mercados en un bucle, esto es lo primero que se rompe.

Límites de tasa de la Data API

URL base https://data-api.polymarket.com. Posiciones, historial de operaciones y datos de cartera. Fíjate en lo mucho más estricta que es esta API que Gamma o el CLOB: el límite general es de 1,000 req / 10s, una cuarta parte del de Gamma.

EndpointLímitePor segundo
General1,000 req / 10s100 rps
/trades200 req / 10s20 rps
/positions150 req / 10s15 rps
/closed-positions150 req / 10s15 rps
Comprobación de estado (/ok)100 req / 10s10 rps

Data API v2

La Data API v2 se lanzó el 4 de septiembre de 2026 en https://data-api.polymarket.com/v2 con sus propios límites. La v1 sigue funcionando pero está congelada: los nuevos endpoints y campos solo llegan a la v2.

EndpointLímitePor segundo
General (todos los 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

El historial de precios cambió de host y es 5x más estricto

GET /v2/prices-history en el host data reemplaza la ruta alojada en el CLOB. La versión del CLOB permitía 1,000 req / 10s; la ruta v2 permite 200. Si migras la llamada sin migrar el ritmo, llegarás al techo cinco veces antes. La v2 además señala la carga con 429 más Retry-After y pagina con cursores opacos: no hay offset.

Límites de tasa de la API CLOB

URL base https://clob.polymarket.com. El libro de órdenes en sí. El CLOB tiene la asignación general más alta de todas las APIs de Polymarket (9,000 req / 10s), pero se divide en cuatro grupos con límites muy distintos.

General

EndpointLímitePor segundo
General9,000 req / 10s900 rps
GET balance allowance200 req / 10s20 rps
UPDATE balance allowance50 req / 10s5 rps

Datos de mercado

El patrón que hay que notar aquí: los endpoints singulares tienen 1,500 req / 10s y los endpoints por lotes plurales, 500 req / 10s. Parece un recorte hasta que recuerdas que una llamada por lotes cubre muchos tokens. Agrupar es 3× más barato por solicitud, pero cada llamada hace mucho más trabajo: prefiere siempre /books a un bucle de /book.

EndpointLímitePor 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
Tamaño de tick del mercado200 req / 10s20 rps

Registro

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

Autenticación

EndpointLímitePor segundo
Endpoints de claves de API100 req / 10s10 rps

Trading: ráfaga y sostenido

Los endpoints de trading son los únicos con dos límites de Cloudflare: un límite de ráfaga para picos cortos y un límite sostenido medido en 10 minutos. Tienes que mantenerte por debajo de ambos.

EndpointRáfagaSostenido
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

Conviene destacar DELETE /cancel-all con 250 req / 10s. Los creadores de mercado que hacen cancel-all en cada ciclo de recotización lo agotan rápido, y el límite sostenido de 6,000 por 10 minutos equivale a solo 10 llamadas cancel-all por segundo de media.

Bridge, Relayer y todo lo demás

EndpointLímite
Limitación de tasa general (techo global)15,000 req / 10s
Comprobación de estado (/ok)100 req / 10s
Bridge API (https://bridge.polymarket.com)50 req / 10s
Relayer /submit25 req / 1 min
API de PNL del usuario200 req / 10s

El límite del Relayer es la excepción

Relayer /submit es el único límite documentado que se mide por minuto en lugar de por 10 segundos, y con 25 req/min es con diferencia la cifra más estricta de la plataforma. Si envías transacciones a través del relayer, eso es aproximadamente un envío cada 2.4 segundos.

Token buckets por firmante (trading en el CLOB)

Aparte de Cloudflare, Polymarket evalúa las solicitudes de órdenes y cancelaciones del CLOB contra token buckets por firmante. Cada dirección de firmante tiene un bucket de órdenes y otro de cancelaciones; gastar de uno no afecta al otro. A diferencia de la capa de Cloudflare, superarlos devuelve un 429 real.

Las solicitudes cuestan tokens en lugar de contar como una unidad cada una:

BucketSolicitudCoste en tokens
ÓrdenesPOST /order1
ÓrdenesPOST /ordersNúmero de órdenes del lote
CancelacionesDELETE /order1
CancelacionesDELETE /ordersNúmero de IDs de orden enviados
CancelacionesDELETE /cancel-all1 + número de órdenes realmente canceladas
CancelacionesDELETE /cancel-market-orders1 + número de órdenes coincidentes canceladas

Los lotes son todo o nada

Un lote solo se admite cuando el bucket tiene tokens suficientes para todas las entradas. Si no, se rechaza la solicitud entera y no se procesa nada. Un lote cuyo coste en tokens supera la capacidad de ráfaga de tu nivel nunca podrá admitirse, por mucho que esperes: hay que dividirlo.

Niveles de volumen

El tamaño de tu bucket depende del volumen acumulado de la wallet maker en una ventana móvil de 30 días. Las asignaciones de nivel se actualizan cada tres horas.

NivelVolumen de 30 díasÓrdenes/sRáfaga de órdenesCancelaciones/sRáfaga de cancelaciones
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
Los niveles Standard, Copper, Bronze, Silver y Gold permiten un saldo de cancelaciones negativo; Platinum, Diamond y Elite lo limitan a cero.

Calcula cuánto dura una ráfaga completa con burst_seconds = burst / rate_per_sec. Para un firmante Standard eso es 60 / 40: 1.5 segundos de envío de órdenes a toda velocidad antes de quedar limitado a la tasa de recarga de 40/s.

Leer las cabeceras de límite de tasa

El limitador por firmante devuelve cabeceras en cada solicitud evaluada. Son la forma más barata posible de vigilar tu presupuesto: no hacen falta llamadas extra a la API.

CabeceraSignificado
Poly-RateLimit-RemainingSaldo de tokens del bucket correspondiente después de esta solicitud
Poly-RateLimit-ResetMarca de tiempo Unix en la que termina el periodo de espera actual
Poly-RateLimit-TierQué nivel se aplicó
Retry-AfterRetraso antes de reintentar, en segundos; solo en respuestas 429
Poly-RateLimit-Warningtrue cuando la aplicación real habría rechazado la solicitud

Poly-RateLimit-Reset no es la hora de recarga completa

En un 429, te dice cuándo habrá tokens suficientes para la solicitud que acabas de intentar, no cuándo estará lleno el bucket. Normalmente no tienes que esperar tanto como crees. Y Poly-RateLimit-Remaining puede volverse negativo después de un cancel-all en los niveles que permiten un saldo de cancelaciones negativo.

Gestionar bien los 429

La estrategia de reintento correcta depende del limitador con el que te topes, y equivocarte empeora las cosas. Respeta Retry-After cuando esté presente; si no, recurre al backoff exponencial con jitter. El jitter importa: sin él, todos tus workers reintentan en el mismo instante y vuelves a disparar el límite de inmediato.

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

No reintentes sin cambios un lote demasiado grande

Si un lote cuesta más tokens que la capacidad de ráfaga de tu nivel, reintentar es inútil: nunca podrá admitirse como una sola solicitud. Divídelo. Es el único caso en que el backoff entrará en un bucle infinito.

Mantenerse por debajo de los límites por diseño

  • Agrupa en lugar de iterar. Una llamada a /books en lugar de cincuenta llamadas a /book te cuesta una solicitud contra un presupuesto de 500 req/10s en lugar de cincuenta contra uno de 1,500 req/10s: una mejora de 17× en margen.
  • Guarda los metadatos en caché. Los metadatos de mercado de /markets apenas cambian durante la vida de un mercado, pero /markets tiene el límite más estricto de Gamma, 300 req/10s. Pídelos una vez, guárdalos en caché y deja de volver a pedirlos en tu bucle caliente.
  • Usa WebSockets para el estado en vivo. Hacer polling de /book con un temporizador es la forma más común de quemar un presupuesto de solicitudes. Suscríbete al stream y deja que el servidor te envíe los cambios.
  • Añade jitter a las tareas programadas. Si todos los workers se despiertan en el minuto exacto, creas un pico sincronizado muy por encima de tu tasa media. Aleatoriza los desfases de inicio.
  • Vigila la latencia, no solo la tasa de errores. Como Cloudflare ralentiza en lugar de rechazar, la subida de la latencia p99 es la primera señal de que estás por encima de un límite por IP, mucho antes de que aparezca nada como error.
  • Sigue las cabeceras. Leer Poly-RateLimit-Remaining no cuesta nada y te dice exactamente cuánto presupuesto te queda.

Los límites de tasa no son lo mismo que el acceso a datos

Una última cosa que conviene dejar explícita, porque es el malentendido más común que vemos: ningún nivel de límite de tasa te da la profundidad histórica del libro de órdenes. La API de Polymarket sirve el estado actual del libro. No expone un archivo histórico de cómo estaba el libro a las 14:03:17 del martes pasado y, cuando un mercado se resuelve, su libro de órdenes devuelve 404.

Es un hueco estructural, no un problema de limitación, y ninguna lógica de backoff lo resuelve. Si intentas hacer backtesting de una estrategia, necesitas snapshots puntuales que alguien haya grabado en su momento, que es exactamente para lo que existe PolyTest: 240M+ snapshots históricos de los mercados cripto Up/Down de Polymarket con la profundidad completa del libro de órdenes, resolución por debajo del segundo y sin huecos.

PlanSolicitudes / minRáfaga / sHistorial
Free302Mercados recientes
Builder2501214 días
Pro75040Historial completo
EnterprisePersonalizadoPersonalizadoHistorial completo + exportación masiva
Los límites propios de PolyTest, para comparar. Consulta los tuyos de forma programática con GET /api/v1/limits. Consulta límites de tasa y precios.

Preguntas frecuentes

¿Cuál es el límite de tasa de la API de Polymarket en solicitudes por segundo?
Polymarket publica los límites por ventana de 10 segundos, así que divide entre 10. El techo global es de 15,000 req / 10s (1,500 rps), pero los límites por endpoint son mucho menores y son la restricción que realmente aplica: /book y /price del CLOB permiten 1,500 req / 10s (150 rps), el endpoint /markets de Gamma permite solo 300 req / 10s (30 rps) y el endpoint /positions de la Data API permite 150 req / 10s (15 rps).
¿Polymarket devuelve un 429 cuando superas el límite de tasa?
Depende del limitador con el que te topes. Los límites por IP de Cloudflare ralentizan las solicitudes (se retrasan y se ponen en cola en lugar de rechazarse), así que ves subir la latencia en lugar de errores. Los token buckets por firmante, aparte, en los endpoints de órdenes y cancelaciones del CLOB sí devuelven 429 Too Many Requests, junto con una cabecera Retry-After que indica el retraso mínimo antes de reintentar.
¿Cuáles son los límites de tasa de la API CLOB de Polymarket?
El límite general del CLOB es de 9,000 req / 10s. Los endpoints de datos de mercado /book, /price y /midpoint permiten 1,500 req / 10s cada uno, mientras que sus equivalentes por lotes /books, /prices y /midpoints permiten 500 req / 10s. Los endpoints de registro permiten 900 req / 10s. Los endpoints de trading tienen límites de ráfaga y sostenidos: POST /order permite 5,000 req / 10s en ráfaga y 120,000 req / 10 min sostenidos.
¿Cuáles son los límites de tasa de la API Gamma de Polymarket?
El límite general de la API Gamma es de 4,000 req / 10s. Los endpoints individuales son más estrictos: /events es de 500 req / 10s, /markets de 300 req / 10s, el listado combinado de /markets + /events de 900 req / 10s, /public-search de 350 req / 10s, y /comments y /tags de 200 req / 10s cada uno. El límite de /markets es el más estricto de uso común en la plataforma.
¿Los límites de tasa de Polymarket son por dirección IP o por clave de API?
Los límites principales de Cloudflare son por dirección IP, no por clave de API, así que varias claves detrás de una misma IP comparten un único presupuesto. Los límites de token bucket, aparte, en los endpoints de órdenes y cancelaciones del CLOB se aplican a tu dirección de firmante y se dimensionan según el nivel de volumen de trading de 30 días de tu wallet maker.
¿Puedo obtener datos históricos del libro de órdenes de Polymarket a través de la API?
No. La API de Polymarket solo sirve el estado actual del mercado. No hay archivo histórico de profundidad del libro de órdenes, y el libro de un mercado resuelto devuelve 404. El backtesting requiere snapshots puntuales grabados mientras los mercados estaban activos. PolyTest ofrece 240M+ snapshots de este tipo para los mercados cripto Up/Down de Polymarket, con la profundidad completa de 8 niveles del libro de órdenes y resolución por debajo del segundo.

Obtén los datos históricos que Polymarket no guarda

PolyTest registra los mercados cripto Up/Down de Polymarket mientras están activos: 240M+ snapshots con 8 niveles de profundidad del libro de órdenes, marcas de tiempo por debajo del segundo y mercados resueltos conservados. Empieza con una prueba gratuita de 3 días.

Sigue leyendo