Nutrition Claim Checker: Low Fat, High Protein avatar

Nutrition Claim Checker: Low Fat, High Protein

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Nutrition Claim Checker: Low Fat, High Protein

Nutrition Claim Checker: Low Fat, High Protein

Check food product data for nutrition claims the numbers don't support: low fat, sugar free, high protein, source of fibre, low salt, low calorie and no added sugar against EU/UK per-100 g limits or US FDA per-serving rules. Reads Open Food Facts and grocery data. Sources per finding.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Ultimate Foresight Inc

Ultimate Foresight Inc

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Security

Limited permissions

Share

Check food product claims like 'low fat', 'high protein', 'sugar free', 'low sodium' or 'source of fiber' against the product's nutrition values. The Nutrition Claim Checker finds claims in titles, labels and descriptions and compares them with the EU nutrition claim conditions (Regulation 1924/2006 annex) or the US FDA nutrient content claim rules (21 CFR 101.54-101.62), and flags 'no added sugar' claims with sugars in the ingredients. Works with Open Food Facts nutriments and grocery scraper output. Click Start with the prefilled example to see it work.

This is an automated comparison of the claims and nutrition values you supply, not a legal determination. Values from scraped data can be wrong or per a different basis, and some claims have extra conditions. A clean result doesn't mean a claim is allowed. Not legal advice; every row carries this disclaimer and a timestamp.

What does the Nutrition Claim Checker do?

  • ✅ Threshold checks for low fat, fat free, low saturated fat, low sugar, sugar free, low sodium/salt, source of / high fibre, source of / high protein, low calorie and energy free.
  • ✅ EU basis: per 100 g or 100 ml, with separate liquid limits and the semi-skimmed milk exception.
  • ✅ US basis: per serving (reference amount), with the FDA definitions; 'low sugar' is noted as not defined by FDA.
  • ✅ 'No added sugar' claims checked against the ingredients (sugar, syrups, honey, juice concentrates) and the EU 'contains naturally occurring sugars' note.
  • ✅ Percent fat free claims, prohibited in the EU, and claims with negations or ingredient context ('made with fat-free milk') skipped.
  • ✅ Missing nutrition values become info rows, not problems.
  • ✅ Output per row: market, basis, liquid, claimsFound, nutrients, riskLevel, issueCount, issues (ruleId, severity, message, quote, sourceUrl, fixHint), checkedAt and a disclaimer.

Who is it for?

  • Food brands and retailers checking product pages and feeds before launch.
  • Grocery e-commerce and marketplace teams screening thousands of SKUs.
  • Nutrition data companies cleaning scraped or Open Food Facts data.
  • Researchers and consumer groups studying claim accuracy.

How to check nutrition claims against nutrition values

  1. Click Start with the prefilled example (a low fat yoghurt over the EU limit, a high protein bar below it, a no added sugar drink with glucose-fructose syrup and US low sodium crackers).
  2. Replace the input with your own: title, claims, nutrition (Open Food Facts style keys or a simple dict), ingredients and optional market.
  3. Or enter a Dataset ID from an Open Food Facts, Tesco, Walmart, Amazon or other grocery scraper. Common fields are detected automatically; use Field map for nested ones.
  4. Turn on Only save rows with findings to skip clean rows; you only pay for saved rows.
  5. Export results as CSV, Excel or JSON, or fetch them through the API.

Input example

This is the prefilled input:

