REST + MCP · OpenAPI 3.1
UPC API — Programmatic Product Data by Barcode
Single REST endpoint accepts UPC, EAN, GTIN, ISBN, or Walmart item_id. Returns 14 structured fields with current price, sellers, 90-day history, and cross-retailer matches. 1,000 requests free per month.
Try:
200+ developers building agents, repricers, and arbitrage tools on the same API.
Get started in 30 seconds
Sign up at retailerapi.com/signup, copy your API key from /app/keys, and call the endpoint. The first 1,000 requests every month are free. Cards are not required at any tier transition until you cross 1,000 lookups.
cURL
curl https://api.retailerapi.com/v1/products/19667262713 \
-H "Authorization: Bearer rk_live_..."Node.js (with @retailerapi/sdk)
import { Retailerapi } from '@retailerapi/sdk';
const rapi = new Retailerapi(process.env.RETAILERAPI_KEY);
const product = await rapi.products.get('19667262713', {
includeCrossRetailer: true,
});
console.log(product.title, product.currentPrice);Python
import requests, os
r = requests.get(
"https://api.retailerapi.com/v1/products/19667262713",
headers={"Authorization": f"Bearer {os.environ['RETAILERAPI_KEY']}"},
params={"include_cross_retailer": "true"},
)
product = r.json()
print(product["title"], product["current_price"])MCP (Claude Desktop, Cursor)
{
"mcpServers": {
"retailerapi": {
"command": "npx",
"args": ["@retailerapi/mcp"],
"env": { "RETAILERAPI_KEY": "rk_live_..." }
}
}
}Full reference: docs.retailerapi.com. OpenAPI 3.1 schema: api.retailerapi.com/openapi-gpt-actions.json.
Sample responses
Click any product to see the same JSON the API returns, rendered as HTML.
item_id
44391605
Fresh Strawberries, 1 lb Container
item_id
5727557579
MuscleTech EuphoriQ Preworkout Powder and Energy Support, Boogieman Punch
item_id
609040889
Restaurado MacBook Air Laptop de 13.3" - chip Apple M1 - Memoria de 8GB - SSD de 256GB - Gris Espacial
item_id
44390948
Fresh Banana, Each
item_id
30992815
Versace Eros Eau de Toilette Spray, Cologne for Men, 1.7 Oz
item_id
5113225198
Waffles VS Pancakes – The Breakfast Battle Family Game for Ages 8+, by What Do You Meme? Family
Why developers picked us
- Predictable token math. 1 call = 1 token. Cross-retailer enrichment costs 0 extra tokens.
- Built MCP-native. Open-source MCP server, allow-listed by GPTBot, ClaudeBot, PerplexityBot.
- $0 to start. 1,000 calls per month, no card required.
- OpenAPI 3.1. Generate clients in any language. Same schema feeds the Custom GPT and the SDKs.
Frequently asked questions
What does the UPC API return?
A single GET /v1/products/{upc} returns 14 structured fields: title, brand, image_url, current_price, currency, in_stock boolean, seller_count, buy_box_seller, category, gtin, mpn, sales_rank, 90-day price_history array (or longer on Pro+), and a cross_retailer array with current prices at up to 6 other US retailers.
How is the UPC API authenticated?
Every request requires an Authorization header with a Bearer token. Issue tokens at app.retailerapi.com/app/keys. Tokens can be scoped to read-only or write (write covers sandbox endpoints). The free tier issues 1 token per account; paid tiers issue up to 10 tokens per organization for multi-environment use.
What is the rate limit on the UPC API?
Free tier is 5 requests per minute. Starter is 20 req/min, Growth 60 req/min, Pro 250 req/min, Business 500 req/min, Scale 1,000 req/min. Our backend currently caps per-key throttle at 100 req/min — tiers above that ship as parallel keys until the cap is lifted.
Is there a UPC API client library?
Yes. TypeScript SDK ships as @retailerapi/sdk on npm. Python and PHP SDKs are autogenerated from the OpenAPI 3.1 spec. The official MCP server is @retailerapi/mcp on npm, callable from Claude Desktop, Cursor, or any MCP-compatible AI agent.
How fresh is the UPC API price data?
Walmart prices refresh every 6 hours, so the maximum staleness is 5 hours 59 minutes. Cross-retailer cells refresh on demand on the first request, then cache for 30 days. Pro tier and above can request real-time refresh by passing ?refresh=true (costs 4 extra tokens).