Barcode Reader API

POST

Read EAN, UPC, Code 128 and other 1D barcodes from any image.

Barcode Reader decodes 1D barcodes from an uploaded image or an image URL, including EAN-13, EAN-8, UPC-A, UPC-E, Code 128, Code 39, Code 93, ITF, Codabar and GS1 DataBar. It returns the decoded value and the symbology. Paid plans add the GTIN, the barcode's orientation and corners, and every barcode found in the image.

Try it — live request, no key required

Request
POSTapi.apiverve.com/v1/barcodereader
image
Click or drag a file to upload.jpg, .jpeg, .png, .gif, .webp, .bmp · max 400KB for live testing
Verification
Format

No key required to try it. Get a key to use it in your app.

Example
{
  "status": "ok",
  "error": null,
  "data": {
    "text": "1234567890128",
    "format": "EAN-13",
    "isRetail": true,
    "gtin": "1234567890128",
    "orientation": 0,
    "position": {
      "topLeft": {
        "x": 49,
        "y": 6
      },
      "topRight": {
        "x": 588,
        "y": 6
      },
      "bottomRight": {
        "x": 588,
        "y": 418
      },
      "bottomLeft": {
        "x": 49,
        "y": 418
      }
    },
    "barcodeCount": 1,
    "barcodes": [
      {
        "text": "1234567890128",
        "format": "EAN-13",
        "gtin": "1234567890128",
        "orientation": 0,
        "position": {
          "topLeft": {
            "x": 49,
            "y": 6
          },
          "topRight": {
            "x": 588,
            "y": 6
          },
          "bottomRight": {
            "x": 588,
            "y": 418
          },
          "bottomLeft": {
            "x": 49,
            "y": 418
          }
        }
      }
    ]
  }
}

About the Barcode Reader API

Images are normalised and decoded with zxing-cpp, which tries rotated and inverted versions of the image, so barcodes printed sideways or light-on-dark are still found. Retail codes are reported in their native form, with the 13-digit GTIN alongside.

What people use it for

Product Lookup
Read the EAN or UPC from a customer's photo of a product and look the item up in your catalogue by GTIN.
Inventory and Warehousing
Decode Code 128 and ITF labels from photos taken by staff without dedicated scanners.
Returns and Receipts
Pull order or parcel numbers out of photographed labels and receipts to match them to records.
Document Processing
Extract barcodes from scanned forms and shipping documents as part of an intake pipeline.

Ways to call it

One endpoint, many ways in — REST with JSON, XML, YAML and CSV, plus GraphQL and an MCP interface for AI agents.

JSON
Default REST response
XML
Markup format
YAML
Human-readable
CSV
Tabular export
Beta
GraphQL
Query language
New
MCP
For AI agents

Questions.

Common questions about the Barcode Reader API.

Read the docs →
How many barcode scans does the Starter plan cover?
Starter covers 20,000 barcode scans each month. At 10 credits per request, that works out to $1.50 per 1,000 scans, or about $0.0015 per scan. The Free plan includes 20 scans per month for testing.
What does the Free plan return?
The Free plan returns the decoded value, the barcode format and whether it is a retail code. Paid plans add the 13-digit GTIN, the orientation, the corner coordinates and a list of every barcode found when an image holds more than one.
Which barcode formats are supported?
EAN-13, EAN-8, UPC-A, UPC-E, Code 128, Code 39, Code 93, ITF (including ITF-14), Codabar, GS1 DataBar and GS1 DataBar Expanded. For QR codes, use the QR Code Reader API.
How large can the image be?
Uploads and image URLs can be up to 10 MB on paid plans and 400 KB on the Free plan. JPG, PNG, GIF, WebP and BMP are accepted. Images are scaled to fit 1600 pixels before decoding.
How are UPC-A and UPC-E reported?
A UPC-A is reported as UPC-A with its 12 digits, and a UPC-E with its 8 digits. The gtin field gives the same product as a 13-digit GTIN, which is what most product databases are keyed by.

Ready to build with Barcode Reader? Start with 200 free credits — one key unlocks all 300+ APIs.

Explore the catalog

300+ APIs on the same key and the same response shape.

Browse all APIs