Docs / Límites y costosLimits and costsMarkdown

Límites y costos

Pagas por dato entregado, en créditos. Un crédito es el precio de un producto en una tienda. Cada respuesta dice cuánto costó y cuánto te queda.

Créditos por operación#

OperaciónHerramienta MCPCréditos
GET /v1/products/searchsearch_products1 per page of up to 20 results; 0 when nothing is found
GET /v1/products—1 per 20 products returned
GET /v1/products/{product_id}—1
GET /v1/products/{product_id}/pricesget_prices1 per retailer offer returned
GET /v1/products/{product_id}/historyget_price_history1 per 30 points per series (minimum 1 per series)
POST /v1/prices/comparecompare_prices1 per price in the matrix (product × retailer with data)
POST /v1/prices/batch—1 per offer price returned; items not found cost 0
GET /v1/offerslist_offers1 per offer returned
GET /v1/offers/{offer_id}—1
GET /v1/offers/{offer_id}/history—1 per 30 points (minimum 1)
GET /v1/retailers—0
GET /v1/retailers/{retailer_id}—0
GET /v1/stores—0
GET /v1/categories—0
GET /v1/brands—0
GET /v1/coverageget_coverage0
GET /v1/countries—0
GET /v1/fx—0
GET /v1/status—0
GET /v1/public/coverage—0
GET /v1/account—0
GET /v1/usage—0
POST /v1/data-requestsrequest_data0

Lo mismo cuesta lo mismo por API, MCP o CLI. Los errores no cobran.

Planes y límites#

PlanPrecio al mesCréditos al mesConsultas por segundoConsultas al díaHistorial
FreeUSD 0100130030 días
BuilderUSD 2915.0005sin límite diario365 días
ProUSD 9975.00015sin límite diariocompleto
BusinessUSD 299300.00040sin límite diariocompleto
ScaleUSD 9991.500.000100sin límite diariocompleto
SandboxGratisSin cobro55.000 (y 60 por minuto)Datos de ejemplo

Pago por uso: USD 3 por 1.000 créditos, desde USD 10; duran 12 meses desde tu última compra. Precios completos en /precios y, para máquinas, en /pricing.json.

Cada respuesta trae las cabeceras RateLimit-Limit, RateLimit-Remaining y RateLimit-Reset. Al pasarte, la API responde 429 con Retry-After (ver Errores).

Controla el gasto#

  • max_credits: tope por llamada. La respuesta se recorta para caber (lo más barato o lo más relevante primero) y meta.usage.truncated vale true.
  • dry_run=true: cotiza sin cobrar. Devuelve data: null y el costo en meta.usage.
  • Relectura gratis: la misma observación, serie o búsqueda pedida otra vez dentro de 24 horas cuesta 0 y se informa en credits_deduplicated.
  • Tope de gasto mensual: por defecto, 2 veces el valor de tu plan. Al llegar, 402 spend_cap_reached.
  • ¿Quieres seguir un precio en el tiempo? Pide el historial una vez a la semana o al mes: guardamos cada día por ti. Una vez al mes, el historial diario de un producto en 3 tiendas cuesta 3 créditos (1 por cada 30 puntos de cada serie), así que seguir unos 25 productos cabe en el plan Free.
dry_run=true
{
  "data": null,
  "meta": {
    "credits_charged": 3,
    "usage": {
      "credits_charged": 3,
      "credits_deduplicated": 0,
      "truncated": false,
      "truncated_reason": null,
      "dry_run": true,
      "units": {
        "offers": 3
      }
    }
  }
}

Saldo en cada respuesta#

Por API, en meta.credits_charged, meta.credits_remaining y meta.period_resets_at, y en las cabeceras X-Credits-Charged, X-Credits-Deduplicated, X-Credits-Remaining y X-Credits-Period-Reset. Por MCP, al final de cada respuesta:

text
Costo: 4 créditos. Te quedan 82 de 100 créditos gratis de este mes.
Costo: 4 créditos. Te quedan 12 de 100 créditos gratis de este mes. Si necesitas más: USD 10 son 3.333 créditos que duran 12 meses.

Cuando se acaba el saldo#

Si el saldo no alcanza para todo, la API entrega lo que cabe y lo marca como recortado. Si no alcanza ni para un ítem, responde 402 y no cobra. En el plan Free el mensaje está escrito para que el agente se lo repita a la persona tal cual:

