# UPCitemdb

> Turn a barcode into a product. UPCitemdb holds records for around 735 million barcodes (what the thing is, who makes it, what it looks like, and what the shops it tracks are charging), so a scan, a supplier's spreadsheet or a stock take can be filled in without anyone typing a product name. Look up one code or a whole column of them, or search by name when you don't have a code at all. Free to use with no account; add an API key when you need a bigger daily allowance.

App · E-Commerce · 3 actions. Web page: https://docs.lodol.com/docs/integrations/upcitemdb

## Actions

### Look up a product

Turn a barcode into a product: its name, brand, model, category, pictures, and what the shops UPCitemdb tracks are charging, cheapest in stock first. Takes the number printed under the bars (a UPC, an EAN, a GTIN or a book's ISBN) or an Amazon ASIN, and works out which it is. The short barcode on a small package is expanded and an old 10-digit ISBN is converted, so the code you actually have is the code that works. A barcode nobody has comes back as not found rather than as an error, so a workflow can branch on it.

**Inputs**

- Barcode (`code`, text, required): The number printed under the bars on the product: a UPC, an EAN, a GTIN, or a book's ISBN. Spaces and hyphens don't matter. An Amazon ASIN works here too.

**Outputs**

- `allowance_resets_at` (text): When that allowance comes back, as a date and time (UTC).
- `asin` (text): Amazon's own code for the product, when it is known. Empty for most products.
- `barcode` (text): The barcode UPCitemdb files this product under, as 13 digits. This is the one to store and to look it up by again.
- `best_offer` (object): The cheapest listing that is actually in stock -- the one to quote or to watch for a price drop. Empty when nothing is in stock.
- `brand` (text): Who makes it.
- `category` (text): Where it sits in Google's product categories, as a path: 'Home & Garden > Kitchen & Dining > Kitchen Tools'.
- `code_given` (text): The code this row was asked for, exactly as it was given, so results can be written back beside the list they came from.
- `color` (text): Its colour, as the manufacturer names it.
- `currency` (text): The currency the prices below are in.
- `description` (text): The manufacturer's description, where there is one.
- `dimension` (text): How big it is, as the manufacturer writes it, e.g. '8 X 1 X 1 inches'.
- `ean` (text): The 13-digit EAN.
- `found` (true/false): Whether UPCitemdb holds a record for this code. Everything below is empty when it does not.
- `gtin` (text): The 14-digit GTIN, when the product has one.
- `highest_recorded_price` (number): The highest price it has ever seen, on the same basis.
- `image_url` (text): A picture of the product, ready to put in an email, a page or a record.
- `images` (list): Every picture UPCitemdb holds, best first.
- `in_stock_offer_count` (number): How many of them have it in stock.
- `lowest_recorded_price` (number): The lowest price UPCitemdb has ever seen for this product, across every shop and the whole time it has been watching. This is a historical low, not today's price -- today's prices are in Offers.
- `message` (text): Why nothing came back, when nothing did. Empty otherwise.
- `model` (text): The manufacturer's model number.
- `offer_count` (number): How many shops are listed.
- `offers` (list): What the shops UPCitemdb tracks are charging, cheapest first, with anything sold out after the rest.
- `product_url` (text): The product's page on upcitemdb.com, for a person who wants to see the record themselves.
- `read_as` (text): Empty unless the code had to be converted before it could be looked up -- a short barcode expanded, or an old 10-digit ISBN read as a 13-digit one -- in which case this says what it was read as.
- `requests_left_today` (number): How many more requests UPCitemdb will answer today. Without an API key the allowance is 100 a day and is shared with everyone else using UPCitemdb from Lodol without one, so it is worth checking before a step that looks up a long list.
- `size` (text): Its size, as the manufacturer writes it: a clothing size, a volume, a pack count.
- `title` (text): The product's name.
- `upc` (text): The 12-digit UPC-A, when the product has one. This is the same number as the barcode above without its leading zero.
- `weight` (text): How heavy it is, as the manufacturer writes it, e.g. '0.1 Pounds'.

**Example output**

```json
{
  "allowance_resets_at": "2026-09-15T00:00:00+00:00",
  "asin": "B0000DJYE3",
  "barcode": "4002293401102",
  "best_offer": {
    "condition": "New",
    "currency": "USD",
    "domain": "chefscatalog.com",
    "in_stock": true,
    "link": "https://www.upcitemdb.com/norob/alink/?id=u2o243z2w203b454s2",
    "list_price": 26.0,
    "merchant": "Chefs Catalog",
    "price": 15.95,
    "shipping": "Free Shipping",
    "shipping_cost": 0.0,
    "title": "Wusthof Gourmet 3-in. Serrated Paring Knife",
    "updated": "2015-12-01T16:47:55+00:00"
  },
  "brand": "Wusthof",
  "category": "Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils",
  "code_given": "4002293401102",
  "color": "Multi",
  "currency": "USD",
  "description": "Wusthof Gourmet 3-in. Serrated Paring Knife",
  "dimension": "8 X 1 X 1 inches",
  "ean": "4002293401102",
  "found": true,
  "gtin": "",
  "highest_recorded_price": 32.94,
  "image_url": "https://www.chefscatalog.com/img/products/500x500/99528_500.jpg",
  "images": [
    "https://www.chefscatalog.com/img/products/500x500/99528_500.jpg"
  ],
  "in_stock_offer_count": 1,
  "lowest_recorded_price": 12.99,
  "message": "",
  "model": "4011-7",
  "offer_count": 1,
  "offers": [
    {
      "condition": "New",
      "currency": "USD",
      "domain": "chefscatalog.com",
      "in_stock": true,
      "link": "https://www.upcitemdb.com/norob/alink/?id=u2o243z2w203b454s2",
      "list_price": 26.0,
      "merchant": "Chefs Catalog",
      "price": 15.95,
      "shipping": "Free Shipping",
      "shipping_cost": 0.0,
      "title": "Wusthof Gourmet 3-in. Serrated Paring Knife",
      "updated": "2015-12-01T16:47:55+00:00"
    }
  ],
  "product_url": "https://www.upcitemdb.com/upc/4002293401102",
  "read_as": "",
  "requests_left_today": 87,
  "size": "",
  "title": "Wusthof Gourmet 3-Inch Serrated Paring Knife",
  "upc": "",
  "weight": "0.1 Pounds"
}
```

### Look up several products

Give this a list of barcodes and get one row back for each (in the order they were given, and whether or not UPCitemdb holds a record), so the results can be written straight back beside the column they came from. This is the step behind filling in a supplier's spreadsheet, enriching a stock take, or checking a batch of scans. A barcode the list repeats is looked up, and returned, once.

**Inputs**

- Barcodes (`codes`, list, required): The barcodes to look up, up to 50 at a time. Type them in, or wire in a column from a spreadsheet or an earlier step. A long list takes a moment and uses more of your daily allowance.

**Outputs**

- `allowance_resets_at` (text): When that allowance comes back, as a date and time (UTC).
- `count` (number): How many barcodes were looked up.
- `found_count` (number): How many of them UPCitemdb had a record for.
- `not_found` (list): The barcodes with no record, exactly as they were given.
- `products` (list): One row per distinct barcode asked for, in the order they were given.
- `requests_left_today` (number): How many more requests UPCitemdb will answer today. Without an API key the allowance is 100 a day and is shared with everyone else using UPCitemdb from Lodol without one, so it is worth checking before a step that looks up a long list.

**Example output**

```json
{
  "allowance_resets_at": "2026-09-15T00:00:00+00:00",
  "count": 2,
  "found_count": 1,
  "not_found": [
    "0000000000000"
  ],
  "products": [
    {
      "asin": "B0000DJYE3",
      "barcode": "4002293401102",
      "best_offer": {
        "condition": "New",
        "currency": "USD",
        "domain": "chefscatalog.com",
        "in_stock": true,
        "link": "https://www.upcitemdb.com/norob/alink/?id=u2o243z2w203b454s2",
        "list_price": 26.0,
        "merchant": "Chefs Catalog",
        "price": 15.95,
        "shipping": "Free Shipping",
        "shipping_cost": 0.0,
        "title": "Wusthof Gourmet 3-in. Serrated Paring Knife",
        "updated": "2015-12-01T16:47:55+00:00"
      },
      "brand": "Wusthof",
      "category": "Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils",
      "code_given": "4002293401102",
      "color": "Multi",
      "currency": "USD",
      "description": "Wusthof Gourmet 3-in. Serrated Paring Knife",
      "dimension": "8 X 1 X 1 inches",
      "ean": "4002293401102",
      "found": true,
      "gtin": "",
      "highest_recorded_price": 32.94,
      "image_url": "https://www.chefscatalog.com/img/products/500x500/99528_500.jpg",
      "images": [
        "https://www.chefscatalog.com/img/products/500x500/99528_500.jpg"
      ],
      "in_stock_offer_count": 1,
      "lowest_recorded_price": 12.99,
      "message": "",
      "model": "4011-7",
      "offer_count": 1,
      "offers": [
        {
          "condition": "New",
          "currency": "USD",
          "domain": "chefscatalog.com",
          "in_stock": true,
          "link": "https://www.upcitemdb.com/norob/alink/?id=u2o243z2w203b454s2",
          "list_price": 26.0,
          "merchant": "Chefs Catalog",
          "price": 15.95,
          "shipping": "Free Shipping",
          "shipping_cost": 0.0,
          "title": "Wusthof Gourmet 3-in. Serrated Paring Knife",
          "updated": "2015-12-01T16:47:55+00:00"
        }
      ],
      "product_url": "https://www.upcitemdb.com/upc/4002293401102",
      "read_as": "",
      "size": "",
      "title": "Wusthof Gourmet 3-Inch Serrated Paring Knife",
      "upc": "",
      "weight": "0.1 Pounds"
    },
    {
      "asin": "",
      "barcode": "0000000000000",
      "code_given": "0000000000000",
      "found": false,
      "message": "UPCitemdb holds no product for 0000000000000."
    }
  ],
  "requests_left_today": 87
}
```

### Search for products

Find products by name when you don't have a barcode, and get their barcodes back. Search the whole catalogue or just books, narrow it by brand, category, model number or a word in the title, and choose whether every word has to appear or the closest matches will do. Each result is the same full product record a barcode lookup returns, prices and pictures included. Worth knowing: searching is limited more tightly than looking a barcode up on UPCitemdb's free plan, so a search-heavy workflow is the first reason to add a key.

**Inputs**

- Search for (`keywords`, text, required): What to search for: a product name, a brand, a model number, or any words from the title.
- Look in (`item_type`, text): Which part of the catalogue to search. One of: `product` (Products), `book` (Books). Default: `product`.
- Matching (`match`, text): How closely a product has to match. Requiring every word finds fewer but better matches; the other setting always finds something. One of: `all_words` (Every word must appear), `best_matches` (Closest matches, even if some words are missing). Default: `all_words`.
- Brand (`brand`, text): Only products from this brand.
- Category (`category`, text): Only products in a category matching this word, e.g. 'phones' or 'kitchen'.
- Title contains (`title_contains`, text): Only products whose title contains this, for narrowing a broad search to one variant, e.g. '64gb'.
- Model number (`model`, text): Only products with this manufacturer's model number.
- How many products (`limit`, number): How many products to bring back, up to 50. Asking for more takes longer and uses more of your daily allowance. From 1 to 50. Default: `10`.

**Outputs**

- `allowance_resets_at` (text): When that allowance comes back, as a date and time (UTC).
- `count` (number): How many products came back.
- `keywords` (text): What was searched for.
- `more_available` (true/false): Whether there are more beyond the ones returned. Ask for more with 'How many products'.
- `products` (list): The products found, best match first.
- `requests_left_today` (number): How many more requests UPCitemdb will answer today. Without an API key the allowance is 100 a day and is shared with everyone else using UPCitemdb from Lodol without one, so it is worth checking before a step that looks up a long list.
- `total_matches` (number): How many products UPCitemdb says match altogether, which is usually far more than were asked for.

**Example output**

```json
{
  "allowance_resets_at": "2026-09-15T00:00:00+00:00",
  "count": 1,
  "keywords": "wusthof paring knife",
  "more_available": true,
  "products": [
    {
      "asin": "B0000DJYE3",
      "barcode": "4002293401102",
      "best_offer": {
        "condition": "New",
        "currency": "USD",
        "domain": "chefscatalog.com",
        "in_stock": true,
        "link": "https://www.upcitemdb.com/norob/alink/?id=u2o243z2w203b454s2",
        "list_price": 26.0,
        "merchant": "Chefs Catalog",
        "price": 15.95,
        "shipping": "Free Shipping",
        "shipping_cost": 0.0,
        "title": "Wusthof Gourmet 3-in. Serrated Paring Knife",
        "updated": "2015-12-01T16:47:55+00:00"
      },
      "brand": "Wusthof",
      "category": "Home & Garden > Kitchen & Dining > Kitchen Tools & Utensils",
      "color": "Multi",
      "currency": "USD",
      "description": "Wusthof Gourmet 3-in. Serrated Paring Knife",
      "dimension": "8 X 1 X 1 inches",
      "ean": "4002293401102",
      "found": true,
      "gtin": "",
      "highest_recorded_price": 32.94,
      "image_url": "https://www.chefscatalog.com/img/products/500x500/99528_500.jpg",
      "images": [
        "https://www.chefscatalog.com/img/products/500x500/99528_500.jpg"
      ],
      "in_stock_offer_count": 1,
      "lowest_recorded_price": 12.99,
      "message": "",
      "model": "4011-7",
      "offer_count": 1,
      "offers": [
        {
          "condition": "New",
          "currency": "USD",
          "domain": "chefscatalog.com",
          "in_stock": true,
          "link": "https://www.upcitemdb.com/norob/alink/?id=u2o243z2w203b454s2",
          "list_price": 26.0,
          "merchant": "Chefs Catalog",
          "price": 15.95,
          "shipping": "Free Shipping",
          "shipping_cost": 0.0,
          "title": "Wusthof Gourmet 3-in. Serrated Paring Knife",
          "updated": "2015-12-01T16:47:55+00:00"
        }
      ],
      "product_url": "https://www.upcitemdb.com/upc/4002293401102",
      "size": "",
      "title": "Wusthof Gourmet 3-Inch Serrated Paring Knife",
      "upc": "",
      "weight": "0.1 Pounds"
    }
  ],
  "requests_left_today": 87,
  "total_matches": 366
}
```
