EAN & UPC GTIN Product Lookup Database
Pricing
$0.25 / 1,000 ean/gtins
EAN & UPC GTIN Product Lookup Database
Instantly retrieve detailed info about manufacturer, title, descriptions and country using EAN, UPC, or GTIN codes. The ultimate database solution for e-commerce data enrichment.
Pricing
$0.25 / 1,000 ean/gtins
Rating
0.0
(0)
Developer
SR
Maintained by CommunityActor stats
2
Bookmarked
121
Total users
5
Monthly active users
12 days ago
Last modified
Categories
Share
GTIN Database Scraper
Apify Actor and CLI tool for GTIN/EAN/UPC product information. Uses the ShoppingScraper API — a single API call per GTIN returns all product data.
Apify Actor
Actor Features
- Batch processing: Up to 100 GTINs per run
- Free tier: 100 GTINs maximum for free users
- Paid tier: Unlimited GTINs for paid users
- Async processing: 25 concurrent requests
- Global or country-specific: Optional country filter
- Single API source: product fields (title, description, brand, product name, net content, image, website, ASIN) and the full GS1 registry block (manufacturer, company prefix, GLN, licence type, member organisation, licensee address, country of origin) from one endpoint
- You pay for rows that carry data: a GTIN that comes back empty is not put in the dataset and is not charged
Actor Input
{"gtins": ["8714612112816","8719327348963","5702016913262","7421957579501","4009839372766"],"country": "nl"}
Input Fields:
gtins(required): Array of GTIN/EAN/UPC codes (max 100 per batch)country(optional): Two-letter country code (e.g., "nl", "de", "us") — defaults to "uk"
Actor Output
One dataset row per GTIN that returned data:
{"gtin": "8714612112816","barcode_format": "EAN-13","title": "","description": "","brand_name": "","product_name": "","manufacturer": "XD Connects B.V.","country_origin": "Netherlands","address": "2288 GK Lange Kleiweg 6-28 RIJSWIJK ZH Netherlands","gs1_company_prefix": "8714612","gln_number": "","license_type": "GS1 Company Prefix","gs1_member_org": "GS1 Netherlands","net_content": "","image_url": "","website": "","asin": "","code_category": "","status": "found","charged": true,"data_fields": ["manufacturer", "gs1_company_prefix", "license_type", "gs1_member_org", "country_origin", "address"]}
Most barcodes carry no marketing title. The GS1 registry block is what comes
back, and data_fields names exactly which fields this row has a value for.
What you are charged for
You are charged per dataset row, so a row only reaches the dataset when it
carries at least one real fact about the product or its licensee — any of
title, description, brand_name, product_name, net_content,
image_url, website, asin, code_category, manufacturer, gln_number,
gs1_company_prefix, license_type, gs1_member_org, country_origin,
address.
gtin and barcode_format do not count. The first echoes what you sent and
the second is derived from its length, so a row holding only those two tells
you nothing you did not already know.
GTINs that produce nothing are not in the dataset and are not billed.
They are still reported, in the UNCHARGED key-value record, which the run's
Output tab links:
{"count": 2,"gtins": [{"gtin": "9999999999994", "status": "not_found", "reason": "not_found"},{"gtin": "8719327348963", "status": "lookup_failed", "reason": "http_502"}]}
not_found— the lookup completed and this barcode has no record. A real answer.lookup_failed— the lookup itself did not get through, so the barcode may well exist. Worth retrying.
The run's OUTPUT record carries the counts: charged, notCharged,
found, notFound, lookupFailed.
Local/CLI Usage
Setup
$source .venv/bin/activate && uv pip install -r requirements.txt
Run
python3 interactive_scraper.pypython3 interactive_scraper.py --country nl
Features
- Accepts all formats: UPC (12), EAN-8 (8), EAN-13/GTIN-13 (13), GTIN-14 (14)
- Auto-normalization: Pads shorter GTINs to 13 digits with leading zeros
- 25 concurrent requests with connection pooling
- Retry with exponential backoff (3 attempts with jitter)
- Timing metrics: Total time, time per EAN, match rate
- Double enter as input termination