Nutrition
Made Simple

From barcode to nutrition data in one endpoint so you ship features faster instead of data pipelines.

See what's
really in there

๐Ÿฅ›
Alpro
Soya Yogurt
150 g pot
B
Macros per serving (g)
3 Carbs
2 Sugars
2 Fat
4 Protein
1 Fibre
Allergens

Contains soya

โœ“ milk-freeโœ“ gluten-freeโœ“ nuts-free
Additives
E1442Modified starchlow
E410Locust bean gumlow
Scores
BNutri
4NOVA
AEco
66Clean
Diet
โœ“ Vegetarianโœ“ Veganโœ“ Halal

Ready for
your busiest day

0Products indexed
0Countries covered
0p50 latency
0Uptime SLA

One API
every lookup covered

Barcode lookup

Send a UPC or EAN and get the whole product back.

Search

Find products by name or brand, typos and all.

Batch lookups

Resolve up to 50 barcodes in a single call.

Autocomplete

Instant suggestions as people type.

Powering apps
that people love

Calorie trackers

Let people log food by scanning, not typing.

Grocery & retail

Show shoppers what's really in the basket.

Meal planners

Build plans on real, per-serving numbers.

Health & fitness

Back coaching and wellness apps with data.

Loyalty & rewards

Reward healthier choices at checkout.

Diet coaching

Flag allergens and additives in a second.

Go live
in 3 steps

01

Get your key

Sign up and copy your key. Free tier, no card needed.

02

Make one call

Send the barcode to /v1/products. That is the integration.

03

Use the data

Nutrition, scores and allergens, ready to drop into your UI.

Built by
devs for devs

Your request
curl https://api.scandex.io/v1/products/049000042566 \
  -H "X-SDX-Key: sdx_live_..."
const res = await fetch(
  "https://api.scandex.io/v1/products/049000042566",
  { headers: { "X-SDX-Key": "sdx_live_..." } }
);
const product = await res.json();
import requests

r = requests.get(
    "https://api.scandex.io/v1/products/049000042566",
    headers={"X-SDX-Key": "sdx_live_..."},
)
product = r.json()
Response
200 ยท /v1/products/049000042566
{
  "name": "Coca-Cola Classic",
  "brand": "Coca-Cola",
  "nutrition": {
    "per_serving": { "energy_kcal": 139, "sugars_g": 35 }
  },
  "allergens": { "free_from": ["gluten", "milk", "nuts"] },
  "scores": { "nutriscore": "E", "nova": 4 }
}

Explore the full API reference

Start free
scale when ready

Free

Build and test.

$0forever
  • โœ“1,000 lookups / day
  • โœ“Barcode & search
  • โœ“Full data model
Start free

Growth

For scale.

$149/mo
  • โœ“2M lookups / mo
  • โœ“99.9% uptime SLA
  • โœ“Bulk exports
  • โœ“Priority support
Get API key

Enterprise

Replace your bill.

Custom
  • โœ“Unlimited volume
  • โœ“Dedicated infra
  • โœ“SLA & DPA
  • โœ“A real engineer
Contact sales

Compare all plans

The questions
everyone actually asks

Which barcodes work?

UPC-A, UPC-E, EAN-13 and EAN-8. Send the digits and we sort out the rest.

How fresh is the data?

We keep re-checking products, so nutrition, scores and allergens stay up to date.

Can I cache responses?

Yes, on every plan. Store results for as long as you like.

How many products do you have?

Millions, across 150+ countries, with more added every day.

How do I move off Nutritionix?

Add ?compat=nutritionix to any lookup for the old response shape, then point your base URL at us.

What are the rate limits?

They scale with your plan, from 1,000 a day on Free up to unlimited on Enterprise.