Zero-dependency detector for product identifiers. Recognizes UPC-12, EAN-13, ISBN-10, ISBN-13, GTIN-14, Amazon ASIN, and Walmart item_id from a raw string. Returns the type plus a normalized form, so your code can dispatch to the right lookup API.
npm i @retailerapi/identifierimport{detectIdentifier}from'@retailerapi/identifier';detectIdentifier('194629116676');// { type: 'upc', normalized: '194629116676' }detectIdentifier('978-0-553-21311-9');// { type: 'isbn', normalized: '9780553213119' }detectIdentifier('B07ABCDEFG');// { type: 'asin', normalized: 'B07ABCDEFG' }detectIdentifier('19667262713');// { type: 'item_id', normalized: '19667262713' }typeIdentifierType='upc'|'ean'|'isbn'|'gtin'|'item_id'|'asin';interfaceDetectedIdentifier{type: IdentifierType;normalized: string;}detectIdentifier(raw: string): DetectedIdentifier|null;identifierType(raw: string): IdentifierType|null;// shortcutisIdentifier(raw: string): boolean;// shortcut| Length | Prefix | Detected as |
|---|---|---|
| 10 chars, last is digit or X | — | isbn (ISBN-10) |
| 13 digits | 978 or 979 | isbn (ISBN-13) |
| 13 digits | anything else | ean |
| 14 digits | starts with 0 | strips the zero, detects again |
| 14 digits | non-zero | gtin |
| 12 digits | — | upc |
B0 + 8 alphanumeric | — | asin |
| 6-11 or 12+ digits | — | item_id (opaque retailer SKU) |
Inputs are stripped of whitespace, hyphens, and underscores before matching.
- Verify check digits. Real-world catalogs routinely surface off-by-one rows; an over-strict validator filters real data. If you need check-digit math, use a dedicated library.
- Normalize across forms (e.g. UPC-12 → EAN-13 by prefixing
0). That's a downstream concern.
@retailerapi/mcp— MCP server giving Claude/Cursor product-data tools backed by retailerapi.- retailerapi.com — Unified product API: Walmart, Amazon, eBay, Lowe's, Target, Best Buy, Home Depot. Free tier 1,000 lookups/mo.
MIT