Cheapest canned protein: 10 canned foods ranked by cost per gram of protein
The cheapest canned protein in USDA's 2017–18 national average prices comes from canned mackerel, kidney beans, canned chicken, black beans and pinto beans: 30 g of protein from them cost $0.77 to $1.12. The same 30 g cost $1.99 from canned tuna, $2.02 from canned salmon and $1.05 from chicken breast.
Prices: USDA Economic Research Service national average prices for 2017–18, the latest set it has published, in dollars of that time, per edible gram (bones, skin you discard and cooking losses already counted). Protein and calories: USDA FNDDS. Today's shelf prices differ, so compare foods with each other rather than with your receipt.
US national average prices, 2017–18, per edible gram.
All 10 foods, cheapest protein first
| # | Food, as eaten | Cost of 30 g protein | Protein per $1 | One serving | Calories per 30 g protein |
|---|---|---|---|---|---|
| 1 | Canned mackerel (canned) | $0.77 | 39 g | 3 oz (85 g): $0.50, 20 g protein | 202 |
| 2 | Kidney beans (canned, drained) | $0.91 | 33 g | 1/2 cup (3.2 oz, 90 g): $0.24, 8 g protein | 466 |
| 3 | Canned chicken (canned, meat only) | $0.95 | 32 g | 3 oz (85 g): $0.68, 22 g protein | 219 |
| 4 | Black beans (canned, drained) | $1.06 | 28 g | 1/2 cup (3.2 oz, 90 g): $0.28, 8 g protein | 453 |
| 5 | Pinto beans (canned, drained) | $1.12 | 27 g | 1/2 cup (3.2 oz, 90 g): $0.26, 7 g protein | 537 |
| 6 | Chickpeas (canned, drained) | $1.18 | 26 g | 1/2 cup (3.2 oz, 90 g): $0.29, 7 g protein | 535 |
| 7 | Canned sardines (canned in oil) | $1.62 | 19 g | 3 oz (85 g): $1.13, 21 g protein | 253 |
| 8 | Spam (canned luncheon meat) | $1.74 | 17 g | 2 oz (57 g): $0.44, 8 g protein | 705 |
| 9 | Canned tuna (canned, drained) | $1.99 | 15 g | 3 oz (85 g): $1.07, 16 g protein | 134 |
| 10 | Canned salmon (canned) | $2.02 | 15 g | 3 oz (85 g): $1.41, 21 g protein | 166 |
Prices are US national averages for 2017–18 in dollars of that time. Cost of 30 g protein = price per 3.5 oz (100 g) as eaten ÷ grams of protein per 3.5 oz (100 g) × 30.
What changes the answer
- Calories that come with the protein. Pinto beans are cheap protein but bring 537 calories with every 30 g of protein. Among the cheapest, canned mackerel and canned chicken deliver the same 30 g of protein with 202 to 219 calories.
- Edible weight, not shelf weight. Every price here is per gram of food as you eat it. Foods that lose weight in cooking or carry bones are not made to look cheaper than they are.
- The year. These are 2017–18 prices. Store brands, sales and region move any single price, so a food that is close to another in this table can swap places at your store.
More on the cost of protein
Sources
- Prices: USDA Economic Research Service, Purchase to Plate National Average Prices for NHANES (PP-NAP), 2017/2018 prices, US dollars per 100 edible grams. https://www.ers.usda.gov/data-products/purchase-to-plate/ (dataset accessed 2026-10-12)
- Protein and calories: USDA FoodData Central, FoodData Central survey (FNDDS) 2024-10-31, the entry with the same food code (accessed 2026-10-14)
Foods on this page
- Black beans: ERS food code 41102080 Black beans, from canned, no added fat, price carried over from a closely matching food (ERS method altEC) · nutrients FDC ID 2707363
- Canned chicken: ERS food code 24198570 Chicken, canned, meat only, matched directly to store sales data · nutrients FDC ID 2706086
- Canned mackerel: ERS food code 26121180 Mackerel, canned, matched directly to store sales data · nutrients FDC ID 2706268
- Canned salmon: ERS food code 26137180 Salmon, canned, matched directly to store sales data · nutrients FDC ID 2706291
- Canned sardines: ERS food code 26139180 Sardines, canned in oil, matched directly to store sales data · nutrients FDC ID 2706293
- Canned tuna: ERS food code 26155110 Tuna, canned, NS as to oil or water pack (Includes tuna, NFS; low sodium), price carried over from a closely matching food (ERS method altEC) · nutrients FDC ID 2706311
- Chickpeas: ERS food code 41302080 Chickpeas, from canned, no added fat (Includes garbanzos; ceci), matched directly to store sales data · nutrients FDC ID 2707418
- Kidney beans: ERS food code 41106080 Kidney beans, from canned, no added fat (Includes red), price carried over from a closely matching food (ERS method altEC) · nutrients FDC ID 2707383
- Pinto beans: ERS food code 41104080 Pinto beans, from canned, no added fat (Includes calico), matched directly to store sales data · nutrients FDC ID 2707375
- Spam: ERS food code 25230530 Ham and pork, canned luncheon meat, chopped, minced, pressed, spiced (Includes Spam; Treet), matched directly to store sales data · nutrients FDC ID 2706211
How we calculate: cost of 30 g protein = ERS price per 3.5 oz (100 g) as eaten ÷ FNDDS protein per 3.5 oz (100 g) × 30. Protein per $1 = protein per 3.5 oz (100 g) ÷ price per 3.5 oz (100 g). Serving weights come from USDA FNDDS or are plain weights (3 oz cooked meat or fish). Protein powder is left out on purpose: ERS gave every protein powder the same price, carried over from an instant breakfast mix, so a cost per gram for it would not be a real measurement. How we verify.