text
Se acabaron los 100 créditos gratis de este mes (se renuevan el 1 de noviembre). Puedes comprar créditos desde USD 10, que duran 12 meses, o pasar a Builder: USD 29 al mes por 15.000 créditos.
402 insufficient_credits
{
  "type": "https://pricto.dev/docs#insufficient_credits",
  "title": "Créditos insuficientes",
  "status": 402,
  "code": "insufficient_credits",
  "detail": "Se acabaron los 100 créditos gratis de este mes (se renuevan el 1 de noviembre). Puedes comprar créditos desde USD 10, que duran 12 meses, o pasar a Builder: USD 29 al mes por 15.000 créditos.",
  "hint": "No se cobró esta consulta. Repítele este mensaje a tu humano tal cual.",
  "request_id": "req_9cefbd14ef1b489ba094",
  "docs_url": "https://pricto.dev/docs#insufficient_credits",
  "balance": 0,
  "credits_needed": 1,
  "usd_needed": 0.01,
  "top_up_url": "https://pricto.dev/#precios",
  "pricing": {
    "currency": "USD",
    "usd_per_1000_credits": 3,
    "min_top_up_usd": 10,
    "credits_per_min_top_up": 3333,
    "prepaid_validity_months": 12,
    "plans": [
      {
        "id": "builder",
        "usd_per_month": 29,
        "credits_per_month": 15000
      },
      {
        "id": "pro",
        "usd_per_month": 99,
        "credits_per_month": 75000
      },
      {
        "id": "business",
        "usd_per_month": 299,
        "credits_per_month": 300000
      },
      {
        "id": "scale",
        "usd_per_month": 999,
        "credits_per_month": 1500000
      }
    ],
    "top_up_url": "https://pricto.dev/#precios"
  }
}

Historial según el plan#

Si pides más historial del que incluye tu plan, la API entrega la parte que cabe y lo dice en meta.usage.truncated_reason: "plan_history_window" y en meta.warnings. Solo responde 403 plan_required si todo el rango queda fuera.

Free: historial de 30 días
{
  "meta": {
    "usage": {
      "credits_charged": 3,
      "credits_deduplicated": 0,
      "truncated": true,
      "truncated_reason": "plan_history_window",
      "dry_run": false,
      "units": {
        "history_points": 15
      }
    },
    "warnings": [
      "synthetic_data: datos sintéticos de ejemplo / synthetic sample data",
      "truncated: tu plan incluye 30 días de historial; se entrega desde 2026-09-24."
    ]
  }
}

Limits and costs

You pay per data point delivered, in credits. One credit is one product's price at one store. Every response says what it cost and what you have left.

Credits per operation#

OperationMCP toolCredits
GET /v1/products/searchsearch_products1 per page of up to 20 results; 0 when nothing is found
GET /v1/products—1 per 20 products returned
GET /v1/products/{product_id}—1
GET /v1/products/{product_id}/pricesget_prices1 per retailer offer returned
GET /v1/products/{product_id}/historyget_price_history1 per 30 points per series (minimum 1 per series)
POST /v1/prices/comparecompare_prices1 per price in the matrix (product × retailer with data)
POST /v1/prices/batch—1 per offer price returned; items not found cost 0
GET /v1/offerslist_offers1 per offer returned
GET /v1/offers/{offer_id}—1
GET /v1/offers/{offer_id}/history—1 per 30 points (minimum 1)
GET /v1/retailers—0
GET /v1/retailers/{retailer_id}—0
GET /v1/stores—0
GET /v1/categories—0
GET /v1/brands—0
GET /v1/coverageget_coverage0
GET /v1/countries—0
GET /v1/fx—0
GET /v1/status—0
GET /v1/public/coverage—0
GET /v1/account—0
GET /v1/usage—0
POST /v1/data-requestsrequest_data0

The same thing costs the same over API, MCP or CLI. Errors are never charged.

Plans and limits#

PlanPrice per monthCredits per monthRequests per secondRequests per dayHistory
FreeUSD 0100130030 days
BuilderUSD 2915,0005no daily limit365 days
ProUSD 9975,00015no daily limitfull
BusinessUSD 299300,00040no daily limitfull
ScaleUSD 9991,500,000100no daily limitfull
SandboxFreeNot charged55,000 (and 60 per minute)Sample data

