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.

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).