Skip to content

Errors & limits

The response envelope

kwery distinguishes validation problems from infrastructure problems.

  • Validation problems are returned with HTTP 200 and an "error": true body. Always check the error field before consuming a response:

    { "error": true, "message": "country not supported by source" }
  • Infrastructure problems use standard HTTP status codes:

    StatusMeaning
    401Missing or invalid credentials.
    402Out of credits — free tier at zero balance, a cap_stop spending cap reached, or overage mode off with included credits spent. See Pricing.
    403Authenticated, but not allowed (e.g. accessing another account's job).
    5xxTransient server-side problem. Safe to retry — a submission that fails never consumes credits.

Common validation messages include unknown source (the source value is not one of the identifiers in the sources table — display names such as google_shopping are not accepted), not subscribed to source (a real source, but your account is not enabled for that country), country not supported by source, parameter missing, parameter value invalid, and job not found. Per-value problems (e.g. a bad GTIN checksum) are reported on that value's result as success: false with a reason, rather than failing the whole job.

What consumes credits

Credits are billed per result, never per HTTP call:

OutcomeBilled?
Freshly crawled result with success: true (served_from: "live")Yes
Result re-served from cache within max_age (served_from: "cache")No — free
"Not found" (success: true, reason: "not found") — freshly crawledYes
"Not found" re-served from the not-found cache within not_found_max_age (served_from: "cache")No — free
Crawl failure (source currently unavailable, timeout, lost)No
Invalid input value (parameter_invalid)No
Any request rejected with 4xx/5xx or a validation errorNo

Per-result fields

Each result in a download or stream delivery has:

FieldDescription
keyThe key:value this result is for.
successtrue if the lookup completed (including a clean "not found").
reasonPresent when relevant — e.g. not found.
contentThe parsed product/offer data (source-specific — see Sources).
served_fromlive — at least one fetch was made for this job; cache — re-served from a cached observation, no fetch.
observed_atWhen the data was observed (ISO 8601, UTC): the last fetch for live, the cached observation's date for cache (null when unknown).
trustConfidence score: score, components{}, flagged_offers[] — see Confidence score. Absent on failed lookups.

"Not found" versus "no offers". reason: "not found" means the marketplace does not know the product you asked for. A product that exists but has no purchasable offer at the moment (sold out, seller delisted, in-store only) is a normal success: true result with its identity fields, offers: [], offers_count: 0, buybox: null and null prices — and it is billed as a lookup, because the marketplace was queried and answered. Both carry a trust object. | meta | Provenance block (meta.crawls[]) — only when the job was submitted with include_meta: true; see Audit & provenance. | | index | 0-based position in the submitted values[] (stream results). |

Limits

LimitValue
Batch values per job1 000
Stream values per job100 000
Stream results per polling page1 000 (limit)
Result retention72 hours

Results are retained for 72 hours after completion; download or consume them within that window.

Rate limiting

There is no fixed per-account request-rate limit — we do not throttle you by request volume, and there is no per-second or per-minute quota to design around.

What can stop a burst is credits. If you use up your plan credits, or reach an optional daily credit cap you set yourself, submission returns 402 with a machine-readable code your client can branch on:

codeMeaning
depletedPlan credits (plus rollover) are used up.
daily_quotaYour own daily credit cap for today is reached; it lifts at the next local midnight.
budget_capOverage mode cap_stop and the spending cap is reached.
overage_payment_failedNew overage is paused because a payment failed; included credits keep working.

See Pricing for the credit model and Account management for setting a daily cap. If you plan a very large or sustained workload, talk to us first so we can size capacity.

See also