{
"products": [
{
"id": "EXAMPLE-YOGHURT",
"title": "Example low fat strawberry yoghurt 500 g",
"market": "EU",
"nutrition": {
"energy-kcal_100g": 98,
"fat_100g": 3.4,
"saturated-fat_100g": 2.1,
"sugars_100g": 12.5,
"proteins_100g": 4.2,
"salt_100g": 0.12
}
},
{
"id": "EXAMPLE-BAR",
"title": "Example high protein cereal bar 40 g",
"market": "EU",
"nutrition": {
"energy-kcal_100g": 410,
"fat_100g": 15,
"sugars_100g": 22,
"fiber_100g": 7.5,
"proteins_100g": 18,
"salt_100g": 0.4
}
},
{
"id": "EXAMPLE-JUICE",
"title": "Example apple drink 1 l, no added sugar",
"market": "UK",
"ingredients": "Water, apple juice from concentrate (30%), glucose-fructose syrup, acid: citric acid",
"nutrition": {
"energy-kcal_100g": 32,
"sugars_100g": 7.6
}
},
{
"id": "EXAMPLE-CRACKERS",
"title": "Example whole wheat crackers, low sodium, good source of fiber",
"market": "US",
"nutrition": {
"energy-kcal_serving": 120,
"sodium_serving": "160 mg",
"fiber_serving": 3,
"fat_serving": 4
}
}
]
}

Dataset mode:

{"datasetId": "YOUR_DATASET_ID", "fieldMap": {"nutrition": "nutriments", "title": "product_name"}, "market": "EU", "onlyFlagged": true}

Output example

Real output from a run of the prefilled input on 2026-11-02 (long finding lists are shortened here; the run returns all of them):

[
{
"itemNo": 1,
"productId": "EXAMPLE-YOGHURT",
"title": "Example low fat strawberry yoghurt 500 g",
"market": "EU",
"basis": "per 100 g",
"liquid": false,
"claimsFound": [
"low_fat"
],
"nutrients": {
"energyKcal": 98,
"fat": 3.4,
"saturatedFat": 2.1,
"sugars": 12.5,
"protein": 4.2,
"salt": 0.12,
"sodium": 0.048
},
"riskLevel": "high",
"issueCount": 1,
"issues": [
{
"ruleId": "low_fat_threshold_exceeded",
"severity": "high",
"message": "'low fat' claim, but fat is 3.4 g per 100 g; the EU condition is at most 3.0 g per 100 g.",
"quote": "Example low fat strawberry yoghurt 500 g",
"sourceUrl": "https://food.ec.europa.eu/food-safety/labelling-and-nutrition/nutrition-and-health-claims/nutrition-claims_en",
"fixHint": "Remove or change the claim, or check the nutrition data."
}
],
"url": null,
"checkedAt": "2026-11-02T19:51:12+00:00",
"disclaimer": "Automated check of the claim text and nutrition values supplied against the Annex to..."
},
{
"itemNo": 2,
"productId": "EXAMPLE-BAR",
"title": "Example high protein cereal bar 40 g",
"market": "EU",
"basis": "per 100 g",
"liquid": false,
"claimsFound": [
"high_protein"
],
"nutrients": {
"energyKcal": 410,
"fat": 15,
"sugars": 22,
"fibre": 7.5,
"protein": 18,
"salt": 0.4,
"sodium": 0.16
},
"riskLevel": "high",
"issueCount": 1,
"issues": [
{
"ruleId": "high_protein_threshold_not_met",
"severity": "high",
"message": "'high protein' claim, but protein provides 17.6% of energy; the EU condition is at least 20%.",
"quote": "Example high protein cereal bar 40 g",
"sourceUrl": "https://food.ec.europa.eu/food-safety/labelling-and-nutrition/nutrition-and-health-claims/nutrition-claims_en",
"fixHint": "Remove or change the claim."
}
],
"url": null,
"checkedAt": "2026-11-02T19:51:12+00:00",
"disclaimer": "Automated check of the claim text and nutrition values supplied against the Annex to..."
},
{
"itemNo": 3,
"productId": "EXAMPLE-JUICE",
"title": "Example apple drink 1 l, no added sugar",
"market": "EU",
"basis": "per 100 ml",
"liquid": true,
"claimsFound": [
"no_added_sugar"
],
"nutrients": {
"energyKcal": 32,
"sugars": 7.6
},
"riskLevel": "medium",
"issueCount": 1,
"issues": [
{
"ruleId": "no_added_sugar_vs_ingredients",
"severity": "medium",
"message": "'no added sugar' claim, but the ingredient list mentions 'glucose-fructose syrup'.",
"quote": "...er, apple juice from concentrate (30%), glucose-fructose syrup, acid: citric acid",
"sourceUrl": "https://food.ec.europa.eu/food-safety/labelling-and-nutrition/nutrition-and-health-claims/nutrition-claims_en",
"fixHint": "Check the ingredients; remove the claim if a sugar or sweetening food was added."
}
],
"url": null,
"checkedAt": "2026-11-02T19:51:12+00:00",
"disclaimer": "Automated check of the claim text and nutrition values supplied against the Annex to..."
},
{
"itemNo": 4,
"productId": "EXAMPLE-CRACKERS",
"title": "Example whole wheat crackers, low sodium, good source of fiber",
"market": "US",
"basis": "per serving",
"liquid": false,
"claimsFound": [
"low_sodium",
"source_fibre"
],
"nutrients": {
"energyKcal": 120,
"sodium": 0.16,
"fibre": 3,
"fat": 4
},
"riskLevel": "high",
"issueCount": 1,
"issues": [
{
"ruleId": "low_sodium_threshold_exceeded",
"severity": "high",
"message": "'low sodium' claim, but sodium is 160.0 mg per serving; the FDA condition is at most 140 mg per serving.",
"quote": "Example whole wheat crackers, low sodium, good source of fiber",
"sourceUrl": "https://www.ecfr.gov/current/title-21/chapter-I/subchapter-B/part-101/subpart-D/section-101.61",
"fixHint": "Remove or change the claim, or check the nutrition data."
}
],
"url": null,
"checkedAt": "2026-11-02T19:51:12+00:00",
"disclaimer": "Automated check of the claim text and nutrition values supplied against the Annex to..."
}
]

