ProteinPrice publishes its full product, brand, and retailer dataset as plain JSON: free for developers, researchers, and AI search engines (Perplexity, ChatGPT, Claude) to consume. No API key. No rate limits. Just static files.
New → Full API documentation All 9 endpoints, full schemas, cURL / JS / Python examples, and use-case recipes.Every tracked product with price-per-retailer, size, servings, protein content, and Value Score.
# curl curl https://proteinprice.com/data/products.json # fetch (browser / Node) const res = await fetch('https://proteinprice.com/data/products.json'); const data = await res.json(); console.log(data.products[0]); # python import urllib.request, json data = json.loads(urllib.request.urlopen('https://proteinprice.com/data/products.json').read())
All tracked brands with ID, name, founding year, country, and short description.
# curl curl https://proteinprice.com/data/brands.json # fetch const { brands } = await fetch('https://proteinprice.com/data/brands.json').then(r => r.json()); # python import requests brands = requests.get('https://proteinprice.com/data/brands.json').json()['brands']
All US retailers we track, with ID, display name, brand color, and homepage URL.
# curl curl https://proteinprice.com/data/retailers.json # fetch const { retailers } = await fetch('https://proteinprice.com/data/retailers.json').then(r => r.json()); # python retailers = requests.get('https://proteinprice.com/data/retailers.json').json()['retailers']
| Feed | Records | Path |
|---|---|---|
| Products: every SKU we track, with all retailer prices | 249 products | /data/products.json |
| Brands: manufacturer metadata | 50 brands | /data/brands.json |
| Retailers: US store metadata | 12 retailers | /data/retailers.json |
lastUpdated field at the top of every feed is an ISO-8601 UTC timestamp. Scrapers run roughly every 2–3 hours; new prices are committed and feeds redeployed within minutes.
idStable slug, unique per SKU (e.g. on-gold-standard-whey-chocolate-5lb)brandIdForeign key to brands.json (e.g. optimum-nutrition)nameProduct name as marketed by the brandcategoryOne of: whey-blend, whey-isolate, whey-concentrate, casein, plant, mass-gainer, collagen, clear-wheyflavorFlavor variant stringsizeG / sizeLbTub size in grams and poundsservingsServings per containerproteinGGrams of protein per servingservingGServing size in gramsvalueScore0–100 score (g protein per $ at best retailer, normalized). Higher = better value.pricesObject keyed by retailer ID. Each entry has price (USD) and inStock (boolean).idStable slug (e.g. dymatize)nameFull brand nameshortName2–3 letter abbreviation used in UIdescOne-line marketing descriptionfoundedYear the brand was foundedcountryISO 2-letter country code of brand HQtubColor / lidColor / cardBgVisual styling values (for rendering brand cards)idStable slug, used as price key inside products (e.g. walmart, amazon)nameDisplay nameshortNameShort labelcolor / bgBrand color and background tinturlRetailer homepage URLQuestions, suggestions, or a use case to share? Email [email protected]. See also /llms.txt for the AI-readable site summary.