ScavioScavio
Pricing
Tools
Sign InsGet Startedg
Blog
Whole foods7 min readNov 2, 2026

How to Get Whole Foods Prices by Store Through an API

Use Scavio's Whole Foods API: find a store by ZIP, then one POST returns its regular, sale and Prime prices as JSON. Deals and the weekly flyer are one call.

Scavio Team

Nov 2, 2026

Try the Whole Foods API free
scavio
Grocery / Price monitoring
Whole foods

To get Whole Foods prices for a specific store, use Scavio's Whole Foods API. POST /api/v1/wholefoods/stores turns a ZIP code into nearby store ids, and POST /api/v1/wholefoods/search with a store_id returns up to 60 products with that store's regular price, sale price and Prime member price, plus the sale dates. /deals lists every item on sale at the store, /sales-flyer returns the weekly flyer, and /product adds nutrition facts and the online price. Every call costs 1 credit, about $0.002 on the Growth plan billed yearly.

Whole Foods has no public API, and its prices belong to a store: the same product can have a different regular price, sale price and Prime price one city over. So every request below names its store. The responses are trimmed captures from November 2, 2026.

Step 1: Find the store

Bash
curl -s https://api.scavio.dev/api/v1/wholefoods/stores \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"zip": "10019"}'

ZIP 10019 returned 29 stores, nearest first. The first, with six of its seven days of hours trimmed:

JSON
{
  "store_id": "10849",
  "name": "Hell's Kitchen",
  "address": "301 W 50th St",
  "city": "New York",
  "state": "NY",
  "zip": "10019",
  "latitude": 40.76265,
  "longitude": -73.9863,
  "phone": "(646) 604-7345",
  "distance_miles": 0.421,
  "time_zone": "America/New_York",
  "in_store_hours": [
    { "date": "2026-11-02", "opens_at": "2026-11-02T12:00:00Z", "closes_at": "2026-11-03T03:00:00Z" }
  ],
  "in_store_shopping_disabled": false,
  "url": "https://www.wholefoodsmarket.com/stores/hellskitchen"
}

Hours are UTC timestamps, so 12:00Z is 7 a.m. in New York; convert with time_zone before showing them. The second row was Columbus Circle, store 10160, at 0.54 miles, which the rest of this guide uses. /store reads one store by id, including whether it is Prime eligible and its sales flyer URL.

Step 2: Search at that store

Bash
curl -s https://api.scavio.dev/api/v1/wholefoods/search \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "eggs", "store_id": "10160"}'

"eggs" matched 1,254 products and returned the first 60 in 0.65 s. One row, image trimmed:

JSON
{
  "position": 37,
  "asin": "B00M1QWODW",
  "slug": "vital-farms-organic-large-grade-a-eggs-12-ct-b00m1qwodw",
  "name": "Organic Large Grade A Eggs, 12 CT",
  "brand": "Vital Farms",
  "regular_price": 11.29,
  "sale_price": 9.41,
  "sale_quantity": 1,
  "prime_price": 8.47,
  "prime_quantity": 1,
  "sale_start_date": "2026-10-21T00:00:00Z",
  "sale_end_date": "2026-11-03T23:59:59Z",
  "price_unit": null,
  "on_sale": true,
  "is_local": false,
  "store_id": "10160",
  "url": "https://www.wholefoodsmarket.com/grocery/product/vital-farms-organic-large-grade-a-eggs-12-ct-b00m1qwodw"
}

Prices are dollars as numbers. prime_price is what a Prime member pays, so never show it as the price everyone pays. A multi-buy is a total: a sale_price of 12.23 with sale_quantity 3 means 3 for $12.23, so divide before comparing. price_unit "lb" means per pound. Search sorts by relevance, price_asc or price_desc and nothing else; add on_sale, diet (vegan, gluten-free, organic, dairy-free, vegetarian), category, limit (up to 60) and offset to narrow it. Without a store_id, search prices store 10145, Lamar in Austin, so always pass one.

Step 3: Compare stores

Loop Step 2 over the store ids you care about. We ran "eggs" at six stores and pulled the same carton from each:

StoreRegularSalePrime
Columbus Circle, New York (10160)$11.29$9.41$8.47
One Chicago, Chicago (10740)$10.99$9.16$8.24
3rd & Fairfax, Los Angeles (10177)$10.99$9.16$8.24
Downtown, Miami (10191)$10.99$9.16$8.24
Westlake, Seattle (10216)$9.99$8.31$7.48
Lamar, Austin (10145)$9.99$8.31$7.48

