Single Barcode Lookup
Synchronously resolves a single UPC, EAN, GTIN, ASIN, or Title. If resolution takes longer than 8 seconds, returns a 202 Accepted with a job ID - see Job Status & Polling for how to pick up the result.
Authentication
Every request needs exactly one of these:
# Either of the following:
# 1. Personal API key (generate one at /dashboard/api-keys)
Authorization: Bearer pm_live_xxxxxxxxxxxxxxxxxxxxxxxx
# 2. Browser session (signed in via Clerk) - no header needed, cookies do the workRequest Specification
POST /api/map
Content-Type: application/json
Authorization: Bearer pm_live_xxxxxxxxxxxxxxxxxxxxxxxx
{
"type": "UPC",
"value": "079361039905",
"marketplace": "amazon",
"region": "US"
}
# "type" also accepts "auto" (or can be omitted) to infer UPC/EAN/GTIN/ASIN/Title from the value's shape.
# "region" is optional - see "Region Filtering" below.
# Generate a personal API key at /dashboard/api-keys, or use a browser session (signed in via Clerk)."type": "auto", or omit type entirely, to have the server
infer UPC/EAN/GTIN/ASIN/Title from the shape of value.GET /api/map?type=UPC&value=079361039905&marketplace=amazon®ion=US works identically to the POST form above, using query parameters instead of a JSON body.
Region Filtering
Optional region parameter restricts the search to one specific Amazon
marketplace country instead of every marketplace ProductMapper covers. Accepts: US, CA, MX, BR, UK, DE, FR, IT, ES, NL, PL, SE, IN, JP, AU, SG. An
unrecognized region returns 400 rather than silently matching nothing.
Response Specification
listingDetails below is the full set of product and pricing data ProductMapper
resolves for a match. Amazon does not expose star ratings or review counts through this data
source, so those fields don't exist in this response; anything you don't see here genuinely
isn't available, not omitted from the docs.
HTTP/1.1 200 OK
Content-Type: application/json
{
"identifierType": "UPC",
"identifierValue": "079361039905",
"marketplace": "amazon",
"marketplaceId": "B01NAL48FU",
"amazonMarketplaceLabel": "US",
"timestamp": 1787503535096,
"listingDetails": {
"asin": "B01NAL48FU",
"title": "Nike Air Zoom Pegasus 36 Men's Running Shoes",
"brand": "Nike",
"manufacturer": "Nike Inc.",
"description": "Lightweight breathable mesh upper. Foam midsole for responsive cushioning. Rubber outsole for durable traction.",
"imageUrl": "https://m.media-amazon.com/images/I/71xyz.jpg",
"price": 119.95,
"formattedPrice": "$119.95",
"listPrice": 129.95,
"offerCount": 6,
"offerCountFba": 4,
"offerCountMerchant": 2,
"isBuyBoxWinner": true,
"salesRank": 1420,
"category": "Athletic Shoes",
"categoryGroup": "Sporting Goods",
"packageQuantity": 1,
"link": "https://www.amazon.com/dp/B01NAL48FU",
"isActive": true,
"identifiers": {
"upc": "079361039905",
"asin": "B01NAL48FU"
},
"marketplaceId": "ATVPDKIKX0DER",
"marketplaceLabel": "US"
}
}price, formattedPrice, listPrice, offerCount, offerCountFba, offerCountMerchant, isBuyBoxWinner, and salesRank are all null - never a fabricated placeholder - whenever Amazon doesn't report
that data point for the matched listing.marketplaceId is the matched product's ASIN (despite the name); the top-level amazonMarketplaceLabel (e.g. "US", "CA") is the real Amazon marketplace country this result was matched in.
Nested inside listingDetails, a separate marketplaceId/marketplaceLabel pair holds Amazon's own
internal marketplace identifier (e.g. ATVPDKIKX0DER for US) and its display label
- present for most results, but not guaranteed on every match.Multiple Region Matches
When no region filter is given and the identifier has matches in more than
one Amazon marketplace, the response includes a results array - one entry
per distinct region match, each with the same shape as the top-level object. The
top-level fields always mirror results[0] so every existing integration
that only reads the top level keeps working unchanged. A region-scoped request, or an
unscoped request with only one matching region, never includes results - just
the single object, as in the response above.
HTTP/1.1 200 OK
Content-Type: application/json
{
"identifierType": "UPC",
"identifierValue": "079361039905",
"marketplace": "amazon",
"marketplaceId": "B01NAL48FU",
"amazonMarketplaceLabel": "US",
"timestamp": 1787503535096,
"listingDetails": { "...": "same shape as above - this is the US match" },
"results": [
{
"identifierType": "UPC",
"identifierValue": "079361039905",
"marketplace": "amazon",
"marketplaceId": "B01NAL48FU",
"amazonMarketplaceLabel": "US",
"timestamp": 1787503535096,
"listingDetails": { "...": "..." }
},
{
"identifierType": "UPC",
"identifierValue": "079361039905",
"marketplace": "amazon",
"marketplaceId": "B0C8PVH9FU",
"amazonMarketplaceLabel": "CA",
"timestamp": 1787501234000,
"listingDetails": { "...": "..." }
}
]
}Queued Response (Slow Resolution)
If resolution hasn't completed within 8 seconds, the request returns immediately with a job ID instead of blocking further. See Job Status & Polling for how to retrieve the result once it's ready.
HTTP/1.1 202 Accepted
Content-Type: application/json
{
"status": "processing",
"message": "Request is queued. You can poll the status endpoint.",
"jobId": "641a5293-91de-41bb-a019-db228c58f04e"
}Not Found
Returned when the identifier has no match in Amazon's catalog.
HTTP/1.1 404 Not Found
Content-Type: application/json
{
"error": "Product mapping could not be resolved"
}