# Customs data for every item in one photo

> Send a photo of goods and get customs data for every item in it: name, description, quantity, category, material, HS code, country of origin and value, each with a probability.

Source: https://border.bot/inspect
Last updated: 2026-10-22

Send a photo of the goods. Inspect finds each item in it and returns its name, description, quantity, category, material, HS code, country of origin and value, with a box showing where it is in the photo. The code, origin and value each come with a confidence, and anything uncertain is marked for a person to check.

[Try the free photo tool](https://border.bot/tools/hs-code-from-photo) · [Read the API guide](https://border.bot/docs/inspect)

Reviewed by the border.bot editorial team on 2026-10-22 ([editorial policy](https://border.bot/about/editorial)).

## How Inspect works

### 1. One photo, every item

Inspect finds each separate product in the photo, draws a box round it and counts it. Identical units are one item with a count, a pair of shoes is one pair, and a set is one set. Reflections, packaging and pictures on boxes are left out.

**Found in the photo**

| Item | Detail | Value |
| --- | --- | --- |
| Crew-neck T-shirt | Folded, label showing | 1 |
| Sneakers | Worn, no box | 1 pair |
| Graphing calculator | Model name on the case | 1 |

Illustrative example.

### 2. What each item is, and what it is made of

Each item gets a name, a description, a category and its materials, with an English customs description beside them. A care label in the photo settles the material; without one it is read from what shows, and an item whose material can’t be seen is marked for review.

**Crew-neck T-shirt**

| Field | Value |
| --- | --- |
| Description | A folded crew-neck T-shirt in white jersey |
| Category | Apparel |
| Material | Cotton (read from the label) |
| Quantity | 1 |

Illustrative example.

### 3. A 6-digit HS code, checked against the tariff

Each item gets its HS subheading: the six digits every country shares. The code is looked up in the live tariff, so it is always a subheading that exists, and one that doesn’t is cut back to its heading and marked. For a destination’s full national line, run the item through [Classify](https://border.bot/classify).

**HS code, 6 digits:** `6109.10` (confidence shown per item)

| Level | Description |
| --- | --- |
| 61 | Articles of apparel and clothing accessories, knitted or crocheted |
| 6109 | T-shirts, singlets, tank tops and similar garments, knitted or crocheted |
| 6109.10 | Of cotton |

### 4. Where it was made, and what it is worth

A “Made in” read from a label is quoted as the origin. Without one, the origin is estimated where the item was most likely manufactured (the brand’s manufacturing footprint, not where it is based), marked as an estimate, never shown as more than 60% likely and listed with the other likely countries. The value is an estimated retail price in US dollars with a range: useful for an undescribed parcel or for checking a declared value, but not the customs value, which is the price actually paid.

**Crew-neck T-shirt**

| Item | Detail | Value |
| --- | --- | --- |
| Origin | “Made in Vietnam” on the label | Vietnam |
| Value | Estimated retail price, one unit | $24.00 ($15–35) |
| Customs value | The price actually paid | Yours to declare |

Illustrative example.

## Goods arrive without data more often than with it

A parcel with a vague description, a returned item, a box of secondhand stock, a shipment a seller never described: someone has to look at the goods and type out what they are before a code, an origin and a value can be declared. Inspect does the looking and the typing, and leaves people the items it isn’t sure of.

### Every item, not just the first

One request returns each product in the photo with its own quantity, code, origin and value, and a box showing which item is which.

### Confidence you can set a threshold on

The code, origin and value each come with a confidence. Items whose code falls below your review threshold are marked, with the reason.

### Codes that exist

Every HS code is checked against the live tariff before it is returned, so nobody declares a subheading that isn’t there.

### Evidence, not just answers

A “Made in” read off a label is quoted, and an estimated origin says it is an estimate. The photo itself isn’t kept.

## What a photo can tell

Some fields are read straight off the goods, some are estimated from what the photo shows, and a few need more than a photo. Each answer says which.

|  | Value | Detail |
| --- | --- | --- |
| Quantity | Counted | Each item; large counts go to review |
| Name and category | Seen | What the product is, in plain words |
| Material | Read or seen | From a care label when it shows; the outer material otherwise |
| HS code | 6 digits | Checked against the live tariff |
| Origin | Read or estimated | “Made in” quoted; an estimate is at most 60% likely |
| Value | Estimated | A retail price with a range, not the price paid |
| Inside the item | Needs more | Fill, lining, batteries: another look or the seller |

## Who uses Inspect

### Forwarders and consolidators

Photograph parcels that arrive with no description or a vague one, and get the data to declare them, item by item.

### Posts and carriers

Pre-fill the customs form at the counter from a photo of what’s being sent, so the sender confirms rather than types.

### Resale and returns

List secondhand and returned goods for cross-border sale with a code, origin and value from a photo, without a catalogue entry to start from.

### Customs and compliance teams

Photograph what’s in a parcel and compare it with the declaration: the items, the counts, the codes and the values.

## Getting customs data from a photo

### Taking a photo that reads well

Lay the items out in one layer with a little space between them, in even light, with labels and tags facing the camera. A visible care label settles the material and the origin, and a readable model name sharpens the value.

### What a photo can’t tell

A photo shows the outside of an item. What it is filled with, an inner lining, a label folded out of sight, or whether a device holds a battery may need another look or the seller’s description, and Inspect marks those items for review rather than guessing. Counting many identical units on a shelf is also unreliable, so large counts are sent to review.

### Six digits, and the national line

The first six digits of a tariff code are the Harmonized System, the same in every country. The digits a country adds after them often turn on a unit value, on who a product is for or on what is inside it, which a photo can’t show. Inspect stops at six; [Classify](https://border.bot/classify) gives a destination’s full line.

### Estimated value and customs value

Most countries value imports at their transaction value: the price actually paid or payable for the goods, under the [WTO Customs Valuation Agreement](https://www.wto.org/english/tratop_e/cusval_e/cusval_info_e.htm). A photo can’t show what was paid. Inspect’s value is an estimated retail price with a range, useful for an undescribed parcel or for checking a declared value, but the value on the declaration is the one the buyer paid.

## Three ways to get the data from the goods

|  | Typed in by hand | Zonos Vision | border.bot Inspect |
| --- | --- | --- | --- |
| Per item | What someone writes | Name, description, quantity, materials, categories | The same, plus where it is in the photo |
| HS code | Looked up separately | A code and a confidence score, when switched on | A 6-digit code checked against the live tariff, with a confidence |
| Origin | From the label, if read | A country and a confidence score, when switched on | A label quoted, or an estimate marked as one |
| Value | Guessed or left out | A value and a range, when switched on | An estimated value and a range, with a confidence |
| Try it | Not applicable | Through a demo | A free photo tool, no account |
| Access | Not applicable | GraphQL | REST, MCP and the dashboard |

## What you send, what you get back

**Request**

| Field | Example |
| --- | --- |
| Photo | A T-shirt, a pair of sneakers and a calculator |

**Result**

| Field | Example |
| --- | --- |
| Items | 3, each with its box |
| T-shirt HS code | 6109.10 |
| T-shirt origin | Vietnam, from the label |
| T-shirt value | about $24.00 |
| Sneakers | Sole material not visible: review |

Illustrative example.

|  |  |
| --- | --- |
| Input | One photo, as a link or an upload. |
| Output | Per item: name, description, an English customs description, quantity, category, material, 6-digit HS code, country of origin, value with a range, condition, label text and its box in the photo, with a confidence on the code, origin and value, and review reasons. |
| Codes | 6-digit HS subheadings, checked against the live tariff; one that isn’t there is cut back to its heading and marked. |
| Origin | Read from a label and quoted, or estimated from the brand and kind of product and marked as an estimate. |
| Value | An estimated retail price of one unit in US dollars, with a range and a confidence. |
| Personal data | The photo isn’t kept, only its fingerprint; names and addresses on shipping labels are left out of the answer. |

## With or without code

Run single checks and CSV uploads in the dashboard, call the REST API, or connect the MCP server to an AI assistant. All three use the same engine and save every result in the workspace.

| Method | Path | What it does |
| --- | --- | --- |
| POST | `/v1/inspect` | Inspect a photo |

Example request body for `POST https://api.border.bot/v1/inspect` (Bearer token from `/oauth2/token`):

```json
{
  "imageUrl": "https://shop.example/photos/parcel-0142.jpg"
}
```

MCP tools at `https://mcp.border.bot/mcp`: `inspect_photo`. [Developer quickstart](https://border.bot/developers) · [Connect the MCP server](https://border.bot/mcp) · [API reference](https://border.bot/docs/api)

## Questions about Inspect

### What does Inspect return for a photo?

Each product in it: name, description, quantity, category, material, 6-digit HS code, country of origin and value, with a confidence on the code, origin and value, and a box showing where the item is in the photo.

### How is this different from Classify with a photo?

Classify takes one product and returns the destination’s full tariff code. Inspect takes a photo with any number of products in it and returns each one’s facts, 6-digit HS code, origin and value.

### Why 6 digits?

The first six digits are the Harmonized System, the same in every country, and they are what a photo can usually settle. The digits a country adds often turn on things a photo can’t show. Classify gives the full national line.

### How is the country of origin found?

A “Made in” on a label in the photo is read and quoted. Without one, the origin is estimated where the item was most likely manufactured, from the brand’s manufacturing footprint and where that kind of product is made, never from where the brand is based. It is marked as an estimate, never shown as more than 60% likely, and listed with the other likely countries.

### Is the value the customs value?

No. It is an estimated retail price of one unit with a range. Customs value is usually the price actually paid, which a photo can’t show: declare that price.

### Is the photo kept?

No. Only a fingerprint (a hash) of the photo is kept with the run. Names and addresses visible in the photo are left out of the answer.

### Is the result binding?

No. It is data to declare from, with a confidence on the code, origin and value. A binding classification comes from the customs authority; have uncertain items checked by a licensed broker.

## Further reading

- [Free HS code from a photo](https://border.bot/tools/hs-code-from-photo)
- [Classify: the tariff code for any product](https://border.bot/classify)
- [Free country of origin finder](https://border.bot/tools/country-of-origin-finder)
- [Restrict: prohibited and restricted goods](https://border.bot/restrict)

## Sources

- [World Customs Organization: the Harmonized System](https://www.wcoomd.org/en/topics/nomenclature/overview/what-is-the-harmonized-system.aspx)
- [WTO: Customs Valuation Agreement](https://www.wto.org/english/tratop_e/cusval_e/cusval_info_e.htm)
- [Zonos Vision documentation (read 21 October 2026)](https://zonos.com/docs/supply-chain/vision)

Examples are illustrative unless a source is named. Rules and rates change, so run a check for a current answer.

## Also in border.bot

- [Classify](https://border.bot/classify): The tariff code for the destination, from a description, a product page or a photo.
- [Calculate](https://border.bot/calculate): Duty, import tax and fees, line by line, before the parcel ships.
- [Screen](https://border.bot/screen): Check a person or company against sanctions and denied-party lists.
- [Restrict](https://border.bot/restrict): Goods a country prohibits or restricts, and which agency reviews them.
- [Comply](https://border.bot/comply): What each agency needs at the border: the certificate and its citations, or the right disclaim.
