Gratis Ernærings-API til Udviklere: Sådan Bygger Du Apps med Nutrola's Maddata
En udviklerguide til at bygge ernæringsbevidste applikationer med Nutrola's gratis ernærings-API. Dækker endpoints, autentificering, kodeeksempler i Python, JavaScript og cURL, hastighedsgrænser samt sammenligninger med Nutritionix, Edamam og USDA API'er.
At bygge en ernæringsbevidst applikation krævede tidligere, at du selv skulle samle en maddatabase fra bunden, licensere dyre datasæt eller skrabe upålidelige kilder. I dag giver ernærings-API'er struktureret, programmatisk adgang til omfattende maddatabaser med makronæringsstoffer, mikronæringsstoffer og portionsstørrelser leveret som ren JSON. Denne guide fører udviklere gennem landskabet af ernærings-API'er med fokus på, hvordan man kommer i gang med Nutrola's gratis niveau og hvordan det sammenlignes med alternativer.
Uanset om du bygger en måltidsplanlægningsapp, en fitness tracker, et forskningsværktøj, en opskriftsanalysator eller en AI-assistent, der besvarer ernæringsspørgsmål, giver denne guide dig de tekniske detaljer til at vælge et API og begynde at lave anmodninger på få minutter.
Oversigt over Ernærings-API'er
Før vi dykker ned i implementeringen, er her en sammenligning af de vigtigste ernærings-API'er, der er tilgængelige for udviklere i 2026.
| API | Gratis niveau | Hastighedsgrænse (Gratis) | Fødevarer i database | Stregkodescanning | Madgenkendelse (AI) | Priser (Betalt) |
|---|---|---|---|---|---|---|
| Nutrola API | Ja | 500 anmodninger/dag | 900.000+ | Ja | Ja (tilkøb) | Fra $29/måned |
| USDA FoodData Central | Ja (helt gratis) | 1.000/time pr. nøgle | 370.000+ | Nej | Nej | Gratis |
| Nutritionix API | Ja (begrænset) | 50 anmodninger/dag | 1.000.000+ | Ja | Nej | Fra $299/måned |
| Edamam API | Ja | 100 anmodninger/dag | 900.000+ | Nej | Nej | Fra $19/måned |
| FatSecret Platform API | Ja | 5.000 anmodninger/dag | 500.000+ | Ja | Nej | Gratis (med attribution) |
| Open Food Facts API | Ja (helt gratis) | Rimelig brug | 3.000.000+ | Ja | Nej | Gratis |
| Spoonacular | Ja | 150 anmodninger/dag | 500.000+ | Nej | Nej | Fra $29/måned |
Kom i Gang med Nutrola API'et
Trin 1: Opret en Udviklerkonto
Besøg Nutrola Developer Portal på developers.nutrola.com for at oprette en gratis konto. Efter e-mailverifikation vil du modtage en API-nøgle på dit dashboard. Det gratis niveau inkluderer 500 anmodninger pr. dag, adgang til den fulde maddatabase og tekstbaseret mad søgning. AI-madgenkendelsesendpoints er tilgængelige på betalte niveauer.
Trin 2: Autentificering
Alle API-anmodninger kræver din API-nøgle i anmodningsheaderen. Nøglen sendes via X-Api-Key headeren.
X-Api-Key: your_api_key_here
API'et bruger udelukkende HTTPS. Alle anmodninger til HTTP-endpoints vil modtage en 301-omdirigering til HTTPS. Indsæt ikke din API-nøgle i klientkode; send altid anmodninger gennem din backend-server.
Trin 3: Basis-URL
Alle endpoints serveres fra:
https://api.nutrola.com/v1/
Svarene er i JSON-format med UTF-8 kodning. API'et følger RESTful konventioner med standard HTTP statuskoder.
Kerne Endpoints
Søg Fødevarer
Søg i maddatabasen ved hjælp af tekstforespørgsel. Returnerer matchende fødevarer med ernæringsdata.
Endpoint: GET /v1/foods/search
Parametre:
| Parameter | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| query | string | Ja | Søgningsterm (f.eks. "grillet kyllingebryst") |
| limit | integer | Nej | Resultater pr. side (standard: 10, maks: 50) |
| offset | integer | Nej | Pagination offset (standard: 0) |
| type | string | Nej | Filtrer efter type: "common", "branded", "restaurant" |
| language | string | Nej | Sprogkode (standard: "en"). Understøtter: en, es, de, fr, pt, ja, ko, zh |
Eksempel Anmodning (cURL):
curl -X GET "https://api.nutrola.com/v1/foods/search?query=grilled+chicken+breast&limit=5" \
-H "X-Api-Key: your_api_key_here"
Eksempel Anmodning (Python):
import requests
API_KEY = "your_api_key_here"
BASE_URL = "https://api.nutrola.com/v1"
response = requests.get(
f"{BASE_URL}/foods/search",
headers={"X-Api-Key": API_KEY},
params={
"query": "grilled chicken breast",
"limit": 5
}
)
data = response.json()
for food in data["foods"]:
print(f"{food['name']}: {food['calories']} kcal per {food['serving_size']}{food['serving_unit']}")
Eksempel Anmodning (JavaScript / Node.js):
const API_KEY = "your_api_key_here";
const BASE_URL = "https://api.nutrola.com/v1";
async function searchFoods(query) {
const url = new URL(`${BASE_URL}/foods/search`);
url.searchParams.append("query", query);
url.searchParams.append("limit", "5");
const response = await fetch(url, {
headers: { "X-Api-Key": API_KEY }
});
const data = await response.json();
return data.foods;
}
searchFoods("grilled chicken breast").then(foods => {
foods.forEach(food => {
console.log(`${food.name}: ${food.calories} kcal per ${food.serving_size}${food.serving_unit}`);
});
});
Eksempel Svar:
{
"foods": [
{
"id": "nf_001234",
"name": "Kyllingebryst, Grillet, Uden Skind",
"type": "common",
"calories": 165,
"protein_g": 31.0,
"carbohydrates_g": 0.0,
"fat_g": 3.6,
"fiber_g": 0.0,
"sugar_g": 0.0,
"sodium_mg": 74,
"serving_size": 100,
"serving_unit": "g",
"serving_description": "100 gram",
"alt_servings": [
{
"description": "1 medium bryst (196g)",
"multiplier": 1.96
},
{
"description": "1 oz (28g)",
"multiplier": 0.28
}
],
"source": "USDA SR Legacy",
"updated": "2026-01-15"
}
],
"total_results": 47,
"offset": 0,
"limit": 5
}
Hent Fødevare efter ID
Hent detaljerede ernæringsdata for et specifikt fødevareprodukt ved hjælp af dets Nutrola ID.
Endpoint: GET /v1/foods/{food_id}
Eksempel (cURL):
curl -X GET "https://api.nutrola.com/v1/foods/nf_001234" \
-H "X-Api-Key: your_api_key_here"
Svaret inkluderer fuld makro- og mikronæringsprofil (30+ næringsstoffer), alle tilgængelige portionsstørrelser, ingrediensliste (for mærkevarer og restaurantvarer), allergenflag, diæt-tags (vegansk, glutenfri, halal, kosher) og kildeattribution.
Hent Fødevare ved Stregkode
Find et pakket fødevareprodukt ved hjælp af dets UPC eller EAN stregkode.
Endpoint: GET /v1/foods/barcode/{code}
Parametre:
| Parameter | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
| code | string | Ja | UPC (12-cifret) eller EAN (13-cifret) stregkode |
Eksempel (Python):
response = requests.get(
f"{BASE_URL}/foods/barcode/041331092609",
headers={"X-Api-Key": API_KEY}
)
food = response.json()
print(f"{food['name']}: {food['calories']} kcal per {food['serving_description']}")
Analyser Naturligt Sprog Input
Parse en naturligt sprog madbeskrivelse og returner strukturerede ernæringsdata. Dette endpoint håndterer mængder, enheder, tilberedningsmetoder og flere varer i en enkelt streng.
Endpoint: POST /v1/foods/analyze
Anmodningskrop:
{
"query": "2 røræg med en skive fuldkornsbrød og en halv avocado",
"language": "en"
}
Eksempel (Python):
response = requests.post(
f"{BASE_URL}/foods/analyze",
headers={
"X-Api-Key": API_KEY,
"Content-Type": "application/json"
},
json={
"query": "2 røræg med en skive fuldkornsbrød og en halv avocado"
}
)
result = response.json()
for item in result["items"]:
print(f"{item['quantity']} {item['unit']} {item['name']}: {item['calories']} kcal")
print(f"Total: {result['total']['calories']} kcal")
Eksempel Svar:
{
"items": [
{
"name": "Røræg",
"quantity": 2,
"unit": "store",
"calories": 182,
"protein_g": 12.2,
"carbohydrates_g": 2.4,
"fat_g": 13.6,
"food_id": "nf_002891"
},
{
"name": "Fuldkornsbrød",
"quantity": 1,
"unit": "skive",
"calories": 81,
"protein_g": 3.9,
"carbohydrates_g": 13.8,
"fat_g": 1.1,
"food_id": "nf_003401"
},
{
"name": "Avocado",
"quantity": 0.5,
"unit": "medium",
"calories": 120,
"protein_g": 1.5,
"carbohydrates_g": 6.4,
"fat_g": 11.0,
"food_id": "nf_000892"
}
],
"total": {
"calories": 383,
"protein_g": 17.6,
"carbohydrates_g": 22.6,
"fat_g": 25.7
}
}
AI Madgenkendelse (Betalt Niveau)
Indsend et billede af mad til AI-drevet genkendelse og ernæringsanalyse.
Endpoint: POST /v1/foods/recognize
Anmodning: Multipart form data med billedfilen, eller en JSON-krop med et base64-kodet billede.
Eksempel (Python):
with open("meal_photo.jpg", "rb") as f:
response = requests.post(
f"{BASE_URL}/foods/recognize",
headers={"X-Api-Key": API_KEY},
files={"image": ("meal.jpg", f, "image/jpeg")}
)
result = response.json()
for item in result["detected_items"]:
print(f"{item['name']} ({item['confidence']:.1%}): {item['calories']} kcal")
Svaret inkluderer genkendte madvarer med tillidsniveauer, koordinater for afgrænsningsbokse, estimerede portionsstørrelser, ernæringsopdeling pr. vare og total ernæringsoversigt for måltidet.
Hastighedsgrænser og Fejlhåndtering
Hastighedsgrænser efter Niveau
| Niveau | Daglige Anmodninger | Anmodninger/Sekund | AI Genkendelse | Pris |
|---|---|---|---|---|
| Gratis | 500 | 5 | Ikke inkluderet | $0 |
| Starter | 5.000 | 10 | 100/dag | $29/måned |
| Pro | 50.000 | 25 | 1.000/dag | $99/måned |
| Enterprise | Tilpasset | Tilpasset | Tilpasset | Kontakt salg |
Hastighedsgrænse Headers
Hver respons inkluderer hastighedsgrænse headers:
X-RateLimit-Limit: 500
X-RateLimit-Remaining: 487
X-RateLimit-Reset: 1710374400
Fejl Svar
API'et bruger standard HTTP statuskoder med beskrivende fejlmeddelelser.
{
"error": {
"code": "rate_limit_exceeded",
"message": "Daglig anmodningsgrænse på 500 overskredet. Nulstilles kl. 00:00 UTC.",
"status": 429
}
}
| Statuskode | Betydning |
|---|---|
| 200 | Succes |
| 400 | Dårlig anmodning (ugyldige parametre) |
| 401 | Uautoriseret (ugyldig eller manglende API-nøgle) |
| 404 | Fødevare ikke fundet |
| 429 | Hastighedsgrænse overskredet |
| 500 | Intern serverfejl |
Implementer eksponentiel tilbageholdelse for 429 og 500 svar. En simpel strategi er at vente 1 sekund efter den første fejl, 2 sekunder efter den anden, 4 efter den tredje, op til et maksimum på 60 sekunder.
Anvendelsesscenarier og Implementeringsmønstre
Måltidsplanlægningsapplikationer
Byg en måltidsplanlægger, der rammer mål-makroer ved at søge efter fødevarer, beregne ernæringstotaler og iterere, indtil måltidsplanen opfylder brugerens mål.
def find_foods_for_target(target_protein, target_calories):
"""Find proteinrige fødevarer inden for kaloriebudgettet."""
response = requests.get(
f"{BASE_URL}/foods/search",
headers={"X-Api-Key": API_KEY},
params={
"query": "high protein",
"limit": 20,
"type": "common"
}
)
foods = response.json()["foods"]
# Filtrer efter protein-til-kalorie-forhold
efficient_foods = [
f for f in foods
if f["protein_g"] / max(f["calories"], 1) > 0.15
]
return sorted(efficient_foods, key=lambda f: f["protein_g"], reverse=True)
Fitness App Integration
Kombiner med aktivitetsdata for at vise brugerne deres kaloriebalance. Brug naturligt sprog endpointet til hurtig registrering.
async function logMealFromText(description) {
const response = await fetch(`${BASE_URL}/foods/analyze`, {
method: "POST",
headers: {
"X-Api-Key": API_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({ query: description })
});
const data = await response.json();
// Gem i din database
await db.meals.insert({
user_id: currentUser.id,
items: data.items,
total_calories: data.total.calories,
total_protein: data.total.protein_g,
timestamp: new Date()
});
return data;
}
Opskrifts Ernæringsberegner
Beregn den ernæringsmæssige indhold af en opskrift ved at se på hver ingrediens og summere værdierne.
def analyze_recipe(ingredients):
"""
ingredients: liste af strenge som ["200g kyllingebryst", "1 kop brune ris", "2 spsk olivenolie"]
"""
recipe_nutrition = {"calories": 0, "protein_g": 0, "carbohydrates_g": 0, "fat_g": 0}
for ingredient in ingredients:
response = requests.post(
f"{BASE_URL}/foods/analyze",
headers={
"X-Api-Key": API_KEY,
"Content-Type": "application/json"
},
json={"query": ingredient}
)
data = response.json()
for item in data["items"]:
recipe_nutrition["calories"] += item["calories"]
recipe_nutrition["protein_g"] += item["protein_g"]
recipe_nutrition["carbohydrates_g"] += item["carbohydrates_g"]
recipe_nutrition["fat_g"] += item["fat_g"]
return recipe_nutrition
# Eksempel på brug
recipe = analyze_recipe([
"200g kyllingebryst",
"1 kop brune ris kogt",
"2 spiseskefulde olivenolie",
"1 kop dampet broccoli"
])
print(f"Opskrift total: {recipe['calories']} kcal, {recipe['protein_g']}g protein")
Forskning og Dataanalyse
Til akademisk forskning, brug API'et til at bygge ernæringsprofiler for studiepopulationer eller validere kostvurderingsværktøjer.
import pandas as pd
def build_nutrition_profile(food_log_df):
"""
food_log_df: DataFrame med kolonnerne ['food_description', 'date']
Returnerer DataFrame med fuld ernæringsopdeling pr. post.
"""
results = []
for _, row in food_log_df.iterrows():
response = requests.post(
f"{BASE_URL}/foods/analyze",
headers={
"X-Api-Key": API_KEY,
"Content-Type": "application/json"
},
json={"query": row["food_description"]}
)
data = response.json()
results.append({
"date": row["date"],
"description": row["food_description"],
"calories": data["total"]["calories"],
"protein_g": data["total"]["protein_g"],
"carbs_g": data["total"]["carbohydrates_g"],
"fat_g": data["total"]["fat_g"]
})
return pd.DataFrame(results)
Sammenligning med Alternative API'er
USDA FoodData Central API
USDA API'et er helt gratis uden betalte niveauer, hvilket gør det til det foretrukne valg for akademiske og offentlige projekter. Det dækker cirka 370.000 fødevarer på tværs af Foundation, SR Legacy, Survey (FNDDS) og Branded databaser. Styrker inkluderer at være guldstandart for amerikanske fødevarekompositionsdata, autoriteten som andre databaser refererer til. Begrænsninger inkluderer ingen naturlig sprog parsing (du skal matche madnavne til deres specifikke database nøgler), ingen stregkodelookup, ingen AI-genkendelse, og de mærkede fødevaredatasæt kan være inkonsistente, da de er afhængige af producentens indsendelser. API-dokumentationen er funktionel, men ikke udviklervenlig efter moderne standarder.
Bedst til: Akademisk forskning, offentlige projekter, applikationer der har brug for autoritativ reference data og har udviklerressourcer til at håndtere matchningskompleksitet.
Nutritionix API
Nutritionix har en af de største maddatabaser med stærk dækning af restaurant- og mærkevarer. Dens naturlige sprog endpoint er modent og håndterer komplekse forespørgsler godt. Dog er det gratis niveau ekstremt begrænset til 50 anmodninger pr. dag, og de betalte planer starter ved $299 pr. måned, hvilket gør det uoverkommeligt for mange uafhængige udviklere og små startups. API'et er veldokumenteret og understøtter både tekst- og stregkodelookup.
Bedst til: Velfinansierede applikationer, der har brug for omfattende restaurantfødevaredata og har råd til prisen.
Edamam API
Edamam tilbyder ernæringsanalyse, opskriftsanalyse og maddatabase API'er. Det gratis niveau giver 100 anmodninger pr. dag, hvilket er brugbart til prototyping. Edamams styrke er dens opskriftsanalysekapacitet, som kan parse en fuld opskrifts ingrediensliste og returnere ernæringsdata pr. servering. Databasen dækker cirka 900.000 fødevarer. Begrænsninger inkluderer lejlighedsvise inkonsistenser i portionsstørrelsesdata og en mindre intuitiv udvikleroplevelse sammenlignet med nyere API'er.
Bedst til: Opskriftsfokuserede applikationer, måltidsplanlægningsværktøjer der har brug for opskriftsniveauanalyse.
FatSecret Platform API
FatSecret tilbyder et generøst gratis niveau med 5.000 anmodninger pr. dag, hvilket gør det attraktivt for bootstrappede projekter. Ulempen er, at du skal vise FatSecret-branding og attribution i din applikation. Databasen dækker cirka 500.000 fødevarer med anstændig international dækning. API'et understøtter OAuth 1.0 autentificering, som er ældre og mere kompleks at implementere end API-nøgle eller OAuth 2.0 tilgange.
Bedst til: Budgetbegrænsede projekter, der kan imødekomme krav om attribution og OAuth 1.0.
Open Food Facts API
Open Food Facts er en samfundsdrevet, open-source maddatabase med over 3 millioner produkter, primært pakkede varer med stregkodedata. Det er helt gratis og åbent (Open Database License). API'et er ligetil til stregkodelookups, men mindre struktureret til ernæringssøgningsforespørgsler. Datakvaliteten varierer, da bidragene er crowdsourced, selvom en fællesskabsrevisionsproces fanger mange fejl.
Bedst til: Pakkede fødevare stregkodescanning, projekter der er i overensstemmelse med open-source principper, international dækning af pakkede fødevarer.
API Sammenligningsoversigt
| Funktion | Nutrola | USDA | Nutritionix | Edamam | FatSecret | Open Food Facts |
|---|---|---|---|---|---|---|
| Gratis niveau daglig grænse | 500 | 1.000/time | 50 | 100 | 5.000 | Ubegrænset |
| Naturlig sprog parsing | Ja | Nej | Ja | Ja | Nej | Nej |
| AI madgenkendelse | Ja (betalt) | Nej | Nej | Nej | Nej | Nej |
| Stregkodelookup | Ja | Nej | Ja | Nej | Ja | Ja |
| Multi-sprog understøttelse | 8 sprog | Engelsk | Engelsk | Engelsk | 16 sprog | 40+ sprog |
| Opskriftsanalyse | Via NLP | Nej | Ja | Ja | Nej | Nej |
| Mikronæringsstof dybde | 30+ næringsstoffer | 60+ næringsstoffer | 20+ næringsstoffer | 25+ næringsstoffer | 15+ næringsstoffer | Varierer |
| Autentificering | API-nøgle | API-nøgle | API-nøgle | App ID + Nøgle | OAuth 1.0 | Ingen (valgfri) |
Bedste Praksis for Bygning af Ernæringsapps
Cache aggressivt
Ernæringsdata for almindelige fødevarer ændrer sig ikke ofte. Cache mad søgningeresultater og ernæringsopslag på din backend i 24 til 72 timer for at reducere API-anmodninger og forbedre svartider.
Håndter manglende data elegant
Ikke hver fødevarepost har komplette mikronæringsdata. Design din UI til at indikere, når data ikke er tilgængelige i stedet for at vise nuller, som brugerne kan misfortolke som "denne mad indeholder nul jern."
Valider brugerinput før API-anmodninger
Trim whitespace, normaliser enheder og stavekontroller madnavne, før du sender dem til API'et. En veludformet forespørgsel giver meget bedre resultater end en med stavefejl.
Brug naturligt sprog endpointet når det er muligt
I stedet for at bygge din egen madnavneparser, brug /foods/analyze endpointet. Det håndterer mængder ("2 kopper"), tilberedningsmetoder ("grillet") og sammensatte beskrivelser ("fuldkornsbrød med smør") bedre end de fleste brugerdefinerede implementeringer.
Respekter hastighedsgrænser
Implementer ordentlig tilbageholdelseslogik. Batchoperationer hvor det er muligt. Brug webhooks eller køer til højvolumen operationer i stedet for synkrone API-anmodninger.
Attribuer datakilder
God praksis (og nogle gange et juridisk krav afhængigt af API'et) er at attribuere datakilden. Vis "Ernæringsdata leveret af Nutrola" eller det ækvivalente for hvilket som helst API, du bruger.
Ofte Stillede Spørgsmål
Er Nutrola API'et virkelig gratis?
Ja. Det gratis niveau giver 500 API-anmodninger pr. dag uden omkostninger, uden at der kræves kreditkort. Dette er tilstrækkeligt til prototyping, små applikationer og personlige projekter. Det gratis niveau inkluderer tekstsøgning, fødevareopslag efter ID, stregkodelookup og naturlig sprog analyse. AI-madgenkendelse fra billeder er tilgængelig på betalte niveauer, der starter ved $29 pr. måned.
Hvilket dataformat returnerer API'et?
Alle svar er i JSON-format med UTF-8 kodning. Ernæringsværdier bruger standardenheder: kilokalorier for energi, gram for makronæringsstoffer og fiber, milligram for natrium og de fleste mineraler, og mikrogram for vitaminer, hvor det er relevant.
Kan jeg bruge Nutrola API'et i en kommerciel applikation?
Ja. Både det gratis og betalte niveau tillader kommerciel brug. Det gratis niveau kræver Nutrola-attribution i din applikation. Betalte niveauer inkluderer white-label muligheder, hvor ingen attribution er nødvendig.
Hvor ofte opdateres maddatabasen?
Nutrola maddatabasen opdateres løbende for mærkevarer og restaurantfødevarer, med USDA reference data synkroniseret inden for 30 dage efter USDA-udgivelser. Store databaseopdateringer finder sted månedligt, mens individuelle fødevareposter kan opdateres dagligt baseret på producentændringer, brugerindberettede korrektioner og nye produktlanceringer.
Understøtter API'et internationale fødevarer?
Ja. Databasen dækker fødevarer fra over 50 lande, med søgning tilgængelig på 8 sprog (engelsk, spansk, tysk, fransk, portugisisk, japansk, koreansk og kinesisk). International fødevaredækning er en kerneprioritet for Nutrola, og databasen inkluderer regionale retter, lokale mærkevarer og cuisinespecifikke tilberedninger, der ofte mangler i amerikansk centrerede databaser.
Kan jeg bruge API'et til en mobilapp?
Ja, men indlej ikke din API-nøgle direkte i mobilklientkode, da den kan udtrækkes fra appens binære fil. I stedet skal du oprette en letvægts backend-server, der proxy-anmodninger til Nutrola API'et og håndterer autentificering. Dette giver dig også et lag til caching og anmodningsstyring.
Er der en webhook eller streamingmulighed?
I øjeblikket fungerer API'et på en anmodnings-respons model. Webhook-understøttelse til asynkrone madgenkendelsesresultater (til store batchbehandlinger) er på køreplanen for 2026. For batchoperationer i dag, brug /v1/foods/analyze/batch endpointet, som accepterer op til 20 varer i en enkelt anmodning.
Konklusion
Ernærings-API'er har gjort det praktisk for udviklere at bygge madbevidste applikationer uden det enorme overhead ved at vedligeholde en proprietær maddatabase. Nutrola's API tilbyder et generøst gratis niveau, omfattende maddækning på tværs af internationale køkkener, naturlig sprogforståelse og valgfri AI-madgenkendelse, hvilket gør det til et stærkt valg for projekter fra weekendprototyper til produktionsapplikationer.
Det bedste API til dit projekt afhænger af dine specifikke behov: USDA for autoritativ reference data, Nutritionix for dyb restaurantdækning, Open Food Facts for åbne stregkodedata, eller Nutrola for en balance mellem funktioner, nøjagtighed og udvikleroplevelse. I mange tilfælde giver kombinationen af flere API'er dig den bedste dækning. Start med det gratis niveau, valider det mod dit brugsscenarie, og skaler derfra.
Klar til at forvandle din ernæringsregistrering?
Bliv en del af de tusindvis, der har forvandlet deres sundhedsrejse med Nutrola!