# Look up a GTIN

Exact food lookup. Use this whenever you have a barcode (GTIN-14, EAN-13, UPC-A, or EAN-8).

MCP: `lookup_gtin` `{ "gtin": "00072830007115" }`

## When to use

- The user pasted a barcode
- You are joining a catalog row that already has a UPC / EAN / GTIN

Do **not** pass a barcode as `q` on [search foods](/docs/food). Similar foods for a barcode: `GET /v1/gtin/{gtin}/similar` (same pattern as `GET /v1/isbn/{isbn}/similar`).

## Request

```http
GET /v1/gtin/00072830007115
Authorization: Bearer fds_live_<kid>_<secret>
```

```bash
curl -sS -H "Authorization: Bearer $FDS_API_KEY" \
  https://api.fulldatasets.com/v1/gtin/00072830007115
```

| Path | Required | Notes |
|---|---|---|
| `gtin` | yes | 8–14 digits. Hyphens and spaces are stripped. Left-padded to GTIN-14. Bad check digits are accepted (FDC has them). |

## Response `200`

A [food object](/docs/food). Check record:

| Field | Value |
|---|---|
| `schema_version` | `food.v1` |
| `gtin14` | `00072830007115` |
| `name` | Tillamook Medium Cheddar Natural Cheese |
| `nutrients` | per 100 g |
| `images[].license` | `CC-BY-SA-3.0` when a pack shot exists |

`X-Cache: HIT` or `MISS`. Point lookups cache 24h after auth.

## Errors

| Status | `code` | When |
|---|---|---|
| `400` | `bad_request` | String is not 8–14 digits |
| `401` | — | Bad or missing key |
| `404` | `not_found` | Valid GTIN, no food |
| `429` | `rate_limited` | Over 120 req / 60s |

## See also

- [Match a food](/docs/food) — name, no barcode
- [Get a food](/docs/food) — you already have `fds_fo_…`
