DietlyAPI gives your app 4.2 million+ foods with source-labeled macros, micronutrients, and barcode lookups - auto-sorted by confidence. Origin health and search probes run every minute; customer-visible latency depends on location and workload.
Scale, speed, and ranked relevance. We do them so you don't have to import Open Food Facts's multi-million-row dump, normalize it, or build your own search index.
A multi-million-row Open Food Facts catalog plus existing Dietly community and labeled AI-estimated entries. Public search reads indexed foods; it does not generate new AI entries.
Search uses GIN trigram indexes and barcode lookup uses a B-tree. The public status page shows current origin probes; use the browser measurement and playground to test the complete path from your users' region.
Complete, plausibility-checked label data ranks above sparse entries, which rank above AI estimates. Your users see the most trustworthy match first - every time.
EAN-13 and UPC-A lookups use a B-tree index and return the existing nutrition object in one API call. Actual response time varies with network path and load.
The origin runs in Nuremberg, Germany - EU data residency by default. Cloudflare's global edge terminates TLS close to your users and shields the origin.
Encrypted in transit, EU hosting, and no card required: read endpoints work without an account, and registering a key takes just a username, password and a verified email.
A monitor runs origin health and search probes every 60 seconds and publishes their history on the public status page. The card on the right separately measures the health route from your browser.
Dietly figures come from the live service and published plan configuration. Other vendors change their products and terms; use their official links and benchmark every option with your own workload.
| DietlyAPI | FatSecret | Nutritionix | Edamam | |
|---|---|---|---|---|
| Response time* | Live probes + measure from your region | Benchmark directly | Benchmark directly | Benchmark directly |
| Foods | 4.2M+ (live) | Country-specific datasets | See vendor documentation | Close to 1M |
| Free tier | 30 req/min per IP, forever | Basic: 5,000 calls/day | See vendor pricing | 30-day Basic trial |
| Getting a key | Self-serve - no card needed | Self-signup for Basic | See vendor signup | Sign-up + plan selection |
| Authentication | One Bearer key | OAuth 2.0 tokens | App ID + key headers | App ID + key in every URL |
| Attribution required | A one-line Open Food Facts credit | Yes on free plans | Per contract | Required on listed plans |
| Billing & cancellation | Monthly, cancel anytime, self-serve | See vendor terms | See vendor terms | See vendor terms |
| API pricing | €27/mo for 500 req/min · €92/mo for 3,000 - self-serve, no overage charges | Custom quote via sales | See vendor pricing | From $14/month |
*The status page reports Dietly's origin probes, not a latency promise for every customer. Anonymous and free-tier reads add a configured ~350 ms fairness delay; paid reads skip it. Network distance and workload still matter. Vendor details are a July 2026 snapshot and should be confirmed on their current official pages: FatSecret · Nutritionix · Edamam.
Every result ships with a confidence score - complete, plausibility-checked label data outranks sparse entries, which outrank AI estimates. The frustrating "which one of these is right?" problem just goes away.
No SDK install. No signup for reads - search, barcode and food lookups are open with per-IP rate limits. Send your API key as a Bearer token and you get your plan's limit instead. One fetch call, same shape in Python, JS, Swift, Go, anywhere that speaks HTTP.
// One call. No API key needed for reads. Try it in your console. const r = await fetch( 'https://api.getdietly.com/search?q=greek+yogurt' ); const results = await r.json(); // → Ranked by confidence, highest first results[0]; // { // name: "Greek Yogurt, Plain, Non-Fat", // calories_kcal: 59, // protein_g: 10, // source: "off", // confidence: 1.0 // }
| Endpoint | What it does | Auth |
|---|---|---|
| GET /search?q=&limit=&source= | Fuzzy full-text search, ranked by relevance × confidence. limit 1–50, source = off | claude. |
Optional |
| GET /barcode/{ean} | EAN-13 / UPC-A lookup. Returns one fully populated nutrition object. | Optional |
| GET /food/{id} | Fetch a single food by its stable id. | Optional |
| GET /foods/popular | Curated list of common foods - great for empty-state UIs. | Optional |
| GET /foods/categories | All food categories with counts. | Optional |
| GET /health | Liveness probe - also what the latency card above calls. | None |
"Optional" = works without a key at 30 req/min per IP (with a small fairness delay). Send Authorization: Bearer <key> on a paid plan for per-account limits and priority speed - free keys share the per-IP limit.
Rate-limited responses are a clean 429 with Retry-After.
Every plan unlocks the full 4.2M food database. Upgrade only when you need more throughput or commercial use rights.
Pro starts at €27/month immediately. Scale starts with 14 free days and then renews at €92/month. Paid plans renew monthly until cancelled; cancellation keeps access through the current paid period. Stripe securely handles checkout and shows the final total before you confirm. No overage charges. Terms · Refunds · Billing help
Food data from Open Food Facts (ODbL) via DietlyAPI near the data, in your about screen, or in your footer is enough - link it to world.openfoodfacts.org where you can. The "via DietlyAPI" part is optional. Full details in the API Terms.429 with a Retry-After header - never a surprise bill. Configured public-data limits are 30 requests/minute per IP for Starter (with an hourly anti-scraping cap), 500/min per account for Pro and 3,000/min per account for Scale when the key is sent. App-only AI routes have separate authorization and safeguards and are not included in these plans. Track your usage on your dashboard.