Query any UPC/EAN and get structured product details in milliseconds. Stop scraping — start shipping.
ScanLookup is an API service that lets developers, businesses, and apps look up product details using barcodes (UPC, EAN), MPNs, or ASINs. It returns rich data such as product name, brand, images, categories, features, nutrition facts, and more.
Perfect for:
Our local database holds 3.4 million+ products, and we seamlessly fall back to public sources like OpenFoodFacts in real‑time whenever an item isn’t found locally.
curl -X GET \
https://scanlookup.com/api/product/5601234567890 \
-H "Authorization: Bearer <YOUR_API_KEY>"
# Response:
# {
# "code": "5601234567890",
# "status": 1,
# "status_verbose": "product found",
# "product": {
# "product_name": "Sample Product",
# "brand": "Example Co.",
# "category": "Beverages",
# "description": "A refreshing drink..."
# }
# }
import fetch from "node-fetch";
const res = await fetch("https://scanlookup.com/api/product/5601234567890", {
headers: { "Authorization": "Bearer <YOUR_API_KEY>" }
});
const data = await res.json();
console.log(data);
# Response:
# {
# "code": "5601234567890",
# "status": 1,
# "status_verbose": "product found",
# "product": {
# "product_name": "Sample Product",
# "brand": "Example Co.",
# "category": "Beverages",
# "description": "A refreshing drink..."
# }
# }
import requests, os
url = "https://scanlookup.com/api/product/5601234567890"
headers = {"Authorization": f"Bearer {os.getenv('SCANLOOKUP_API_KEY')}"}
print(requests.get(url, headers=headers).json())
# Response:
# {
# "code": "5601234567890",
# "status": 1,
# "status_verbose": "product found",
# "product": {
# "product_name": "Sample Product",
# "brand": "Example Co.",
# "category": "Beverages",
# "description": "A refreshing drink..."
# }
# }
package main
import ("encoding/json";"fmt";"net/http")
func main(){
req,_ := http.NewRequest("GET",
"https://scanlookup.com/api/product/5601234567890", nil)
req.Header.Set("Authorization","Bearer <YOUR_API_KEY>")
res,_ := http.DefaultClient.Do(req); defer res.Body.Close()
var data map[string]any
json.NewDecoder(res.Body).Decode(&data)
fmt.Println(data)
}
# Response:
# {
# "code": "5601234567890",
# "status": 1,
# "status_verbose": "product found",
# "product": {
# "product_name": "Sample Product",
# "brand": "Example Co.",
# "category": "Beverages",
# "description": "A refreshing drink..."
# }
# }
<?php
$ch = curl_init("https://scanlookup.com/api/product/5601234567890");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("SCANLOOKUP_API_KEY")],
CURLOPT_RETURNTRANSFER => true
]);
echo curl_exec($ch);
curl_close($ch);
?>
# Response:
# {
# "code": "5601234567890",
# "status": 1,
# "status_verbose": "product found",
# "product": {
# "product_name": "Sample Product",
# "brand": "Example Co.",
# "category": "Beverages",
# "description": "A refreshing drink..."
# }
# }
Start for free — scale as you grow.
Free
250 API calls / mo
Starter
5 000 API calls / mo
Scale
20 000 API calls / mo
Enterprise
100 000+ calls / mo