← Volver a docs
API / Rate Limits

Rate limits y cuotas

Cotizave aplica rate limiting por API Key con cuotas mensuales que dependen de tu Plan.


Cuotas por Plan

PlanRequests / mesRPS (sostenido)BurstPrecio
Gratis1.50025$0
Esencial20.00038$7 / mes
Profesional60.000515$15 / mes
Escala150.0001025$29 / mes
Escala Plus500.0001540$59 / mes
A medidaA medidaA medidaA medidaContactar

Los contadores mensuales se reinician al comienzo del ciclo de tu Plan, anclado a la fecha de activación (en el plan Gratis, a la fecha de creación de la cuenta) — es decir, en ese día del mes, no necesariamente el día 1 del calendario.

Cómo se cuenta cada request

Un "request" descuenta cuota cuando recibe un código 2xx o un error de cliente 400/404 (input inválido o ruta/market inexistente — responsabilidad del caller). Específicamente:

Sí cuentan: requests exitosos (2xx) · errores de cliente por input o ruta inválida (400, 404).

No cuentan (casos en los que no se entregó servicio): fallos por autenticación (401, 403) · falta de pago (402) · rate limit (429) · fallos del lado de Cotizave (5xx).

En la práctica: no pagas por requests sin servicio (auth, pago, rate limit o errores nuestros); sí cuentan los 400/404 originados por input o rutas inválidas.

Headers de rate limiting

Cada respuesta de la API incluye estos headers para que monitorees tu uso en tiempo real:

HeaderDescripción
X-RateLimit-LimitCuota total mensual de tu Plan
X-RateLimit-RemainingRequests disponibles en el mes actual
X-RateLimit-ResetFecha ISO 8601 del próximo reinicio del ciclo (el día de activación de tu Plan, no necesariamente el día 1)

Y estos aparecen solo cuando recibes un 429:

HeaderDescripción
X-RateLimit-Scopeburst si pediste demasiado rápido · monthly si agotaste la cuota del mes
Retry-AfterSegundos a esperar antes de reintentar (entero, mínimo 1)
X-RateLimit-Retry-After-MsLa espera exacta en milisegundos. Solo en rechazos por velocidad
X-RateLimit-Limit-SecondRequests por segundo que permite tu Plan
X-RateLimit-BurstCuántos requests puedes enviar de golpe antes de que te frenemos

Retry-After es conservador a propósito. El estándar HTTP solo admite segundos enteros, así que un rechazo que se resuelve en 33 ms igual reporta 1. Cuanto más alto tu Plan, más te penaliza ese redondeo — por eso publicamos también X-RateLimit-Retry-After-Ms con el valor real. Usa el primero si quieres algo simple; el segundo si quieres aprovechar todo tu Plan.

Ejemplo:

200 OK · headers
HTTP/1.1 200 OK Content-Type: application/json X-RateLimit-Limit: 60000 X-RateLimit-Remaining: 58273 X-RateLimit-Reset: 2026-06-23T00:00:00Z

Esto significa:

  • Tu Plan Profesional te permite 60.000 requests por mes
  • Te quedan 58.273 requests este mes
  • El contador se reinicia el 23 de junio de 2026 a las 00:00 UTC (día de activación de tu Plan)

Los dos tipos de 429

Un 429 puede venir de dos límites distintos, y se resuelven de forma opuesta. El header X-RateLimit-Scope te dice cuál fue.

Por velocidad (scope: burst)

Enviaste demasiados requests en muy poco tiempo. Tu cuota mensual sigue intacta.

429 · pediste demasiado rápido
HTTP/1.1 429 Too Many Requests Content-Type: application/json X-RateLimit-Scope: burst X-RateLimit-Limit-Second: 5 X-RateLimit-Burst: 15 Retry-After: 1 X-RateLimit-Retry-After-Ms: 200 X-RateLimit-Limit: 60000 X-RateLimit-Remaining: 58273 { "code": "rate_limit_exceeded", "details": { "kind": "burst", "retry_after_ms": 200 } }

Fíjate que X-RateLimit-Remaining sigue mostrando 58.273 requests disponibles: no agotaste nada, solo fuiste demasiado rápido. Se resuelve espaciando los pedidos, no con un upgrade.

Por cuota mensual (scope: monthly)

Consumiste todos los requests de tu ciclo.

429 · agotaste la cuota del mes
HTTP/1.1 429 Too Many Requests Content-Type: application/json X-RateLimit-Scope: monthly X-RateLimit-Limit: 60000 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 2026-06-23T00:00:00Z Retry-After: 2592000 { "code": "rate_limit_exceeded", "details": { "kind": "monthly", "resets_at": "2026-06-23T00:00:00Z" } }

Aquí Retry-After sí cuenta los segundos que faltan para el reset del ciclo, así que puede ser de días o semanas. No lo recortamos: es cuándo puedes volver de verdad.

Tus opciones cuando agotaste la cuota

  1. Hacer upgrade del Plan desde el dashboard. El cambio es inmediato y el nuevo contador se aplica al instante.
  2. Esperar al próximo ciclo. El contador se reinicia automáticamente en la fecha indicada por X-RateLimit-Reset (el día de activación de tu Plan).

Abuso y suspensión

Los rate limits no son solo un límite de facturación: protegen el servicio para todos. Recibir un 429 de forma puntual es normal y esperado — basta con respetar el header Retry-After y reintentar con backoff.

Agrégale un jitter a esa espera: un valor aleatorio de unas décimas. Sin él, todos los clientes que chocan el límite al mismo tiempo reintentan exactamente al mismo segundo y vuelven a chocar en bloque.

Lo que no es normal es insistir contra el límite. Si detectamos patrones anómalos —volúmenes de 429 sostenidos, reintentos agresivos sin backoff, intentos de evadir la cuota (rotación de keys o cuentas, scraping distribuido) u otro uso abusivo— podemos aplicar medidas escalonadas:

!

Medidas que podemos tomar ante abuso: throttling adicional · límites por IP · bloqueo temporal · y, de persistir, suspensión de la API Key o de la cuenta, sin reembolso.

En resumen: un 429 ocasional no pasa nada; ignorarlo de forma sistemática sí puede terminar en suspensión. Esto está cubierto en los Términos (§7).

¿Necesitas más?

Si necesitas más cuota que la del plan más alto disponible, la escalamos a medida de tu volumen — contáctanos en support@cotizave.com.

  • Más requests mensuales — mismo servicio, mismo soporte que Escala