Skip to content

Open Food Facts API Rate Limits in Production Apps

Published June 14, 2026

Teams start with Open Food Facts because it is free and open. Then launch day arrives and search slows to a crawl or returns HTTP 429. This article explains Open Food Facts API rate limits in production apps, why typeahead search breaks, and when a commercial food API like Calorie API is the right move.

How Open Food Facts Rate Limiting Works

Open Food Facts is a volunteer-powered database. Public API access is shared by researchers, hobby apps, and commercial products. Heavy or bursty traffic triggers:

SymptomLikely cause
HTTP 429 Too Many RequestsShared quota exceeded
Slow search responsesServer-side throttling
Blocked autocompleteAggressive crawl protection
Intermittent timeoutsPeak global usage

Search-as-you-type sends one request per keystroke without debouncing. That pattern alone can exhaust polite-use limits during a marketing push.

Production Patterns That Break OFF

  1. No debounce on mobile search (300 ms minimum)
  2. No caching of popular foods
  3. Barcode storm on gym launch day
  4. Serverless fan-out (each user × each keystroke)
  5. Missing User-Agent identification (OFF asks for descriptive agents)

Mitigations While Staying on OFF

FixImpact
Debounce 300 to 500 msCuts calls 80%+
Cache Redis results 10 minRemoves duplicate queries
Batch barcode lookupsOne call per scan, not per screen
Self-host OFF dumpOps heavy, data stale without ETL
Contact OFF for commercial useUncertain SLA

Even with fixes, OFF offers no commercial SLA for revenue apps.

Open Food Facts vs Calorie API for Production

FactorOpen Food FactsCalorie API
CostFreeFree tier + paid plans
SLANoneProduction support on paid tiers
BarcodeYes (crowdsourced)Yes (curated + verified filter)
Search suggestLimited / throttledBuilt for app UX
Data qualityVariable crowdsourcingVerified foods filter
Commercial licenseGray area for paid appsClear Plus licensing

For a revenue-generating calorie tracker, predictable limits beat free but throttled.

Migration Path OFF → Calorie API

Step 1: Proxy both vendors temporarily

Your backend route tries Calorie API first, falls back to OFF during transition.

Step 2: Map response shapes

Both return name and macros. Normalize to your internal FoodItem model:

type FoodItem = {
  id: string;
  source: 'calorie_api' | 'off';
  name: string;
  caloriesPer100g: number;
  proteinG: number;
  carbsG: number;
  fatG: number;
};

Step 3: Swap mobile clients to proxy only

Clients never call OFF or Calorie API directly. Change upstream in env.

Step 4: Monitor quota

Calorie API dashboard shows monthly usage. Upgrade before Black Friday.

Code Example: Calorie API Search (Replacement)

curl "https://api.calorieapi.com/api/v1/search/foods?q=skyr&limit=5&verified_only=true" \
  -H "X-API-Key: YOUR_KEY"

Proxy through Next.js or Firebase.

When OFF Still Makes Sense

  • Academic research prototypes
  • Non-commercial open source tools
  • Internal dashboards with low traffic
  • Products with ops team to self-host dumps

When to Choose Calorie API Instead

  • App Store apps with paying users
  • Barcode + search UX with sub-second suggest
  • Need verified macro data
  • Want free tier without credit card then scale to Plus

Try Calorie API free | Docs | Pricing

Frequently Asked Questions

Does Open Food Facts have API rate limits?

Yes. The public Open Food Facts API applies usage limits and may return HTTP 429 when traffic is too high. Production apps need debouncing, caching, or a commercial alternative.

Why does Open Food Facts block search as you type?

Autocomplete sends many requests per second across shared infrastructure. OFF may throttle or slow responses to protect servers.

What is the best Open Food Facts alternative for production apps?

Calorie API offers search, suggest, barcode lookup, verified foods, transparent pricing, and a free tier designed for commercial calorie tracking apps.

Can I use Open Food Facts in a paid App Store app?

Open Food Facts is open data but lacks a commercial SLA. Paid apps typically migrate to licensed food APIs like Calorie API for predictable limits and support.

How do I migrate from Open Food Facts to Calorie API?

Build a backend proxy with a normalized FoodItem model, point mobile clients at your proxy, switch upstream to Calorie API, and monitor quota in the Calorie API dashboard.

← Back to all articles

Start building with the Calorie API

Get a free API key and access 4M+ foods with search, barcode lookup, and full macro data.