Barcodes
UPC and its add-on, EAN and ISBN, and how a barcode becomes an edition.
Reading a comic’s barcode
A modern US comic carries a 12-digit UPC-A and, to its right, a small 5-digit add-on. The UPC names the series (and the publisher, through its first six digits); the add-on, by the direct-market convention, names the issue:
| Digits | Means | Example: 00311 |
|---|---|---|
| 1–3 | Issue number (the last three digits, for long runs) | 003: issue 3 |
| 4 | Cover (1 is Cover A on Diamond-era books) | 1: Cover A |
| 5 | Printing (1 is the first) | 1: 1st printing |
A hint, not an identity
Publishers don’t always follow the convention, so the API treats the add-on as evidence and confirms it against the catalog. Older newsstand books use other UPC prefixes and a 2-digit add-on (a cover month), and many exclusive and virgin covers have no barcode at all.
Other codes
- ISBN (an EAN-13 starting 978 or 979): collected editions and graphic novels. A 5-digit add-on on a book is usually its price: a currency digit (5 is US dollars) then the price, so
51999is $19.99. - ISSN (an EAN-13 starting 977): magazines, with the issue in a 2-digit add-on.
- EAN-13 with a 5-digit add-on: comics from outside the US sometimes print these.
Known UPC prefixes tell the publisher and whether a copy is a newsstand or direct-market edition:
| Prefix | Publisher | Edition |
|---|---|---|
759606 | Marvel | direct market |
071486 | Marvel | newsstand |
761941 | DC Comics | direct market |
070989 | DC Comics | newsstand |
Looking one up
Look up a barcode takes the main code and, separately, the add-on. It answers how it read the code (the symbology, whether the check digit is right, and what the add-on suggests) and the candidate editions, best first. Each candidate has a score (0 to 1) and the reasons behind it, strongest first. The exact edition comes first when the catalog knows the code; then what the series and the add-on suggest.
curl 'https://collection.id/api/v1/catalog/barcode?code=759606089369&addon=00311'import { createCollectorClient } from '@collector/sdk';
const collector = createCollectorClient();
// The 12 digits under the bars, and the 5 small digits to their right.
const { barcode, candidates } = await collector.lookupBarcode({
query: { code: '759606089369', addon: '00311' },
});
if (barcode.comic) {
// A hint, not an identity: publishers don't always follow the convention.
const { issueNumber, coverVariant, printing } = barcode.comic;
console.log(`The add-on suggests issue ${issueNumber}, cover ${coverVariant}, printing ${printing}`);
}
for (const candidate of candidates) {
console.log(
`${candidate.seriesTitle} #${candidate.number}`,
candidate.editionName ?? '',
`score ${candidate.score.toFixed(2)}:`,
candidate.reasons.join('; '),
);
}- Digits that aren’t a UPC, EAN or ISBN are
400 invalid_barcode; a wrong check digit is422 checksum_failed(usually a misread digit). - Signed out, lookups are limited to 60 a minute per network. Signed in, candidates also include Metron’s.
- To combine a barcode with what the cover says and a photo of it, a signed-in collector can use Identify a book from evidence.
Next: Stores: inventory sync