Go-UPC APIgo-upc.com ↗
Look up product details by UPC, EAN, or ISBN barcode using the Go-UPC API. Returns title, brand, category, specs, image URL, and more for any scanned code.
What is the Go-UPC API?
The Go-UPC API exposes one endpoint — lookup_barcode — that returns up to 10 structured fields for any UPC, EAN, or ISBN code you query. Submit a numeric barcode string and get back the product title, brand, model, category, volume, image URL, and a key-value specs object covering additional attributes. The database covers UPC-A, UPC-E, EAN-8, EAN-13, EAN-14, ISBN-10, and ISBN-13 formats.
curl -X GET 'https://api.parse.bot/scraper/42e51bc0-c4b6-47e5-aded-b9c77d672dc8/lookup_barcode?code=049000000443' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace go-upc-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Go-UPC Barcode Search API — look up products by barcode."""
from parse_apis.go_upc_barcode_search_api import GoUPC, ProductNotFound
client = GoUPC()
# Look up a product by its barcode (Coca-Cola)
product = client.products.get(code="049000000443")
print(f"Product: {product.title}, Brand: {product.brand}")
print(f"Category: {product.category_path}")
print(f"Volume: {product.volume}")
# Access detailed attributes
if product.ingredients:
print(f"Ingredients: {product.ingredients[:80]}...")
if product.specs:
for key, value in product.specs.items():
print(f" {key}: {value}")
break # just show one spec entry
# Handle a barcode that doesn't exist
try:
missing = client.products.get(code="0000000000000")
print(f"Found: {missing.title}")
except ProductNotFound as exc:
print(f"Not found for barcode: {exc.code}")
print("exercised: products.get / typed fields / ProductNotFound error handling")
Look up a product by its barcode number (UPC, EAN, ISBN, etc.). Returns detailed product information including title, brand, category, description, ingredients, specs, and images when available. Returns null fields when information is not available for a given product.
| Param | Type | Description |
|---|---|---|
| coderequired | string | The barcode number to look up (UPC-A, UPC-E, EAN-8, EAN-13, EAN-14, ISBN-10, ISBN-13). Only digits are used; non-digit characters are stripped. |
{
"type": "object",
"fields": {
"ean": "string or null - EAN code",
"upc": "string or null - UPC code",
"brand": "string or null - product brand",
"model": "string or null - product model number",
"specs": "object - additional product attributes as key-value pairs",
"title": "string - product name",
"volume": "string or null - product volume/size",
"barcode": "string - the barcode number queried",
"category": "string or null - product category",
"imageUrl": "string or null - product image URL",
"inferred": "boolean - whether the barcode was inferred from a related code",
"allergens": "string or null - allergen information",
"barcodeUrl": "string or null - barcode image URL",
"description": "string or null - product description",
"ingredients": "string or null - product ingredients",
"categoryPath": "string or null - full category path separated by ' > '",
"manufacturer": "string or null - manufacturer name",
"country_of_origin": "string or null - country of origin"
},
"sample": {
"data": {
"ean": "0049000000443",
"upc": "049000000443",
"brand": "Coca-Cola",
"model": null,
"specs": {
"Kosher": "Yes",
"Organic": "No",
"Department": "Beverages"
},
"title": "Coca-Cola Soda Soft Drink Bottle, 20 Fl Oz",
"volume": "591 mL",
"barcode": "049000000443",
"category": "Soda",
"imageUrl": "https://go-upc.s3.amazonaws.com/images/226949869.png",
"inferred": false,
"allergens": "Free From Does Not Contain Declaration Obligatory Allergens.",
"barcodeUrl": "https://go-upc.com/barcode/049000000443",
"description": "Coca-Cola is the soda that brings people together...",
"ingredients": "Carbonated Water, High Fructose Corn Syrup, Caramel Color, Phosphoric Acid, Natural Flavors, Caffeine",
"categoryPath": "Beverages > Soda",
"manufacturer": null,
"country_of_origin": null
},
"status": "success"
}
}About the Go-UPC API
What the API Returns
The lookup_barcode endpoint accepts a single required parameter, code, which must be a digit-only string representing a valid barcode. The response includes core identifiers (ean, upc, barcode), human-readable fields (title, brand, model, category, volume), a imageUrl for product photography, and a freeform specs object containing additional attributes as key-value pairs. Any field that has no data for a given product is returned as null rather than omitted, so you can reliably check each field without conditional existence tests.
Barcode Format Support
The API normalizes the input code to its digit content, meaning you can pass raw scans from handheld scanners or mobile apps without stripping check digits manually. It handles UPC-A (12 digits), UPC-E (8 digits), EAN-8, EAN-13, EAN-14, ISBN-10, and ISBN-13. The response echoes the queried value back in the barcode field, and where both ean and upc representations exist, both are returned so you can cross-reference against your own database.
Data Coverage and Gaps
Product coverage spans consumer goods across grocery, electronics, books, and general retail. The specs object content varies by product category — a food item might include nutritional facts or ingredients, while a hardware item might list dimensions or compatibility. Not every product in the database has image URLs or populated category fields; you should treat all nullable fields defensively in your integration.
Typical Integration Pattern
A common pattern is to call lookup_barcode once per scan event in a mobile or POS app, cache the response by barcode value, and fall back gracefully when title is the only populated field. For bulk catalog enrichment, batching sequential requests against a list of codes is the straightforward approach given the single-endpoint design.
The Go-UPC API is a managed, monitored endpoint for go-upc.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when go-upc.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official go-upc.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Enrich a product catalog by resolving scanned barcodes to titles, brands, and categories.
- Power a mobile price-comparison app that shows product details from a camera scan.
- Validate incoming inventory against known product names and model numbers using the
modelfield. - Populate an e-commerce listing with the
imageUrl,brand, andspecsreturned for a barcode. - Cross-reference
eanandupcfields to reconcile product identifiers across supplier databases. - Auto-classify products by
categoryduring warehouse intake without manual data entry. - Retrieve book metadata (title, brand as publisher) by submitting an ISBN-13 code.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Go-UPC have an official developer API?+
What does the `specs` field contain and when is it populated?+
specs field is a key-value object whose keys and values vary by product type. For food products it may include ingredient lists or allergen data; for electronics it might contain dimensions or compatibility notes. It is an empty object when no additional attributes are available — it is never null, so you can safely iterate it without a null check.Does the API return pricing or availability data?+
Can I look up multiple barcodes in a single request?+
lookup_barcode endpoint accepts one code value per request. Bulk lookups require sequential or parallel individual calls. You can fork this API on Parse and revise it to add a batch endpoint that accepts an array of codes.What happens when a barcode is not found in the database?+
title field will be absent or the response will indicate no product was matched. All nullable fields (ean, upc, brand, model, category, imageUrl, volume) return null in that case. The barcode field always echoes the queried value regardless of match status.