Show HN: Find the cheapest protein per gram across 3000 powders
priceperprotein.comI tracked protein powder prices in a spreadsheet for years and found that identical protein content can have wild price differences.
I built PricePerProtein to automate it. It pulls real-time Amazon data (Keepa API) and uses Gemini 2.5 Flash to extract nutrition facts from product images/descriptions. Calculates actual protein per dollar, not just package price.
Technical: FastAPI + Celery backend, Next.js frontend with virtual scrolling to handle 3000+ products. Deployed on a VPS (migrated from GCP - much simpler). The AI handles everything from blurry nutrition labels to understanding flavor categories.
No signup, no ads, no affiliate links. Updates hourly.
Oh, also: The dataset is exposed via a remote MCP server: https://mcp.priceperprotein.com
You can connect to it using any MCP client (such as Claude). Then ask in natural language, e.g. “What’s the cheapest unflavored whey powder right now with 4+ stars?”, and the client will hit the MCP tool with those filters and give you back the results.
Bad data. A bunch of links just lead to 404, the filters aren't correct (since when is organic pumpkin seed protein powder nut flavored?)
$239.95 for 9068g with 16g serving size (60 calories, 10g of protein) is not 4 servings and is not 0.2g protein/$1, 1 cal/$1?
And for another product your site says 18 servings, the listing says 16 servings
Thanks for checking it out / the feedback.
I haven’t noticed the 404s, but I’ll check.
On filters: Agreed, I see a few pumpkin seed protein powders tagged as nut flavored that should be unflavored. Will address.
On the “4 servings” issue: I wasn’t handling multi-packs properly, planning on adding that. In addition that products nutrition label did not have serving count, so looks like the llm got confused and took pack count. Im skeptical about inferring serving count from total weight / serving size, as I’ve seen many examples of incorrect total weight information on products.
On 18 vs 16 servings: that’s a LLM misread from the nutrition panel. Thinking reprocessing with larger model may address it.