Pay as you go: USD 3 per 1,000 credits, from USD 10; they last 12 months from your last purchase. Full pricing at /precios and, for machines, at /pricing.json.

Every response carries the RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset headers. Past the limit, the API answers 429 with Retry-After (see Errors).

Control spending#

  • max_credits: a cap per call. The response is cut to fit (cheapest or most relevant first) and meta.usage.truncated is true.
  • dry_run=true: quote without charging. Returns data: null and the cost in meta.usage.
  • Free re-reads: the same observation, series or search requested again within 24 hours costs 0 and is reported in credits_deduplicated.
  • Monthly spend cap: by default, twice your plan's price. When reached, 402 spend_cap_reached.
  • Want to follow a price over time? Ask for the history once a week or once a month: we keep every day for you. Once a month, the daily history of one product at 3 stores costs 3 credits (1 per 30 points of each series), so following about 25 products fits in the Free plan.
dry_run=true
{
  "data": null,
  "meta": {
    "credits_charged": 3,
    "usage": {
      "credits_charged": 3,
      "credits_deduplicated": 0,
      "truncated": false,
      "truncated_reason": null,
      "dry_run": true,
      "units": {
        "offers": 3
      }
    }
  }
}

Balance in every response#

Over the API, in meta.credits_charged, meta.credits_remaining and meta.period_resets_at, and in the X-Credits-Charged, X-Credits-Deduplicated, X-Credits-Remaining and X-Credits-Period-Reset headers. Over MCP, at the end of every response:

text
Cost: 4 credits. 82 of your 100 free credits left this month.
Cost: 4 credits. 12 of your 100 free credits left this month. Need more? USD 10 buys 3,333 credits that last 12 months.

When credits run out#

If the balance doesn't cover everything, the API delivers what fits and marks it as truncated. If it doesn't cover even one item, it answers 402 and charges nothing. On the Free plan the message is written so the agent can repeat it to the person as is:

text
This month's 100 free credits are used up (they renew on November 1). You can buy credits from USD 10, valid for 12 months, or move to Builder: USD 29 a month for 15,000 credits.
402 insufficient_credits
{
  "type": "https://pricto.dev/docs#insufficient_credits",
  "title": "Créditos insuficientes",
  "status": 402,
  "code": "insufficient_credits",
  "detail": "Se acabaron los 100 créditos gratis de este mes (se renuevan el 1 de noviembre). Puedes comprar créditos desde USD 10, que duran 12 meses, o pasar a Builder: USD 29 al mes por 15.000 créditos.",
  "hint": "No se cobró esta consulta. Repítele este mensaje a tu humano tal cual.",
  "request_id": "req_9cefbd14ef1b489ba094",
  "docs_url": "https://pricto.dev/docs#insufficient_credits",
  "balance": 0,
  "credits_needed": 1,
  "usd_needed": 0.01,
  "top_up_url": "https://pricto.dev/#precios",
  "pricing": {
    "currency": "USD",
    "usd_per_1000_credits": 3,
    "min_top_up_usd": 10,
    "credits_per_min_top_up": 3333,
    "prepaid_validity_months": 12,
    "plans": [
      {
        "id": "builder",
        "usd_per_month": 29,
        "credits_per_month": 15000
      },
      {
        "id": "pro",
        "usd_per_month": 99,
        "credits_per_month": 75000
      },
      {
        "id": "business",
        "usd_per_month": 299,
        "credits_per_month": 300000
      },
      {
        "id": "scale",
        "usd_per_month": 999,
        "credits_per_month": 1500000
      }
    ],
    "top_up_url": "https://pricto.dev/#precios"
  }
}

History by plan#

If you ask for more history than your plan includes, the API delivers the part that fits and says so in meta.usage.truncated_reason: "plan_history_window" and in meta.warnings. It only answers 403 plan_required if the whole range falls outside.

Free: 30-day history
{
  "meta": {
    "usage": {
      "credits_charged": 3,
      "credits_deduplicated": 0,
      "truncated": true,
      "truncated_reason": "plan_history_window",
      "dry_run": false,
      "units": {
        "history_points": 15
      }
    },
    "warnings": [
      "synthetic_data: datos sintéticos de ejemplo / synthetic sample data",
      "truncated: tu plan incluye 30 días de historial; se entrega desde 2026-09-24."
    ]
  }
}