BiomaLearnFoodsNutrition factsNutrientsGuidesAnswersEvidence

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.

Cost of 30 g protein
Canned mackerel$0.77Kidney beans$0.91Canned chicken$0.95Black beans$1.06Pinto beans$1.12Chickpeas$1.18Canned sardines$1.62Spam$1.74Canned tuna$1.99Canned salmon$2.02

US national average prices, 2017–18, per edible gram.

All 10 foods, cheapest protein first

#Food, as eatenCost of 30 g proteinProtein per $1One servingCalories per 30 g protein
1Canned mackerel (canned)$0.7739 g3 oz (85 g): $0.50, 20 g protein202
2Kidney beans (canned, drained)$0.9133 g1/2 cup (3.2 oz, 90 g): $0.24, 8 g protein466
3Canned chicken (canned, meat only)$0.9532 g3 oz (85 g): $0.68, 22 g protein219
4Black beans (canned, drained)$1.0628 g1/2 cup (3.2 oz, 90 g): $0.28, 8 g protein453
5Pinto beans (canned, drained)$1.1227 g1/2 cup (3.2 oz, 90 g): $0.26, 7 g protein537
6Chickpeas (canned, drained)$1.1826 g1/2 cup (3.2 oz, 90 g): $0.29, 7 g protein535
7Canned sardines (canned in oil)$1.6219 g3 oz (85 g): $1.13, 21 g protein253
8Spam (canned luncheon meat)$1.7417 g2 oz (57 g): $0.44, 8 g protein705
9Canned tuna (canned, drained)$1.9915 g3 oz (85 g): $1.07, 16 g protein134
10Canned salmon (canned)$2.0215 g3 oz (85 g): $1.41, 21 g protein166

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

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.