Skip to main content

ASINScope Barcodes Lookup API Documentation

The ASINScope Barcodes Lookup API enables you to retrieve UPC and EAN barcode information for Amazon products by searching with product identifiers (ASINs, UPCs, or EANs). This endpoint is optimized for barcode discovery and validation, allowing you to enrich product catalogs or cross-reference identifiers across marketplaces.

Base URL

https://api.asinscope.com

Authentication

  • Pass your API key as the key query parameter on every request.
  • Find your key in the ASINScope API Dashboard after subscribing.

Example

curl --get 'https://api.asinscope.com/barcodes/lookup' \
--data-urlencode "key=YOUR_API_KEY" \
--data-urlencode "ean=4006381333931,0793610399007" \
--data-urlencode "domain=com"

Barcodes Lookup

Endpoint GET /barcodes/lookup

What it does Retrieves barcode information (UPC and EAN codes) for up to 50 identifiers per request. Use one identifier type per call:

  • asin — Amazon ASINs
  • upc — UPC codes
  • ean — EAN codes

The endpoint searches Amazon's catalog and returns all associated barcode data, including both primary and alternative UPC/EAN codes.

Parameters (query)

  • asin | upc | ean (string, required): Comma-separated list of 1–50 codes. Provide only one of these parameters per request.
  • domain (string, optional): Amazon marketplace domain. Default: com. Supported: com, ca, de, fr, it, nl, es, in, uk, jp, au, mx.
  • key (string, required): Your API key.
  • desc (string, optional): Set to 1 for additional product details (if supported). Default: 0.

Sample requests

Lookup by EAN codes:

curl --get 'https://api.asinscope.com/barcodes/lookup' \
--data-urlencode "key=YOUR_API_KEY" \
--data-urlencode "ean=4006381333931,0793610399007" \
--data-urlencode "domain=com"

Lookup by UPC codes:

curl --get 'https://api.asinscope.com/barcodes/lookup' \
--data-urlencode "key=YOUR_API_KEY" \
--data-urlencode "upc=012345678905,098765432109" \
--data-urlencode "domain=com"

Lookup by ASIN:

curl --get 'https://api.asinscope.com/barcodes/lookup' \
--data-urlencode "key=YOUR_API_KEY" \
--data-urlencode "asin=B088H39PXX,B00NNUMI86" \
--data-urlencode "domain=com"

Response

200 OK — JSON payload with barcode data.

Example:

{
"items": [
{
"asin": "B00NNUMI86",
"title": "La Roche-Posay Lipikar AP+ Triple Repair Moisturizing Cream...",
"upc": null,
"upcList": [],
"ean": null,
"eanList": [
"3337872418587"
]
},
{
"asin": "B088H39PXX",
"title": "CUKU Magnetic Dart Board - 12pcs Magnetic Darts...",
"upc": "793610399007",
"upcList": [
"793610399007"
],
"ean": "0793610399007",
"eanList": [
"0793610399007"
]
}
],
"dailyTokensLeft": 948,
"msBeforeNextDailyToken": 82524143
}

Field Descriptions

items - Array of product information objects

For each item:

  • asin - The Amazon Standard Identification Number
  • title - Product title from Amazon listing
  • upc - Primary UPC currently assigned (null if not available)
  • upcList - Array of all associated UPC codes (empty array if none)
  • ean - Primary EAN currently assigned (null if not available)
  • eanList - Array of all associated EAN codes (empty array if none)

dailyTokensLeft - Number of API tokens remaining for the day

msBeforeNextDailyToken - Milliseconds until daily token counter resets

Understanding UPC/EAN Fields

  • Individual fields (upc, ean): Show the primary barcode currently assigned by the seller or Amazon
  • List fields (upcList, eanList): Capture all associated barcodes including those from:
    • Listing merges
    • Product variations
    • Different market options
    • Historical barcode associations

Rate Limits

Daily Tokens

Each product identifier (ASIN/UPC/EAN) consumes one token.

Short-term Rate Limits

All subscription tiers have burst protection.

How Tokens are Consumed

  • Each product identifier consumes one token
  • If you request 15 EAN codes, you consume 15 tokens
  • Maximum 50 identifiers per request
  • Two limits apply independently:
    • Daily limit: If exhausted, API returns 429 Too Many Requests
    • Short-term limit: If exceeded, API returns 429 Too Many Requests with retry time

Error Handling

