One API. Every Marketplace, Normalized.
Designed for production
Catalog Modeling
Catalog-Scale Price Delivery
Stop designing complex request logic. Model your catalog and kwery handles the heavy lifting.
Map by GTIN/EAN
Track SKUs across the web using standard identifiers, not just brittle URLs.
Define Frequency
Set refresh rates tailored to your strategy, from daily snapshots to real-time updates.
Global Routing
Access multiple marketplaces through one endpoint without managing individual scrapers.
GTINs/EANs
Marketplaces
From Requests to Credits
Now that you know how kwery resolves your catalog, here's what it costs.
Each resolved SKU-source fetch consumes one credit. Failed lookups and cache hits cost 0 credits.
See full pricingWorkflow
From Request to Result
Three steps to production-grade marketplace data.
Create a Job
Post a batch of product identifiers to the unified /sessions endpoint. No manual queue management required.
Processing
kwery resolves proxies, bypasses bot-detection, and normalizes all source-specific fields in real-time.
Retrieve Signals
Poll the job ID or receive an automated Webhook once the normalized result is stored in our high-speed cache.
Source Library
Full Coverage, One Endpoint
Pricing, offers, and merchant data from the marketplaces that drive your category, delivered through a single normalized API.
On-Demand
Don't See Your Marketplace?
Request a new source and we'll integrate it into the API, zero downtime, unified schema.
Technical Specs
Full-Spectrum Pricing Data
Every source returns the same normalized schema, offer lifecycle, logistics, market signals, and compliance. Sample responses across three sources.
{"product_id": "B0847ZTV5Q","name": "Rowenta Studio Dry Glow Haartrockner CV5830","brand_name": "Rowenta","currency": "EUR","buybox": {"price": 31.19,"seller_name": "Amazon","seller_id": "A3JWKAKR8XB7XF"},"seller_type": "amazon","is_available": true,"rating": 90,"rating_count": 5471,"price_min": 24.69,"price_avg": 36.34,"price_max": 45.79,"offers_count": 13,"offers": [{"seller_name": "Amazon","seller_type": "standalone-shop","price": 31.19,"shipping": 3.99,"total": 35.18,"condition": "Neu"},{"seller_name": "Sotel","seller_type": "marketplace-shop","seller_rating": 88,"seller_rating_count": 11014,"price": 43.88,"shipping": 55.57,"total": 99.45,"condition": "Neu"},{"seller_name": "cyberport","seller_type": "marketplace-shop","seller_rating": 68,"seller_rating_count": 6714,"price": 33.74,"shipping": 0,"total": 33.74,"condition": "Neu"}],"trust": { "score": 0.89 }}
Universal Search Keys
Query via GTIN (EAN, UPC and JAN barcodes all use this key), ASIN on Amazon, PZN on Idealo, search terms, or a marketplace product ID. Our routing layer maps identifiers to local product entities instantly.
Control Parameters
Customize crawl depth with max_pages or enforce strict data freshness with max_age parameters for real-time validation.
Connectivity
Engineered for Integration
kwery is a versioned API built for system-to-system reliability, not a simple scraper wrapper.
Delivery Formats
Format negotiationNative JSON support (recommended) with CSV and custom formats available upon request for legacy data pipelines.
Versioned Schema
Code stabilityGuaranteed code stability. All job results are stored and available for retrieval for 72 hours via versioned endpoints.
Event-Driven
WebhooksInstead of constant polling, receive a POST request the moment your data is resolved into our persistent result storage.
Predictable Billing
Per-creditPer-credit pricing tied to resolved SKUs. Failed lookups and cache hits within max_age cost zero credits.
Going Deeper
What Is a Marketplace Data API, Exactly?
See how collection, normalization, matching, and delivery fit together.
Reliability
Architected for Scale
Always-on pricing infrastructure for enterprise catalog refreshes.
High-Frequency Refresh
Continuous checks at scale. Configurable refresh rates, from daily snapshots to real-time, keep your catalog current, while detected change events surface exactly what moved between observations.
Enterprise Uptime SLA
99.9% uptime SLA, contractually guaranteed for Enterprise customers. Every tier runs on the same redundant infrastructure just without guarantees and commitments.
Explicit Error Taxonomy
Granular visibility into request behavior with specific error codes for missing parameters and source health alerts.
HTTP 503: SOURCE_TIMEOUT
Support
Common Technical
Questions
What teams ask before they integrate: coverage, call model, freshness, credits and uptime. Full answers live in the knowledgebase.
Browse all FAQsTwelve sources today: Amazon, Google Shopping, ebay, Idealo, Kaufland, Otto, billiger.de, guenstiger.de, Walmart, Lidl, AliExpress, and Rakuten. Each one has its own page in the Source Library with the identifiers it accepts and the countries it covers. View Source Library.
Short identifiers: amazon, google, ebay, idealo, kaufland, otto, billiger, guenstiger, lidl, walmart, rakuten, aliexpress. Display names such as google_shopping return "unknown source". Source identifiers in the docs.
Yes. You specify which sources a job should cover, and results come back per source in the same response schema, so comparing an Amazon observation with an Idealo one needs no source-specific handling.
Lookups run as jobs. You submit a batch of identifiers, kwery resolves each one against the live marketplace, and results stream back as batches complete rather than blocking a single long request. Small jobs finish quickly; large jobs deliver progressively. For a single lookup, wait returns the result in the same response (up to 120 s). If it takes longer, you get a job ID to poll instead. Batches always run as jobs.
Provide a callback_url when you submit a job and results are delivered to it as JSON. Webhooks are signed so you can verify authenticity, retried automatically on failure, and replayable on demand if your endpoint was down. Webhook delivery.
Yes, with two per-job parameters. max_age (seconds, default 1200) sets how old a cached observation may be before kwery fetches again; set it to 0 to force a live fetch every time. not_found_max_age (days, default 10) sets how long a cached "not found" is honoured before the next check re-crawls. Anything answered from cache is free, so widening the windows lowers your credit consumption. Data quality details.
A successful result is billed. A freshly crawled "not found" is billed too, because we still did the work of checking. A "not found" re-served from the not-found cache, and any failed request, cost nothing. For most sources 1 credit delivers a full data set for one SKU. On Amazon, Walmart, and eBay, 1 credit delivers 2 full data sets (search + product + offers, matched, each). Kaufland costs 3 credits per result, reflecting its higher delivery cost. Pricing overview.
You get an explicit not-found result rather than an empty or guessed record. That answer is cached for 10 days by default (adjustable per request with not_found_max_age), and re-checks inside that window are served from cache and cost 0 credits. After the window expires, the next check triggers a fresh crawl, which is billed at the source's normal credit rate. Pricing and credits.
"not found" means the marketplace does not know the product. A product with no purchasable offer right now is a normal result with offers_count 0 and buybox null. Per-result fields in the docs.
A contractual SLA, 99.9% uptime with service credits, defined response times, and per-source freshness targets, is part of the Enterprise tier and documented in your agreement. Every plan, including free and Growth, runs on the same infrastructure with signed webhooks, automatic retries, replay on demand, and public service-health signals, but without a contractual uptime commitment.
Start Building on kwery
Self-serve API keys after signup. Enterprise volume, SLAs, and dedicated support available on request.