Gratis närings-API för utvecklare: Så bygger du appar med Nutrolas livsmedelsdata
En utvecklarhandledning för att bygga näringsmedvetna applikationer med Nutrolas gratis närings-API. Täcker slutpunkter, autentisering, kodexempel i Python, JavaScript och cURL, hastighetsbegränsningar samt jämförelser med Nutritionix, Edamam och USDA-API:er.
Att bygga en näringsmedveten applikation krävde tidigare att man sammanställde sin egen livsmedelsdatabas från grunden, licensierade dyra dataset eller skrapade osäkra källor. Idag erbjuder närings-API:er strukturerad, programmeringsvänlig åtkomst till omfattande livsmedelsdatabaser med makro- och mikronäringsämnen samt portionsstorleksdata levererad som ren JSON. Denna guide hjälper utvecklare att navigera i landskapet av närings-API:er, med fokus på hur man kommer igång med Nutrolas gratis nivå och hur den står sig mot alternativen.
Oavsett om du bygger en måltidsplaneringsapp, en träningsspårare, ett forskningsverktyg, en receptanalysator eller en AI-assistent som svarar på näringsfrågor, ger denna guide dig de tekniska detaljerna för att välja ett API och börja göra förfrågningar på några minuter.
Översikt av närings-API:er
Innan vi dyker ner i implementationen, här är en jämförelse av de största närings-API:erna som finns tillgängliga för utvecklare år 2026.
| API | Gratis nivå | Hastighetsbegränsning (gratis) | Livsmedel i databasen | Streckkodsskanning | Livsmedelsigenkänning (AI) | Prissättning (betald) |
|---|---|---|---|---|---|---|
| Nutrola API | Ja | 500 förfrågningar/dag | 900 000+ | Ja | Ja (tillägg) | Från $29/månad |
| USDA FoodData Central | Ja (helt gratis) | 1 000/timme per nyckel | 370 000+ | Nej | Nej | Gratis |
| Nutritionix API | Ja (begränsad) | 50 förfrågningar/dag | 1 000 000+ | Ja | Nej | Från $299/månad |
| Edamam API | Ja | 100 förfrågningar/dag | 900 000+ | Nej | Nej | Från $19/månad |
| FatSecret Platform API | Ja | 5 000 förfrågningar/dag | 500 000+ | Ja | Nej | Gratis (med attribution) |
| Open Food Facts API | Ja (helt gratis) | Rimlig användning | 3 000 000+ | Ja | Nej | Gratis |
| Spoonacular | Ja | 150 förfrågningar/dag | 500 000+ | Nej | Nej | Från $29/månad |
Komma igång med Nutrola API
Steg 1: Skapa ett utvecklarkonto
Besök Nutrola Developer Portal på developers.nutrola.com för att skapa ett gratis konto. Efter e-postverifiering får du en API-nyckel på din instrumentpanel. Den kostnadsfria nivån inkluderar 500 förfrågningar per dag, tillgång till hela livsmedelsdatabasen och textbaserad livsmedelssökning. Slutpunkter för AI-livsmedelsigenkänning finns tillgängliga på betalda nivåer.
Steg 2: Autentisering
Alla API-förfrågningar kräver din API-nyckel i begärans rubrik. Nyckeln skickas via X-Api-Key-rubriken.
X-Api-Key: your_api_key_here
API:et använder endast HTTPS. Alla förfrågningar till HTTP-slutpunkter kommer att få en 301-omdirigering till HTTPS. Tänk på att inte bädda in din API-nyckel i klientkod; använd alltid en proxy för förfrågningar genom din backend-server.
Steg 3: Bas-URL
Alla slutpunkter serveras från:
https://api.nutrola.com/v1/
Svar ges i JSON-format med UTF-8-kodning. API:et följer RESTful-konventioner med standard HTTP-statuskoder.
Kärnslutpunkter
Sök livsmedel
Sök i livsmedelsdatabasen med en textfråga. Returnerar matchande livsmedel med näringsdata.
Slutpunkt: GET /v1/foods/search
Parametrar:
| Parameter | Typ | Obligatorisk | Beskrivning |
|---|---|---|---|
| query | string | Ja | Sökterm (t.ex. "grillad kycklingbröst") |
| limit | integer | Nej | Resultat per sida (standard: 10, max: 50) |
| offset | integer | Nej | Pagineringsoffset (standard: 0) |
| type | string | Nej | Filtrera efter typ: "common", "branded", "restaurant" |
| language | string | Nej | Språkkod (standard: "en"). Stöder: en, es, de, fr, pt, ja, ko, zh |
Exempel på förfrågan (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"
Exempel på förfrågan (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']}")
Exempel på förfrågan (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}`);
});
});
Exempel på svar:
{
"foods": [
{
"id": "nf_001234",
"name": "Kycklingbröst, Grillad, Utan Skinn",
"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 medelbröst (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
}
Hämta livsmedel efter ID
Hämta detaljerad näringsdata för en specifik livsmedelsartikel med dess Nutrola-ID.
Slutpunkt: GET /v1/foods/{food_id}
Exempel (cURL):
curl -X GET "https://api.nutrola.com/v1/foods/nf_001234" \
-H "X-Api-Key: your_api_key_here"
Svaret inkluderar fullständig makro- och mikronäringsprofil (30+ näringsämnen), alla tillgängliga portionsstorlekar, ingredienslista (för märkta och restaurangartiklar), allergenflaggor, kosttaggar (vegansk, glutenfri, halal, kosher) och källattribution.
Hämta livsmedel efter streckkod
Sök efter en förpackad livsmedelsprodukt med dess UPC- eller EAN-streckkod.
Slutpunkt: GET /v1/foods/barcode/{code}
Parametrar:
| Parameter | Typ | Obligatorisk | Beskrivning |
|---|---|---|---|
| code | string | Ja | UPC (12-siffrig) eller EAN (13-siffrig) streckkod |
Exempel (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']}")
Analysera naturligt språk
Bearbeta en beskrivning av livsmedel i naturligt språk och returnera strukturerad näringsdata. Denna slutpunkt hanterar kvantiteter, enheter, tillagningsmetoder och flera artiklar i en enda sträng.
Slutpunkt: POST /v1/foods/analyze
Begärningskropp:
{
"query": "2 scrambled eggs with a slice of whole wheat toast and half an avocado",
"language": "en"
}
Exempel (Python):
response = requests.post(
f"{BASE_URL}/foods/analyze",
headers={
"X-Api-Key": API_KEY,
"Content-Type": "application/json"
},
json={
"query": "2 scrambled eggs with a slice of whole wheat toast and half an 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")
Exempel på svar:
{
"items": [
{
"name": "Äggröra",
"quantity": 2,
"unit": "large",
"calories": 182,
"protein_g": 12.2,
"carbohydrates_g": 2.4,
"fat_g": 13.6,
"food_id": "nf_002891"
},
{
"name": "Fullkornsbröd",
"quantity": 1,
"unit": "slice",
"calories": 81,
"protein_g": 3.9,
"carbohydrates_g": 13.8,
"fat_g": 1.1,
"food_id": "nf_003401"
},
{
"name": "Avokado",
"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-livsmedelsigenkänning (betald nivå)
Skicka en bild av livsmedel för AI-driven igenkänning och näringsanalys.
Slutpunkt: POST /v1/foods/recognize
Begäran: Multipart-formdata med bildfilen eller en JSON-kropp med en base64-kodad bild.
Exempel (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 inkluderar upptäckta livsmedelsartiklar med förtroendesiffror, koordinater för avgränsningsrutor, uppskattade portionsstorlekar, näringsfördelning per artikel och en sammanfattning av den totala måltidens näringsinnehåll.
Hastighetsbegränsningar och felhantering
Hastighetsbegränsningar per nivå
| Nivå | Dagliga förfrågningar | Förfrågningar/Sekund | AI-igenkänning | Pris |
|---|---|---|---|---|
| Gratis | 500 | 5 | Ingår inte | $0 |
| Starter | 5 000 | 10 | 100/dag | $29/månad |
| Pro | 50 000 | 25 | 1 000/dag | $99/månad |
| Företag | Anpassad | Anpassad | Anpassad | Kontakta försäljning |
Hastighetsbegränsningshuvuden
Varje svar inkluderar hastighetsbegränsningshuvuden:
X-RateLimit-Limit: 500
X-RateLimit-Remaining: 487
X-RateLimit-Reset: 1710374400
Felmeddelanden
API:et använder standard HTTP-statuskoder med beskrivande felkroppar.
{
"error": {
"code": "rate_limit_exceeded",
"message": "Daglig begärgräns på 500 överskriden. Återställs kl. 00:00 UTC.",
"status": 429
}
}
| Statuskod | Betydelse |
|---|---|
| 200 | Lyckad |
| 400 | Ogiltig begäran (ogiltiga parametrar) |
| 401 | Obemyndigad (ogiltig eller saknad API-nyckel) |
| 404 | Livsmedel hittades inte |
| 429 | Hastighetsbegränsning överskriden |
| 500 | Internt serverfel |
Implementera exponentiell backoff för 429 och 500 svar. En enkel strategi är att vänta 1 sekund efter den första misslyckandet, 2 sekunder efter den andra, 4 efter den tredje, upp till ett maximum av 60 sekunder.
Användningsfall och implementationsmönster
Måltidsplaneringsapplikationer
Bygg en måltidsplanerare som når målmakron genom att söka livsmedel, beräkna näringssummor och iterera tills måltidsplanen uppfyller användarens mål.
def find_foods_for_target(target_protein, target_calories):
"""Hitta proteinrika livsmedel inom kalori-budgeten."""
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"]
# Filtrera efter protein-till-kalori-förhållande
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)
Integration av träningsappar
Koppla ihop med aktivitetsdata för att visa användarna deras kalori balans. Använd den naturliga språk slutpunkten för snabb 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();
// Spara i din databas
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;
}
Receptnäringsberäknare
Beräkna näringsinnehållet i ett recept genom att söka efter varje ingrediens och summera värdena.
def analyze_recipe(ingredients):
"""
ingredients: lista av strängar som "200g kycklingbröst", "1 kopp brunt ris", "2 msk olivolja"
"""
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
# Exempel på användning
recipe = analyze_recipe([
"200g kycklingbröst",
"1 kopp brunt ris kokt",
"2 matskedar olivolja",
"1 kopp ångad broccoli"
])
print(f"Recept totalt: {recipe['calories']} kcal, {recipe['protein_g']}g protein")
Forskning och dataanalys
För akademisk forskning, använd API:et för att bygga näringsprofiler för studiepopulationer eller validera verktyg för kostbedömning.
import pandas as pd
def build_nutrition_profile(food_log_df):
"""
food_log_df: DataFrame med kolumnerna ['food_description', 'date']
Returnerar DataFrame med fullständig näringsanalys per 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)
Jämförelse med alternativa API:er
USDA FoodData Central API
USDA API:et är helt gratis utan betalda nivåer, vilket gör det till det självklara valet för akademiska och statliga projekt. Det täcker cirka 370 000 livsmedel över Foundation, SR Legacy, Survey (FNDDS) och Branded databaser. Styrkor inkluderar att vara guldstandarden för amerikansk livsmedelskompositionsdata, auktoriteten som andra databaser refererar till. Begränsningar inkluderar ingen naturlig språkbearbetning (du måste matcha livsmedelsnamn med deras specifika databasnycklar), ingen streckkodssökning, ingen AI-igenkänning, och den märkta livsmedelsdata kan vara inkonsekvent eftersom den förlitar sig på tillverkarens inlämningar. API-dokumentationen är funktionell men inte särskilt utvecklarvänlig enligt moderna standarder.
Bäst för: Akademisk forskning, statliga projekt, applikationer som behöver auktoritativ referensdata och har utvecklarresurser för att hantera matchningskomplexitet.
Nutritionix API
Nutritionix har en av de största livsmedelsdatabaserna med stark täckning av restaurang- och märkta livsmedel. Dess naturliga språk slutpunkt är mogen och hanterar komplexa frågor väl. Men den kostnadsfria nivån är extremt begränsad med 50 förfrågningar per dag, och de betalda planerna börjar på $299 per månad, vilket gör den otillgänglig för många oberoende utvecklare och små startups. API:et är väldokumenterat och stöder både text- och streckkodssökning.
Bäst för: Välfinansierade applikationer som behöver omfattande restauranglivsmedelsdata och har råd med prissättningen.
Edamam API
Edamam erbjuder näringsanalys, receptanalys och livsmedelsdatabas-API:er. Den kostnadsfria nivån ger 100 förfrågningar per dag, vilket är hanterbart för prototyper. Edamams styrka är dess receptanalysförmåga, som kan bearbeta en fullständig ingredienslista för ett recept och returnera näringsdata per portion. Databasen täcker cirka 900 000 livsmedel. Begränsningar inkluderar sporadiska inkonsekvenser i portionsstorleksdata och en mindre intuitiv utvecklarupplevelse jämfört med nyare API:er.
Bäst för: Receptfokuserade applikationer, måltidsplaneringsverktyg som behöver receptnivåanalys.
FatSecret Platform API
FatSecret erbjuder en generös gratis nivå med 5 000 förfrågningar per dag, vilket gör den attraktiv för bootstrapade projekt. Avvägningen är att du måste visa FatSecret-branding och attribution i din applikation. Databasen täcker cirka 500 000 livsmedel med anständig internationell täckning. API:et stöder OAuth 1.0-autentisering, vilket är äldre och mer komplext att implementera än API-nyckel- eller OAuth 2.0-ansatser.
Bäst för: Budgetbegränsade projekt som kan hantera krav på attribution och OAuth 1.0.
Open Food Facts API
Open Food Facts är en community-driven, öppen livsmedelsdatabas med över 3 miljoner produkter, främst förpackade varor med streckkodsdata. Den är helt gratis och öppen (Open Database License). API:et är enkelt för streckkodssökningar men mindre strukturerat för närings sökfrågor. Datakvaliteten varierar eftersom bidrag är crowdsourcade, även om en community-granskningsprocess fångar många fel.
Bäst för: Förpackade livsmedels streckkodsskanning, projekt som stämmer överens med öppen källkod-principer, internationell täckning av förpackade livsmedel.
API-jämförelse sammanfattning
| Funktion | Nutrola | USDA | Nutritionix | Edamam | FatSecret | Open Food Facts |
|---|---|---|---|---|---|---|
| Daglig gräns för gratis nivå | 500 | 1 000/timme | 50 | 100 | 5 000 | Obegränsad |
| Naturlig språkbearbetning | Ja | Nej | Ja | Ja | Nej | Nej |
| AI-livsmedelsigenkänning | Ja (betald) | Nej | Nej | Nej | Nej | Nej |
| Streckkodssökning | Ja | Nej | Ja | Nej | Ja | Ja |
| Flerspråkigt stöd | 8 språk | Engelska | Engelska | Engelska | 16 språk | 40+ språk |
| Receptanalys | Via NLP | Nej | Ja | Ja | Nej | Nej |
| Mikronäringsdjup | 30+ näringsämnen | 60+ näringsämnen | 20+ näringsämnen | 25+ näringsämnen | 15+ näringsämnen | Varierar |
| Autentisering | API-nyckel | API-nyckel | API-nyckel | App-ID + Nyckel | OAuth 1.0 | Ingen (valfritt) |
Bästa praxis för att bygga näringsappar
Cache aggressivt
Näringsdata för vanliga livsmedel förändras inte ofta. Cachea livsmedelssökningsresultat och näringsuppslag på din backend i 24 till 72 timmar för att minska API-anrop och förbättra svarstider.
Hantera saknad data på ett smidigt sätt
Inte varje livsmedelspost har fullständig mikronäringsdata. Utforma ditt användargränssnitt för att indikera när data är otillgänglig istället för att visa nollor, vilket användare kan misstolka som "detta livsmedel innehåller noll järn."
Validera användarinmatning innan API-anrop
Trimma vit utrymme, normalisera enheter och rätta stavningen av livsmedelsnamn innan du skickar dem till API:et. En välformulerad fråga ger mycket bättre resultat än en med stavfel.
Använd naturlig språk slutpunkten när det är möjligt
Istället för att bygga din egen livsmedelsnamnparser, använd /foods/analyze slutpunkten. Den hanterar kvantiteter ("2 koppar"), tillagningsmetoder ("grillad") och sammansatta beskrivningar ("fullkornsbröd med smör") bättre än de flesta anpassade implementationer.
Respektera hastighetsbegränsningar
Implementera korrekt backoff-logik. Batchoperationer där det är möjligt. Använd webbhooks eller köer för högvolymoperationer istället för synkrona API-anrop.
Attribuera datakällor
God praxis (och ibland ett lagligt krav beroende på API:et) är att attribuera datakällan. Visa "Näringsdata tillhandahålls av Nutrola" eller motsvarande för vilket API du använder.
Vanliga frågor
Är Nutrola API verkligen gratis?
Ja. Den kostnadsfria nivån erbjuder 500 API-förfrågningar per dag utan kostnad, utan att kreditkort krävs. Detta är tillräckligt för prototyper, små applikationer och personliga projekt. Den kostnadsfria nivån inkluderar textbaserad sökning, livsmedelsuppslag efter ID, streckkodsskanning och analys av naturligt språk. AI-livsmedelsigenkänning från bilder är tillgänglig på betalda nivåer som börjar på $29 per månad.
Vilket dataformat returnerar API:et?
Alla svar ges i JSON-format med UTF-8-kodning. Näringsvärden använder standardenheter: kilokalorier för energi, gram för makronäringsämnen och fiber, milligram för natrium och de flesta mineraler, samt mikrogram för vitaminer där det är tillämpligt.
Kan jag använda Nutrola API i en kommersiell applikation?
Ja. Både den kostnadsfria och betalda nivån tillåter kommersiell användning. Den kostnadsfria nivån kräver Nutrola-attribution i din applikation. Betalda nivåer inkluderar alternativ för vitmärkning där ingen attribution krävs.
Hur ofta uppdateras livsmedelsdatabasen?
Nutrolas livsmedelsdatabas uppdateras kontinuerligt för märkta och restauranglivsmedel, med USDA-referensdata synkroniserad inom 30 dagar efter USDA-utgåvor. Stora databasuppdateringar sker månadsvis, medan individuella livsmedelsinlägg kan uppdateras dagligen baserat på tillverkarändringar, användarrapporterade korrigeringar och nya produktlanseringar.
Stöder API:et internationella livsmedel?
Ja. Databasen täcker livsmedel från över 50 länder, med sökning tillgänglig på 8 språk (engelska, spanska, tyska, franska, portugisiska, japanska, koreanska och kinesiska). Internationell livsmedelstäckning är en kärnprioritet för Nutrola, och databasen inkluderar regionala rätter, lokala märkta produkter och köksspecifika tillagningar som ofta saknas i USA-centrerade databaser.
Kan jag använda API:et för en mobilapp?
Ja, men tänk på att inte bädda in din API-nyckel direkt i mobilklientkoden, eftersom den kan extraheras från appens binärfil. Istället, sätt upp en lättviktig backend-server som proxyar förfrågningar till Nutrola API:et och hanterar autentisering. Detta ger dig också ett lager för caching och begärningshantering.
Finns det en webhook eller streamingalternativ?
För närvarande fungerar API:et på en begäran-svar-modell. Stöd för webhooks för asynkrona resultat av livsmedelsigenkänning (för stora batchbearbetningar) är på väg för 2026. För batchoperationer idag, använd /v1/foods/analyze/batch slutpunkten, som accepterar upp till 20 artiklar i en enda begäran.
Slutsats
Närings-API:er har gjort det praktiskt för utvecklare att bygga livsmedelsmedvetna applikationer utan den enorma overheaden av att underhålla en egen livsmedelsdatabas. Nutrolas API erbjuder en generös gratis nivå, omfattande livsmedels täckning över internationella kök, förståelse för naturligt språk och valfri AI-livsmedelsigenkänning, vilket gör det till ett starkt val för projekt som sträcker sig från helgprototyper till produktionsapplikationer.
Det bästa API:et för ditt projekt beror på dina specifika behov: USDA för auktoritativ referensdata, Nutritionix för djup restaurang täckning, Open Food Facts för öppen källkods streckkodsdata, eller Nutrola för en balans av funktioner, noggrannhet och utvecklarupplevelse. I många fall ger en kombination av flera API:er dig den bästa täckningen. Börja med den kostnadsfria nivån, validera den mot ditt användningsfall och skala därifrån.
Redo att förvandla din näringsspårning?
Gå med tusentals som har förvandlat sin hälsoresa med Nutrola!