# Product data APIs: a buyer’s and builder’s guide

> What a product data API returns, how identifiers are matched, how fresh prices are, how pricing works and how to choose one, with real requests and costs.

*Source: https://shopsavvy.com/learn/product-data-api-guide · Published 2026-10-12*

---

## What a product data API does

A product data API turns something that identifies a product (a barcode, an Amazon ASIN, a retailer’s product page URL, a model number or a plain-language name) into structured data your code can use: what the product is, who sells it right now and for how much, and what it sold for before. You call it over HTTPS and get JSON or CSV back, instead of fetching and parsing retailer web pages yourself.

APIs sold under this name come in four shapes, and it helps to know which one you are looking at before comparing prices:

| Kind | What you get | Good for | Watch for |
| --- | --- | --- | --- |
| Barcode or catalog database | Product name, brand, images, identifiers | Enriching a catalog, scan-to-identify | Prices are often missing, old, or a single list price |
| Single-marketplace API | One marketplace’s listings, rank and history | Sellers working one marketplace | No view of any other store |
| Scraping or search-results API | A page or a search result, parsed | Any page you can name | Matching, history and cleanup are your job |
| Multi-retailer product and price API | A product record, current offers from many retailers, and history | Price comparison, deal checks, valuation, monitoring | Coverage and freshness vary by retailer; test with your own products |

The ShopSavvy Data API is the last kind: a catalog of 30M+ products, offers from tens of thousands of retailers, and price history back to 2011, dense from 2019. It is used as the running example below because its costs and limits are public; the questions apply to any vendor.

## What the data looks like

A product data API answers in three layers:

- The product record: title, brand, category, images and the identifiers it is known by (barcode, ASIN, model number, MPN).
- Offers: one per retailer listing, each with the retailer, price, currency, condition (new, used, refurbished), availability, a link to the listing, the time the price was last seen, and the seller when it is a marketplace listing.
- Price history: dated price points for each offer, for the window you ask about.

Current offers for one product by its UPC (from the Data API quick start):

```bash
curl "https://api.shopsavvy.com/v1/products/offers?ids=611247373064" \
  -H "Authorization: Bearer $SHOPSAVVY_API_KEY"
```

The response holds one entry per product found. Each carries a match object that says which identifier matched and how many catalog products shared it. Identifiers that match nothing are left out of the response and cost nothing.

## Identifiers and matching

Most bad product data is a matching problem: the right price for the wrong item. How precise a lookup can be depends on what you send.

| Identifier | Precision | Notes |
| --- | --- | --- |
| Barcode (UPC, EAN, ISBN) | Exact | The best key for packaged goods. Some barcodes are reused by manufacturers or listed twice, so a good API says when a code was shared. |
| Amazon ASIN | Exact | One listing on one marketplace; variants (colors, sizes) often have their own ASIN. |
| Retailer product URL | Exact when known | Works when the API has seen that listing; tracking parameters should be stripped first. |
| Model number or MPN | Usually exact | Can be shared across colors, bundles or regional versions. |
| Product name | A best guess | Use keyword search, let a person pick, then look the product up by its identifier. |

