source: "usda-fdc".
Search products
Every filter is optional. When you pass several, a product must match all of them.Your first search: look up a barcode
The simplest search finds one product by the barcode on its package.Understanding the response
datais this page of matching products. An empty array means nothing matched.next_cursorisnullon the last page. Otherwise, pass it ascursorto get the next page.
limit sets the page size (1 to 200, default 50). Each response has a next_cursor: pass it back as cursor to get the next page, and stop when it’s null. Rows come back in ID order, so paging never skips or repeats a row.
nutritionholds the 15 nutrients on a US nutrition facts panel, per serving. A nutrient the brand didn’t report isnull.serving_size_unitis the unit exactly as the brand submitted it, such asGRM.serving_size_unit_normalizedis the same unit in a standard form, such asg. Use the normalized one when you compare products.
Find products that contain an ingredient
This finds snack bars that list whey protein, 20 at a time.Find a brand’s products
brand matches the company that owns the brand, the brand, and the sub-brand, so either the maker or the label name works.
Find valid categories
category must match a category name exactly, apart from case. Get the list first:
Get one product
Pass anid from a search result. This endpoint needs the get-branded-foods scope.
{ "data": { ...product } } — the same fields a search returns. An unknown ID returns 404:
404 — unknown product
Product fields
Every product, from search or fromGET /v1/branded-foods/{id}, has all of these fields. A field the brand didn’t report is null.
Identity
Brand and category
Package and serving
Market
Label
Dates and provenance
Nutrition
nutrition always has these 15 keys. A value is null when the brand didn’t report it.
Search filters
Validation rules
Summary
What to do next
- Try it live — Search branded foods, List categories, and Get a branded food.
- See how this fits with D2C data — read the CPG overview.