Ingredient density API
The whole dataset behind this site as free JSON and CSV: grams per US cup, per tablespoon and per teaspoon for 48 ingredients, the 6 cup standards, and the full oven temperature chart. No key, no signup, no rate limit, CC BY 4.0. If you are building a recipe app or publishing a conversion table, take it.
Try it now
This works as written, with nothing to sign up for first:
curl -s https://cupsngrams.com/api/v1/ingredients | head -40Or from a browser, since CORS is open:
const res = await fetch("https://cupsngrams.com/api/v1/ingredients");
const { ingredients } = await res.json();
const flour = ingredients.find(i => i.slug === "all-purpose-flour");
console.log(flour.gramsPerUsCup); // 125Endpoints
| Endpoint | Returns |
|---|---|
/api/v1/ingredients | All 48 ingredients with densities and sources |
/api/v1/ingredients/{slug} | One ingredient plus its full cup-fraction conversion table |
/api/v1/cup-standards | The 6 cup definitions with their exact volumes in millilitres |
/api/v1/oven-temperatures | Celsius, Fahrenheit, gas mark and the fan oven equivalent |
/ingredients.csv | The same ingredient data as a spreadsheet download |
The ingredient record
{
"slug": "all-purpose-flour",
"name": "All-Purpose Flour",
"category": "Flours & starches",
"gramsPerUsCup": 125,
"gramsPerTablespoon": 7.813,
"gramsPerTeaspoon": 2.604,
"gramsPerMillilitre": 0.52083,
"ouncesPerUsCup": 4.41,
"url": "https://cupsngrams.com/all-purpose-flour",
"lastVerified": "2026-08-05",
"unverified": false,
"sources": [
{
"label": "King Arthur Baking ingredient weight chart",
"url": "https://www.kingarthurbaking.com/learn/ingredient-weight-chart",
"publishes": 120,
"note": "Spooned into the cup and levelled off, never scooped."
}
]
}Two fields deserve a word. publishes is the figure that source prints, which is deliberately not always our gramsPerUsCup: where references disagree we show both instead of quietly picking one. And unverified: true means exactly what it says, that we have not yet found a published reference for that figure. It is not a quality score, it is an honest gap, and you may want to surface it differently in your own product.
Units and conventions
- All cup figures are per US legal cup, 240 ml. Use
gramsPerMillilitrewith a different cup volume if you need another standard. ouncesPerUsCupis ounces of weight, never fluid ounces.- Values are rounded to three decimal places, which is far beyond any kitchen’s ability to measure and is there so your own arithmetic does not accumulate error.
lastVerifiedis per record, not per file. Different ingredients were checked on different days and the data says so.
Licence and attribution
Published under Creative Commons Attribution 4.0. Commercial use is fine, modification is fine, redistribution is fine. The condition is a visible credit link wherever the figures appear, for example:
Ingredient weights from <a href="https://cupsngrams.com">CupsToGrams</a> (CC BY 4.0)That link is the entire business model of this dataset. The site is free, carries no advertising and sells nothing; publishing the data openly and being credited for it is what makes the work worth doing. If crediting is genuinely impossible in your context, get in touch and we will sort something out.
Versioning
The /v1/ path is a promise: fields will be added but never renamed or removed within v1, so an integration written today keeps working. Anything breaking becomes /v2/ and v1 stays up. Data changes are listed on the changelog, and every response carries a lastModified field if you would rather poll than read.
Caching and fair use
Responses are static files behind a CDN with Cache-Control: public, max-age=3600. There is no rate limit and you will not be blocked, but if you are calling this on every page load of a busy site, copy the JSON into your own build instead. It changes a handful of times a year and your users will thank you for the latency.
Frequently asked questions
Do I need an API key?
No. There is no key, no signup and no rate limit. The endpoints are static JSON files served from a CDN, so there is nothing to authenticate against and nothing for us to meter.
What is the licence?
Creative Commons Attribution 4.0. You can use the data commercially, modify it and redistribute it. The one condition is a visible credit link back to cupsngrams.com wherever the figures appear.
How often does the data change?
Rarely, and never silently. Densities only change when a published reference justifies it, and every change is recorded with its source on the changelog. Each record carries its own lastVerified date so you can tell how fresh a specific figure is.
Can I use this in a mobile app or a recipe site?
Yes, that is exactly what it is for. Because the endpoints are static and CORS is open, you can fetch them straight from a browser, or copy the JSON into your own build and never call us at all. Copying it in is the better choice for an app that needs to work offline.
Need a custom converter, dataset or tool for your own site? This one is built by FusionStudios.
Data last updated . Method on the methodology page.