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
keyquery 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 ASINsupc— UPC codesean— 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 to1for 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 Requestswith retry time
- Daily limit: If exhausted, API returns
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
- 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"
}
- Daily Limit Reached
{
"statusCode": 429,
"message": "Daily limit reached. Please try again in 127 minutes",
"error": "Too Many Requests"
}
- 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, orean) per request. - Always specify
domainif you target a marketplace other thancom. - URL-encode query parameters; using
curl --get --data-urlencodehelps avoid encoding issues. - On
429responses, 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
upcListandeanListarrays may contain multiple codes due to listing merges, variations, or historical associations—use these for comprehensive barcode matching. - Monitor
dailyTokensLeftin responses to track your remaining quota. - Implement exponential backoff when handling rate limit errors.
Support
For technical support, billing questions, or addon activation:
- Email: [email protected]
- Dashboard: https://asinscope.com/en/dashboard/asinscope-api
Last Updated: December 2025 Version: 1.0