How much does it cost to check nutrition claims?

This Actor uses pay-per-event pricing: $0.002 per product saved plus a $0.00005 start fee per run, plus small platform usage paid by you (a few hundredths of a cent for small runs). That's about $2.00 for 1,000 products and $20.00 for 10,000 plus usage. With Only save rows with findings on, rows without findings aren't saved or charged. You can set a maximum cost per run in the run options.

Use it through the API, integrations or AI agents

  • Run it and get results in one call: https://api.apify.com/v2/acts/ultimatemc~nutrition-claim-checker/run-sync-get-dataset-items
  • Use it from AI agents through the Apify MCP server: https://mcp.apify.com?tools=ultimatemc/nutrition-claim-checker
  • Schedule it after a daily scraper run, send flagged rows to Slack or email with webhooks, or connect it to Make, Zapier, n8n or Google Sheets.
  • Chain it after any grocery scraper by passing the scraper's dataset ID.

How it works

Claims are found with patterns ordered from specific to general, so 'low saturated fat' isn't also counted as 'low fat'. Nutrition values are parsed from numbers or text (kJ/kcal, mg or g, '<0.5 g', salt or sodium). Thresholds come from the European Commission's nutrition claims list and 21 CFR 101.13 and 101.54-101.62, checked on 2026-11-02. No AI and no external calls.

Sources:

FAQ

Which market is used?

The row's market field, then the Default market input. EU and UK use per 100 g/ml rules; US uses per serving rules.

What does 'high protein' mean in the EU?

At least 20% of the food's energy comes from protein. 'Source of protein' needs at least 12%.

Does it flag 'made with fat-free milk'?

No. Claims about an ingredient are skipped, as are negated phrases.

What if nutrition values are missing?

The row gets an info note so you can fill the data in; it isn't counted as a problem.

Is it AI?

No. It's a fixed set of rules, so the same input always gives the same result.

Limitations

  • Health claims ('supports immunity') aren't covered; use a health claims tool for those.
  • US reference amounts aren't computed; per-serving values must be in the data.
  • Comparative claims ('reduced', 'light') are only partly covered.

Other tools by Ultimate Foresight

Found a false positive? Open an issue on the Issues tab with the product data and what you expected, and we'll review the rule.