One schema. Every retailer.
A single typed ExtractedData object — the same field on Amazon, IKEA, or your indie Shopify store.
Cartpie turns any retailer product page into a normalized JSON object — price, currency, availability, variants, GTIN — across 20+ tuned retailers. One schema. Every store. Pay only when a product comes back.

{
"data": {
"title": "POÄNG Armchair, birch",
"price": "129.00",
"currency": "GBP",
"availability": "InStock",
"brand": "IKEA",
"gtin": "07391440264259"
},
"meta": { "duration_ms": 412 }
}A single typed ExtractedData object — the same field on Amazon, IKEA, or your indie Shopify store.
No charge for blocks, timeouts, or empty pages. The meter runs only on a billable result.
Proxy rotation, browser rendering, and CAPTCHA fallback — handled before the JSON ever leaves us.
Hand-written extractors per retailer. Maintained by us when the page changes — not by you at 2am.
Same product across five marketplaces, matched by identifier. Find the cheapest offer programmatically.
Webhooks. Batch endpoint. SDKs in TypeScript & Python. Realtime price feeds. MCP for Claude & Cursor.
Explore the docsSend any retailer product URL to /v1/extract with your API key. That's the entire integration.
Cartpie picks the right plugin, unblocks if needed, renders if needed, parses, normalizes.
{
"title": "POÄNG Armchair",
"price": "129.00",
"currency": "GBP",
"gtin": "0739…"
}A typed object lands in your handler — same shape every time, ready for your database or agent.
Curl it, hit it from your edge function, or grab the SDK. The wire format is the contract — no client required.
$ curl https://api.cartpie.com/v1/extract \ -H "x-api-key: cp_live_8f3a…" \ -H "content-type: application/json" \ -d '{ "url": "https://www.ikea.com/.../poang-armchair" }'
200 free extractions. Pay only for what comes back. No credit card, no sales call, no surprises.