[UPC and barcode lookup APIs: how lookups work](https://shopsavvy.com/learn/barcode-lookup-api): Barcode formats, check digits, shared barcodes and batch lookups in detail.

## Freshness: real-time, cached and scheduled

“Real-time” can mean the price was fetched when you asked, or that it was fetched recently. What matters for a decision is that every price carries the time it was seen, so you can judge it yourself. A deal alert needs prices from the last few hours; enriching a catalog can live with prices that are weeks old.

In the ShopSavvy Data API every offer has a timestamp. You can schedule products for refreshes hourly, daily or weekly for retailers we can re-check through an official retailer API; other offers update as ShopSavvy sees them.

[Real-time vs cached pricing data](https://shopsavvy.com/learn/real-time-vs-cached-pricing-data): The trade-offs of each, what to ask a provider, and code that filters offers by how recently they were seen.

## Price history

History is what turns a price into an answer: whether today’s price is low for this product, what an item cost on the day it was lost, or how often a competitor moves. Ask how far back a vendor’s history goes, how dense it is for your products, and whether points are filtered for mismatched listings.

[Price history APIs: what they are and how to use them](https://shopsavvy.com/learn/price-history-api): A real history request, what it costs, and how to compute a product’s normal selling price.

## How product data APIs are priced

Vendors charge per request, per result, by monthly subscription with a call or credit allowance, or per record for bulk files. Per-result pricing is easier to predict when part of your list will not be found, because misses are free. ShopSavvy publishes its credit costs:

- Product details: 1 credit per product found.
- Keyword search: 1 credit per product returned.
- Current offers at every retailer: 3 credits per product; at one retailer: 2 credits per product.
- Price history: offer cost per product plus 1 credit per day of the window, charged once per request of up to 100 identifiers, and only when offers are found.

Worked example: 500 products checked at every retailer once a week (500 × 4 × 3 = 6,000 credits) plus one 30-day history pull for all of them (1,650 credits) is 7,650 credits a month, which fits the Professional plan ($199 a month for 10,000 credits). Plans start at $49 a month for 1,000 credits, with a 14-day trial on Starter.

[Product data API cost calculator](https://shopsavvy.com/tools/product-data-api-cost-calculator): Put in your own volumes and see the credits and the cheapest plan.

[How product data APIs are priced](https://shopsavvy.com/learn/product-data-api-pricing): Tokens, requests, credits and records: what each pricing model charges for, with two worked examples.

## Building it yourself

Scraping a handful of retailers yourself is a reasonable start, and it is the right answer when you need a page or a field no API has. Each retailer adds a parser to maintain, blocking to work around, product matching across stores, and history to store. Past a few retailers, that upkeep is usually the larger cost.

[Web scraping vs a product data API](https://shopsavvy.com/learn/scraping-vs-product-data-api): What each path costs and when each one fits.

## How to choose one

1. Run your own product list, not the vendor’s demo products, and count how many come back with prices from the retailers you care about.
2. Check that every price carries the time it was seen, and how old the prices are for your products.
3. Look at how matches are reported: does the response say which identifier matched and whether it was shared?
4. Read the cost rules for misses, history windows and batch requests, and estimate a real month.
5. Check the rate limits against your peak (ShopSavvy: 1,000 requests per rolling hour per account).
6. Find out what you can keep and how you leave: data retention, notice periods, exports.

[How to evaluate a product pricing data API](https://shopsavvy.com/data/evaluate): Seven due-diligence questions with ShopSavvy’s own answers and where to check them. A downloadable checklist is at /templates/product-data-api-evaluation-checklist.

## What teams build with one

- Price-comparison, deal and grocery apps: every offer for a scanned barcode, plus history for deal checks (/data/for-price-comparison-apps).
- Shopping assistants and agents: product search and current prices behind a chat (/data/for-shopping-assistants).
- Insurance and claims: today’s replacement cost and the price on the date of loss (/data/for-insurance).
- Resale and recommerce: current new and used prices to set trade-in offers (/data/for-resale).
- POS and catalog tools: barcode to product record, at the counter or in bulk (/data/for-pos).
- Retail analytics: current and historical prices across retailers (/data/for-retail-analytics).

## Frequently asked questions

**What is a product data API?** A web API that takes a product identifier, such as a barcode, ASIN, product URL or model number, and returns structured data about that product: its details, current prices from retailers and, with some APIs, its price history.

**How much does a product data API cost?** It depends on the vendor and the volume. The ShopSavvy Data API starts at $49 a month for 1,000 credits, with a 14-day trial on Starter; a product lookup costs 1 credit per product found, current offers at every retailer 3 credits per product, and identifiers that match nothing cost nothing.

**Is a product data API better than scraping?** For many retailers, identifier-based matching and price history, an API is usually cheaper than building and maintaining scrapers. For one or two sites, or for data no API carries (such as stock at a specific physical store), scraping can be the better fit.

**Does a product data API have prices from every store?** No API covers every store. ShopSavvy returns offers from tens of thousands of retailers, US-centric, and offers are returned in US dollars. Test coverage with your own product list before you commit.

## Related

- [ShopSavvy Data API](https://shopsavvy.com/data)
- [Product data APIs compared](https://shopsavvy.com/compare/product-data-apis)
- [How to evaluate a pricing data API](https://shopsavvy.com/data/evaluate)
- [Product data API cost calculator](https://shopsavvy.com/tools/product-data-api-cost-calculator)
- [Data API documentation](https://shopsavvy.com/data/documentation)
- [Data API playground](https://shopsavvy.com/data/playground)