HTTP Status Codes

  • 200 OK - Request successful
  • 400 Bad Request - Invalid request format or parameters
  • 401 Unauthorized - Invalid or missing API key
  • 429 Too Many Requests - Rate limit exceeded
  • 500 Internal Server Error - Server-side error

Error Response Format

All error responses follow a consistent format:

{
"statusCode": number,
"error": "Error Type",
"message": "Human-readable error description"
}

Common Error Scenarios

  1. Missing or Invalid API Key
{
"error": "Invalid API key"
}

HTTP Status: 401 Unauthorized

2Exceeded Request Size (More than 50 codes)

{
"error": "The max number of codes in one request is 50, but 75 were requested."
}

HTTP Status: 400 Bad Request

3Rate Limit Exceeded (Short-term)

{
"statusCode": 429,
"message": "Too many requests. Please try again in 3 seconds",
"error": "Too Many Requests"
}
  1. Daily Limit Reached
{
"statusCode": 429,
"message": "Daily limit reached. Please try again in 127 minutes",
"error": "Too Many Requests"
}
  1. Invalid Parameters
{
"message": "Exactly one of asin, upc or ean must be present",
"error": "Bad Request",
"statusCode": 400
}

Code Samples

Python (requests)

import requests

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.asinscope.com/barcodes/lookup"

def lookup_barcodes_by_ean(eans, domain="com"):
"""
Retrieve barcode information by EAN codes

Args:
eans (list): List of EAN strings (max 50)
domain (str): Amazon marketplace domain

Returns:
dict: API response with barcode data
"""
params = {
"key": API_KEY,
"ean": ",".join(eans),
"domain": domain,
}
response = requests.get(BASE_URL, params=params, timeout=30)
response.raise_for_status()
return response.json()

if __name__ == "__main__":
try:
data = lookup_barcodes_by_ean(["4006381333931", "0793610399007"])
for item in data.get("items", []):
print(f"ASIN: {item['asin']}")
print(f"Title: {item['title']}")
print(f"UPCs: {', '.join(item['upcList']) if item['upcList'] else 'None'}")
print(f"EANs: {', '.join(item['eanList']) if item['eanList'] else 'None'}")
print("---")
print(f"Daily tokens remaining: {data['dailyTokensLeft']}")
except requests.HTTPError as err:
if err.response.status_code == 429:
print("Rate limited — wait briefly and retry.")
elif err.response.status_code == 403:
print("Access denied")
else:
print(f"Request failed: {err.response.status_code} {err.response.text}")

Node.js (axios)

const axios = require('axios');

const API_KEY = 'YOUR_API_KEY';
const BASE_URL = 'https://api.asinscope.com/barcodes/lookup';

async function lookupBarcodesByUpc(upcs, domain = 'com') {
const params = new URLSearchParams({
key: API_KEY,
upc: upcs.join(','),
domain,
});

const url = `${BASE_URL}?${params.toString()}`;
const response = await axios.get(url, { timeout: 30000 });
return response.data;
}

(async () => {
try {
const data = await lookupBarcodesByUpc(['012345678905', '098765432109']);
data.items.forEach(item => {
console.log(`ASIN: ${item.asin}`);
console.log(`Title: ${item.title}`);
console.log(`UPCs: ${item.upcList.join(', ') || 'None'}`);
console.log(`EANs: ${item.eanList.join(', ') || 'None'}`);
console.log('---');
});
console.log(`Daily tokens remaining: ${data.dailyTokensLeft}`);
} catch (err) {
if (err.response?.status === 429) {
console.error('Rate limited — wait briefly and retry.');
} else if (err.response?.status === 403) {
console.error('Access denied.');
} else {
console.error('Request failed:', err.message);
}
}
})();

Tips

  • Send at most 50 codes per call and use only one identifier type (asin, upc, or ean) per request.
  • Always specify domain if you target a marketplace other than com.
  • URL-encode query parameters; using curl --get --data-urlencode helps avoid encoding issues.
  • On 429 responses, check the error message to determine if it's a short-term burst limit (retry after seconds) or daily limit (retry after minutes/hours).
  • The upcList and eanList arrays may contain multiple codes due to listing merges, variations, or historical associations—use these for comprehensive barcode matching.
  • Monitor dailyTokensLeft in responses to track your remaining quota.
  • Implement exponential backoff when handling rate limit errors.

Support

For technical support, billing questions, or addon activation:


Last Updated: December 2025 Version: 1.0