Marketplace product data API
Marketplace prices, without
the scraping problem.
One HTTP call returns live price, seller, stock and specifications from a marketplace listing — as typed JSON, not HTML you have to parse. No proxies to buy, no bot walls to fight, no parser to keep repairing.
No card required. Live call in under a minute.
Live playground
Run a genuine lookup against a live listing and see the real response. Free with any account — no card, and it does not touch your credits.
Sign in to run a live lookup
Every press makes a real request to a live marketplace, so the playground is limited to signed-in accounts — 5 free lookups each, on top of your 250 trial credits.
{
"marketplace": "…",
"item_id": "974282675",
"title": "…",
"price": { "current": 14.97, "was": 17.99, "currency": "USD" },
"availability": { "in_stock": true, "transactable_offers": 1 },
"seller": { "name": "…", "is_first_party": true }
}
How a lookup works
Three steps, four seconds, one credit.
You send an ID
An item ID or a product URL, with your API key as a bearer token. No SDK, no session, no crawl configuration.
We fetch and parse
The live listing is retrieved through our own infrastructure, past the marketplace's bot protection, and the embedded product record is read directly rather than guessed at from rendered HTML.
You get typed JSON
The same field names and types every time, whichever marketplace it
came from. Missing values come back as null, never absent.
What comes back
Every lookup returns the same envelope. Pick a group to see the fields it contains.
price.current— the price a buyer sees nowprice.was— struck-through price when discountedprice.unit— price per unit of measureprice.unit_label— e.g.$8.44/ozprice.currency— ISO currency codeprice.is_reduced— whether it is on markdown
availability.in_stock— buyable right nowavailability.status— raw marketplace statusavailability.transactable_offers— offers that can actually be boughtavailability.additional_offers— competing offers on the listingfulfillment.type— shipped, store, marketplacefulfillment.shipping_price— where published
seller.name— who holds the buy boxseller.is_first_party— the marketplace itself, or a third partyseller.id— stable seller identifierseller.rating— seller rating out of 5seller.review_count— seller feedback volumeseller.type— raw seller classification
title,brand,modelupc— barcode where publishedspecifications— full attribute tablecategory_path— breadcrumb hierarchyimages— primary and gallery URLsreviews.rating,reviews.count
Drop it into your stack
It is a GET request with a header. There is nothing to install.
curl https://api.gravitrondata.com/v1/walmart/price \
-H "Authorization: Bearer gd_live_..." \
-G --data-urlencode "item_id=974282675"
import requests
r = requests.get(
"https://api.gravitrondata.com/v1/walmart/price",
params={"item_id": "974282675"},
headers={"Authorization": "Bearer gd_live_..."},
timeout=90,
)
data = r.json()
print(data["price"]["current"], data["seller"]["name"])
const r = await fetch(
"https://api.gravitrondata.com/v1/walmart/price?item_id=974282675",
{ headers: { Authorization: "Bearer gd_live_..." } },
);
const data = await r.json();
console.log(data.price.current, data.seller.name);
$ch = curl_init(
'https://api.gravitrondata.com/v1/walmart/price?item_id=974282675'
);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer gd_live_...'],
]);
$data = json_decode(curl_exec($ch), true);
echo $data['price']['current'];
Who uses this
Anyone whose margin depends on what a competitor is charging right now.
Repricers
Track competitor prices and buy-box ownership on the SKUs you sell. Knowing who holds the buy box matters as much as the number — a low price from a seller with no stock is not competition.
Arbitrage & sourcing
Check price, stock and seller before committing to inventory.
Distinguish a genuine deal from a dead listing still displaying an old
price, using transactable_offers.
Catalogue teams
Fill in UPCs, brands, specifications and images for products you already carry, from listings that already describe them properly.
Analysts & agencies
Build price histories and category benchmarks for clients without running scraping infrastructure or explaining a blocked crawler.
Build it yourself, or don't
An honest comparison. Building it is entirely possible — it is just rarely the cheapest thing you could be doing.
| Rolling your own | This API | |
|---|---|---|
| Proxy bandwidth | $0.18–$0.74 per 1,000 pages, before code | Included |
| Bot protection | TLS fingerprinting, rotating defences, ongoing work | Handled, continuously |
| Parser maintenance | Breaks whenever the marketplace restructures a page | Ours to fix, not yours |
| Output | HTML you normalise yourself | Typed JSON, stable shape |
| Time to first result | Days to weeks | About a minute |
| Failed requests | You pay for the bandwidth anyway | Not billed |
Marketplace coverage
Browse all 31 →31 marketplaces across 13 regions. Coverage expands continuously — see the catalogue for what you can call today and request the ones you need next.
Common questions
How fresh is the data?
Each uncached lookup fetches the live listing when you ask. Responses are cached five minutes, so treat any answer as up to five minutes old.
What if a lookup fails?
Roughly 1 in 20 uncached calls is blocked upstream and returns a
502. You are not charged, and a single retry almost always
succeeds.
Do credits expire?
No. Buy once, use them whenever. Unused credits are refundable within 14 days.
Is there a contract?
No. Prepaid credits, no subscription, no minimum. Stop whenever.
Start with 250 free credits
No card required. Generate a key and make a live call in under a minute.
Create an account