The full-price New York carton cost 51% more than the Prime price in Seattle and Austin. Items off sale move too: a quart of 365 organic unsweetened almond milk was $2.29 in Austin and $3.19 in New York. The chart is in the best Whole Foods grocery price APIs.

Step 4: List everything on sale

Bash
curl -s https://api.scavio.dev/api/v1/wholefoods/deals \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"store_id": "10216"}'

Westlake in Seattle had 2,032 items on sale. The first row, image trimmed:

JSON
{
  "position": 1,
  "asin": "B0C34QZD1L",
  "slug": "poppi-poppi-cherry-limeade-prebiotic-soda-4pk-12-fl-oz-b0c34qzd1l",
  "name": "poppi™ Cherry Limeade Prebiotic Soda, 4PK, 12 fl oz",
  "brand": "Poppi",
  "regular_price": 9.99,
  "sale_price": 7.21,
  "sale_quantity": 1,
  "prime_price": 6.49,
  "prime_quantity": 1,
  "sale_start_date": "2026-10-21T00:00:00Z",
  "sale_end_date": "2026-11-03T23:59:59Z",
  "price_unit": null,
  "on_sale": true,
  "is_local": false,
  "store_id": "10216",
  "url": "https://www.wholefoodsmarket.com/grocery/product/poppi-poppi-cherry-limeade-prebiotic-soda-4pk-12-fl-oz-b0c34qzd1l"
}

Page through with offset (60 a page), or pass category (a slug from the search facets, such as cheese) to list one aisle's deals. On the first page, 55 of 60 sale items had a Prime price, each 9.8% to 10.1% below the sale price.

Step 5: Read one product, shelf price vs online price

Bash
curl -s https://api.scavio.dev/api/v1/wholefoods/product \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"asin": "B00M1QWODW", "store_id": "10160"}'

Trimmed to the fields search does not return (description, images and the nutrition panel cut):

JSON
{
  "asin": "B00M1QWODW",
  "name": "Organic Pasture-Raised Large Eggs 12ct",
  "brand": "Vital Farms",
  "ingredients": "eggs",
  "diets": ["vegetarian", "keto", "paleo"],
  "snap_ebt": "SNAP EBT eligible",
  "product_type": "EGG",
  "store_id": "10160",
  "in_store": {
    "regular_price": 11.29,
    "sale_price": 9.41,
    "sale_quantity": 1,
    "prime_price": 8.47,
    "prime_quantity": 1,
    "sale_start_date": "2026-10-21T00:00:00Z",
    "sale_end_date": "2026-11-03T23:59:59Z",
    "price_unit": null,
    "is_local": false
  },
  "online": {
    "price": 8.31,
    "list_price": 9.99,
    "savings": 1.68,
    "savings_percent": "17%",
    "prime_price": 7.48,
    "unit_price": 0.69,
    "unit_price_unit": "count",
    "currency": "USD",
    "availability": "IN_STOCK",
    "max_order_quantity": 66
  }
}

in_store is the shelf; online is the same store's delivery and pickup price, and here it was $1.10 lower. It does not always go that way: at the Austin store the same carton was $8.31 on the shelf and $9.16 online. Why Whole Foods in-store prices differ from online compares ten products at two stores. online.availability is the online offer's status, not a shelf count.

Step 6: Pull the weekly sales flyer

Bash
curl -s https://api.scavio.dev/api/v1/wholefoods/sales-flyer \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"store_id": "10216"}'

Westlake's flyer had 46 promotions. One, image trimmed:

JSON
{
  "promotion_id": "0c9b5449-4fb0-4fa5-add7-071d572f21f7",
  "product_name": "Honeycrisp Apples",
  "brand": "Organic",
  "headline": null,
  "description": null,
  "terms": "While supplies last. Quantity limits apply. Quantities limited. No rain checks except where required by law. Must be current Prime member to get Prime price.",
  "package_size": null,
  "regular_price": "$3.99/lb",
  "sale_price": "$3.32/lb",
  "prime_price": "$2.99/lb",
  "start_date": "2026-10-28T05:00:00Z",
  "end_date": "2026-11-03T05:00:00Z",
  "tier": "STANDARD_TILE",
  "rank": 4,
  "asins": ["B001GIP2A8"]
}

Flyer prices are text as printed, and some promotions are percentages ("44% off", "50% off" with Prime, on frozen pizzas). Use asins with Step 5, or /deals, when you need numbers.

