{
  "openapi": "3.0.1",
  "info": {
    "title": "UPC & EAN Barcode Lookup — Product Data by Barcode or Keyword",
    "description": "Look up UPC, EAN, GTIN and ISBN barcodes in bulk: title, brand, model, category, images, size, weight, dimensions, recorded price range, merchants and the Amazon ASIN when known. Or search by keyword or brand to get products with their barcodes. No API key.",
    "version": "0.1",
    "x-build-id": "d9afUtzraAkr1avYK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yugenox~upc-ean-product-lookup/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yugenox-upc-ean-product-lookup",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/yugenox~upc-ean-product-lookup/runs": {
      "post": {
        "operationId": "runs-sync-yugenox-upc-ean-product-lookup",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/yugenox~upc-ean-product-lookup/run-sync": {
      "post": {
        "operationId": "run-sync-yugenox-upc-ean-product-lookup",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "barcodes": {
            "title": "Barcodes",
            "type": "array",
            "description": "UPC-A (12 digits), UPC-E (8), EAN-13, EAN-8, GTIN-14 or ISBN-10/13. One per line; you can also paste a whole column (commas, semicolons and line breaks all work). Spaces and dashes inside a code are ignored, and a UPC that lost its leading zero in Excel is fixed automatically. Check digits are verified before lookup, and invalid codes are returned as found=false at no charge.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search by keyword",
            "type": "array",
            "description": "Find products (with their UPC/EAN) by name, brand or model — e.g. \"lego star wars\", \"stanley quencher 40oz\". Each keyword runs its own search. Use two or more words: a single broad word often returns nothing.",
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerQuery": {
            "title": "Max results per keyword",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "How many products to return for each keyword. A single search lists up to 1,000 products; above that the keyword is re-run per brand automatically (see below).",
            "default": 100
          },
          "searchBrand": {
            "title": "Brand filter",
            "type": "string",
            "description": "Only return products of this brand, e.g. \"LEGO\". Applies to every keyword."
          },
          "searchCategory": {
            "title": "Category filter",
            "type": "string",
            "description": "Only return products whose category contains this text, e.g. \"Kitchen\" or \"Toys\"."
          },
          "matchMode": {
            "title": "Keyword matching",
            "enum": [
              "all",
              "any"
            ],
            "type": "string",
            "description": "Best match: products matching your keywords as a whole (recommended). Broad: products matching any of the words — many more, less precise results.",
            "default": "all"
          },
          "splitLargeSearches": {
            "title": "Go past 1,000 results per keyword",
            "type": "boolean",
            "description": "When a keyword has more than 1,000 matches and you asked for more, re-run it once per brand found to collect more products (duplicates removed).",
            "default": true
          },
          "enrichNotFound": {
            "title": "Try Open Food Facts for barcodes not found",
            "type": "boolean",
            "description": "Barcodes the main product database does not know are looked up in Open Food Facts, Open Beauty Facts, Open Pet Food Facts and Open Products Facts (strong for groceries, cosmetics and household goods). The source field says where each row came from.",
            "default": true
          },
          "fillMissingAsin": {
            "title": "Look harder for Amazon ASINs",
            "type": "boolean",
            "description": "When a product has no ASIN in the main record, also check its product page for one. Finds a few more ASINs at the cost of one extra request per product (slower). Books always get their ISBN-10, which is their ASIN.",
            "default": false
          },
          "includeOffers": {
            "title": "Include merchant offers",
            "type": "boolean",
            "description": "Add the list of recorded store offers (merchant, price, condition, last update) to each product. Off by default to keep rows small — the price range, merchant names and last price update are always included.",
            "default": false
          },
          "includeNotFound": {
            "title": "Output rows for barcodes not found",
            "type": "boolean",
            "description": "Keep a found=false row (with the reason) for every barcode that is invalid or unknown, so your output lines up with your input. These rows are free.",
            "default": true
          },
          "maxItems": {
            "title": "Max products (whole run)",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many products have been found. Leave empty for no limit."
          },
          "maxConcurrency": {
            "title": "Max parallel requests",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Requests in flight at once. The default is fine for most runs.",
            "default": 10
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy is required. Datacenter proxy (the default) is fastest and cheapest.",
            "default": {
              "useApifyProxy": true
            }
          },
          "residentialOverflow": {
            "title": "Add residential IPs when needed",
            "type": "boolean",
            "description": "Keeps big runs fast: when all datacenter IPs are busy, requests also go out through residential IPs. Turn off to use only the proxy above (large runs will be slower).",
            "default": true
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}