A while ago I was building a food app on the side and needed a recipe API. I figured this was a solved problem. It turned out not to be, at least not for me.
The well-known APIs were priced for funded companies, not someone hacking on a side project after work. The cheaper ones were affordable but inconsistent in a way that made them genuinely annoying to build on. One recipe had a photo, the next had none. One had a description, the next had an empty string. Nutrition existed for some dishes and not others. I spent more time writing defensive code for missing fields than building my actual app.
So I did the unreasonable thing and built the data layer myself. That became Foodashi.
The one idea: consistency
The thing I cared about most was that every recipe has the same shape. If a field exists on one recipe, it exists on all of them. Every recipe ships with a food photo, a description, resolved ingredients, steps, nutrition, allergens, dietary tags, a taste profile, and beverage pairings. No special casing, no "is this field here this time" checks.
Right now that is thousands of recipes across 78 world cuisines, behind 70+ REST endpoints. Nutrition comes both per serving and per 100g. Allergens follow EU 1169/2011 (all 14). There is a health score I call NutriMetric. On the Pro tier there are a few AI endpoints too: meal planning, food photo recognition, and pulling a structured recipe out of raw text or a URL.
What a call looks like
curl "https://api.foodashi.com/api/recipes/search?query=ramen" \
-H "X-Api-Key: YOUR_KEY"
A trimmed response:
{
"title": "Shoyu Ramen",
"cuisine": "Japan",
"image_url": "https://.../shoyu-ramen.jpg",
"nutrition": {
"per_serving": { "energy_kcal": 480, "protein": 24, "carbohydrate": 58, "total_fat": 16, "sodium": 1300 }
},
"allergens": { "contains": ["Gluten", "Soybeans", "Eggs"] },
"diet_tags": ["high-protein"],
"taste_profile": { "umami": 9, "salty": 7 },
"nutri_metric": { "grade": "B" }
}
The same fields come back whether you ask for ramen or a Peruvian stew.
Where I am honest with you
Nutrition is the place a lot of food data quietly cuts corners, so I want to be clear about how mine works. The numbers are computed from 11 official government food composition databases (USDA SR Legacy, USDA Foundation Foods, CIQUAL in France, MEXT in Japan, CNF in Canada, and more). When an ingredient genuinely is not in any of those, the value is AI estimated and flagged at a lower confidence, so you can tell measured numbers from estimates. I would rather show the seams than pretend everything is lab measured.
Try it
There is a free Hobby tier with 10,000 calls a month, no card required. That tier exists because it is the one I wish I had when I started.
Docs: https://foodashi.com/api-recipe-documentation/
OpenAPI spec: https://foodashi.com/openapi.json
Base URL: https://api.foodashi.com
It is a solo build (one person, Cloudflare Workers and Supabase, in Budapest), so if you pull the free tier and something is wrong or awkward, I would really like to hear it. Tell me where the data falls short. That is the most useful thing right now.
Top comments (0)