All seven endpoints

EndpointWhat it returnsCredits
/api/v1/wholefoods/storesStores near a ZIP, nearest first: store_id, address, phone, coordinates, distance, in-store and pickup hours1
/api/v1/wholefoods/storeOne store by id: status, Prime eligibility, address, time zone, store page and flyer URLs1
/api/v1/wholefoods/searchUp to 60 products a page at one store: regular, sale and Prime price, multi-buys, sale dates, ASIN, facets1
/api/v1/wholefoods/categoryOne category at one store, same rows, six sorts, on-sale and diet filters1
/api/v1/wholefoods/dealsEvery item on sale at one store, store-wide or in one category1
/api/v1/wholefoods/productOne product: ingredients, nutrition, diets, SNAP EBT, and the store's in-store and online prices1
/api/v1/wholefoods/sales-flyerThe store's weekly flyer: promotions with printed prices, dates, terms and ASINs1

Errors are not charged: an unknown store id on /store or /sales-flyer returns 404, as does an unknown category or ASIN, and a temporary Whole Foods outage returns 502. An unknown store_id on search, category or deals returns an empty list and is charged, so check new ids with /store. Data covers US stores only. Our 49 calls took 0.5 to 1.6 s each.

Getting started

  1. Sign up at dashboard.scavio.dev/sign-up: 50 free credits, no card required.
  2. Copy your API key from the dashboard.
  3. Send a POST to /api/v1/wholefoods/stores with a ZIP, then to /api/v1/wholefoods/search with a store_id.

Try the Whole Foods API free in the playground first, or call it from Claude and other agents through the MCP server, where Whole Foods is opt-in.

Reference: Whole Foods API overview · search · category · deals · product · stores · sales flyer

Frequently asked questions

Does Whole Foods have an API for prices?

Whole Foods Market offers no public developer API for products, prices or stores. Scavio's Whole Foods API returns that public data as JSON with one API key: a store locator by ZIP, search, category and deals priced at the store you pick, product detail with nutrition and the online price, and the weekly sales flyer.

How do I find a Whole Foods store id?

POST a ZIP code to /api/v1/wholefoods/stores. It returns stores nearest first within 15 miles, widening to 50, each with a 5-digit store_id, address, phone, distance and hours. ZIP 10019 returned 29 stores on November 2, 2026; Columbus Circle, store 10160, was second at 0.54 miles.

How do I get the Whole Foods Prime member price?

Every search, category and deals row carries prime_price next to regular_price and sale_price, with prime_quantity for multi-buys. It is null when the item has no Prime price at that store. On sale items we checked, the Prime price was 10% below the sale price, matching the extra 10% off sales that Whole Foods gives Prime members.

Are Whole Foods online prices the same as in store?

Not always. The product endpoint returns both for one store: at Columbus Circle a carton of Vital Farms organic eggs was $9.41 on sale on the shelf and $8.31 online, while at the Lamar store in Austin it was $8.31 on the shelf and $9.16 online. Label which price you show.

How much does Whole Foods data cost with Scavio?

Every Whole Foods call costs 1 credit: about $0.002 on the Growth plan billed yearly and $0.0043 on the $30 monthly Project plan. A search returns up to 60 products. Errors such as a 404 for an unknown store or product are not charged, and new accounts get 50 free credits with no card.

Whole Foods store prices as JSON

  • Store finder, search, deals and weekly flyer
  • Regular, sale and Prime price per store
  • 1 credit a call, no Whole Foods account
Try the Whole Foods API free

50 free credits, no credit card

On this page

  1. Step 1: Find the store
  2. Step 2: Search at that store
  3. Step 3: Compare stores
  4. Step 4: List everything on sale

Related articles

View all
  • scavio
    Grocery / Price monitoring
    Whole foods
    Why Are Whole Foods In-Store Prices Different From Online? Compare Both at Your Store in One Call
  • scavio
    Grocery / Price monitoring
    Aldi
    Why Are ALDI App Prices Higher Than In Store? How to Get Your Store's Shelf Prices Instead
ScavioScavio

One scraper API for every social, search, e-commerce and real estate platform. Built for AI agents.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative
  • Serper Alternative
  • Tavily vs Scavio
  • SerpAPI vs Scavio
  • All alternatives
  • Compare Scavio vs alternatives

Search APIs

  • Google Search API
  • Amazon Product API
  • YouTube API
  • Reddit API
  • Walmart Product API
  • TikTok API
  • Instagram API

Tools

  • All Tools

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy