Instacart Grocery Price Index avatar

Instacart Grocery Price Index

Pricing

from $0.99 / 1,000 results

Go to Apify Store
Instacart Grocery Price Index

Instacart Grocery Price Index

Track Instacart grocery prices, product trends, and price changes across stores and categories. Collect structured pricing data to analyze grocery inflation, compare retailers, monitor market trends, power price intelligence, research, analytics, and competitive insights.

Pricing

from $0.99 / 1,000 results

Rating

5.0

(2)

Developer

Shahid Irfan

Shahid Irfan

Maintained by Community

Actor stats

3

Bookmarked

44

Total users

5

Monthly active users

a day ago

Last modified

Share

What does Instacart Grocery Price Index do?

Instacart Grocery Price Index is an Instacart product scraper for collecting grocery listings, prices, availability, and catalog details from public Instacart pages. Add one or more supported Instacart URLs, choose the maximum number of products, and receive a clean dataset for price monitoring, product research, assortment analysis, and reporting.

The Actor supports category pages, keyword search pages, public store or brand pages, and individual product pages. Category pages are useful for broad catalog coverage, while search, store, and product pages generally expose richer commercial fields such as price context, retailer information, stock status, and product identifiers.

Why use Instacart Grocery Price Index?

  • Track grocery prices - Collect current product prices and price text for recurring comparisons.
  • Monitor availability - Capture stock flags, stock levels, and upcoming-product indicators when Instacart provides them.
  • Study product assortment - Build category, brand, and retailer datasets for market research.
  • Keep product identity consistent - Save product, item, retailer, shop, and legacy identifiers when available.
  • Collect from multiple pages - Process several categories, searches, brands, or products in one run.
  • Use clean output in other tools - Download JSON, CSV, Excel, or other Apify dataset formats, or connect the dataset to an automation workflow.
  • Run on demand or on a schedule - Use repeated runs to create a price and availability history.

What data can you extract from Instacart?

The exact fields depend on the supplied page and what Instacart publishes for that listing. Empty values are omitted from saved rows.

FieldTypeDescription
product_idStringInstacart product identifier.
item_idStringItem-level identifier for a store or retailer listing.
item_load_idStringListing load identifier when available.
nameStringProduct name.
brandStringBrand name when available.
brand_idStringBrand identifier when available.
sizeStringPack size, unit size, or packaging text.
priceNumberParsed current price when available.
price_stringStringDisplay price text from the listing.
full_price_stringStringFull displayed price text, including additional pricing context when available.
pricing_unit_stringStringUnit pricing text such as price per ounce or each.
currency_symbolStringCurrency symbol shown with the price.
in_stockBooleanWhether the item is marked available.
stock_levelStringAvailability level such as inStock.
stock_level_labelStringHuman-readable availability label when available.
is_upcoming_productBooleanWhether Instacart marks the item as upcoming.
retailer_idStringRetailer identifier in a multi-retailer result.
retailer_location_idStringRetailer location identifier when available.
shop_idStringInstacart shop identifier.
zone_idStringDelivery or shopping zone identifier when available.
postal_codeStringPostal code associated with the page context when available.
search_termStringSearch term associated with a keyword result.
search_idStringSearch session identifier when available.
categoryStringProduct category label.
category_idStringCategory identifier.
category_urlStringCategory page URL when available.
category_total_countNumberProduct count reported by a category page when available.
product_urlStringDirect product or item URL.
product_canonical_urlStringCanonical product URL when supplied by Instacart.
image_urlStringProduct image URL.
product_ratingNumberProduct rating when available.
product_rating_countNumberNumber of ratings when available.
dietary_tagsArrayDietary attributes available for the item.
on_saleBooleanSale indicator when available.
buy_one_get_oneBooleanBuy-one-get-one indicator when available.
storeStringSource label, normally Instacart.
timestampStringISO timestamp for the saved record.
extraction_methodStringProvenance label for the record source.

Additional category identifiers, quantity details, unit pricing, sale indicators, and retailer context can be included when the source page exposes them.

Supported Instacart URL types

Use public, complete URLs from www.instacart.com:

  • Category pages - For example, https://www.instacart.com/categories/316-food/317-fresh-produce. Category pagination is used when more results are requested than the first page contains.
  • Keyword search pages - For example, https://www.instacart.com/store/s?k=lemon. Keep the URL exactly as generated by Instacart. Search pages return the result set supplied by that URL.
  • Public store or brand pages - For example, https://www.instacart.com/store/brands/mccormick/taco. These pages can provide item-level details for the products listed there.
  • Product detail pages - For example, https://www.instacart.com/products/16614423-english-seedless-cucumber-each. A product URL normally produces one detailed product record, including any redirect Instacart applies.

The bare https://www.instacart.com/store/ route is not a product listing page. Instacart redirects it to login, so it should not be used as an input example. Some retailer paths may also return a 404 or an empty page if the path is no longer public. Use a live public URL copied from Instacart.

How to use the Actor

  1. Open the Actor in Apify Console.
  2. Add one or more public Instacart URLs to startUrls.
  3. Set results_wanted to the maximum number of products for the complete run.
  4. Optionally configure Apify Proxy if your run requires a different network route.
  5. Start the run and review the dataset preview.
  6. Download the data or connect the dataset to your reporting or automation workflow.

The results_wanted value is a run-wide maximum across all supplied URLs, not a separate maximum for every URL. Results are deduplicated across the run, so the final count can be lower when URLs contain overlapping products or fewer products are publicly available.

Input Parameters

ParameterTypeRequiredDefaultDescription
startUrlsArray of URL objectsYesFresh produce category URLOne or more public Instacart URLs. Supported page types are category, keyword search, public store or brand, and product detail pages.
results_wantedIntegerNo20Maximum number of unique products to save across the entire run. Minimum value is 1.
proxyConfigurationObjectNo{ "useApifyProxy": false }Optional Apify Proxy settings for the run.

Usage Examples

Category collection

Collect products from the default fresh produce category. This is a good first test and supports automatic category pagination when a larger result limit is requested.

{
"startUrls": [
{
"url": "https://www.instacart.com/categories/316-food/317-fresh-produce"
}
],
"results_wanted": 20
}

Collect products returned for a public Instacart keyword search. Keep the search URL unchanged rather than adding your own page or offset parameters.

{
"startUrls": [
{
"url": "https://www.instacart.com/store/s?k=lemon"
}
],
"results_wanted": 50
}

Store or brand page

Collect products from a public brand page. This example uses a verified public Instacart page for McCormick taco products.

{
"startUrls": [
{
"url": "https://www.instacart.com/store/brands/mccormick/taco"
}
],
"results_wanted": 25
}

Multiple URL types

Combine category, search, store, and product inputs. The Actor stops after the run-wide unique result limit is reached.

{
"startUrls": [
{
"url": "https://www.instacart.com/categories/316-food/317-fresh-produce"
},
{
"url": "https://www.instacart.com/store/s?k=lemon"
},
{
"url": "https://www.instacart.com/store/brands/mccormick/taco"
},
{
"url": "https://www.instacart.com/products/16614423-english-seedless-cucumber-each"
}
],
"results_wanted": 100
}

Sample Output

A typical rich product record looks like this. Fields that are not published for a particular page are omitted.

{
"product_id": "16614423",
"item_id": "items_53-3094844",
"item_load_id": "019cf06a-77b4-7e44-9565-61821de8d675",
"name": "English Seedless Cucumber",
"brand": "Sun Pacific",
"brand_id": "79047",
"size": "1 each",
"price": 0.99,
"price_string": "$0.99",
"currency_symbol": "$",
"in_stock": true,
"stock_level": "inStock",
"product_url": "https://www.instacart.com/products/16614423-english-seedless-cucumber-each",
"image_url": "https://www.instacart.com/image-server/400x400/d2lnr5mha7bycj.cloudfront.net/product-image/file/primary_5476a6d4-ff42-4d01-a194-86bfba1468b4.jpg",
"store": "Instacart",
"timestamp": "2026-09-03T07:30:00.000Z",
"extraction_method": "structured_product_state"
}

Tips for best results

  • Use live public URLs - Copy the complete URL from Instacart and test it with a small limit before a large run.
  • Choose the right page type - Use category pages for broad coverage, search pages for keyword discovery, public brand pages for focused assortments, and product URLs for detailed single-item records.
  • Start with results_wanted: 20 - Confirm that the URL returns the products and fields you need before increasing the limit.
  • Expect source-dependent fields - Prices, ratings, nutrition, store context, and availability can vary by page, retailer, shopping zone, and product.
  • Avoid overlapping inputs - Duplicate filtering keeps the dataset clean, but overlapping categories and searches can use part of the run-wide result limit on products already seen.
  • Use category URLs for larger coverage - Category pages are the supported URL type for automatic page continuation. Search and store pages are collected from the result set returned by the supplied URL.
  • Review the dataset preview - Check names, price fields, stock status, and URLs before scheduling recurring runs.
  • Use proxy settings when needed - Configure the optional proxy input when your network or collection volume requires it.

Integrations and exports

Apify datasets can be connected to common workflows:

  • Google Sheets - Review product prices and availability in a shared spreadsheet.
  • Airtable - Maintain a searchable product catalog.
  • Make or Zapier - Trigger alerts or downstream processing after a run.
  • Webhooks - Notify an internal service when new data is available.
  • Apify API - Read dataset results from an application or scheduled pipeline.

Available dataset downloads include JSON, CSV, Excel, XML, and other formats supported by Apify.

Frequently Asked Questions

Yes. Add a public search URL such as https://www.instacart.com/store/s?k=lemon to startUrls. The search URL should be kept in the form generated by Instacart.

Can I scrape an Instacart store or brand page?

Yes, when the page is public and contains product listings. A verified example is https://www.instacart.com/store/brands/mccormick/taco. The bare /store/ route redirects to login and does not provide product listings.

Can I scrape one product by URL?

Yes. A public /products/ URL is supported and normally produces one detailed record. Instacart may redirect the URL, but the Actor preserves the resulting product data and direct product link when available.

Does results_wanted apply to each URL?

No. results_wanted is the maximum number of unique products saved across the complete run. Products repeated across multiple URLs are counted once.

Why is a price or rating missing?

The source page may not publish that field for the selected product, retailer, shopping zone, or page type. Search, store, and product pages generally provide more commercial context than category pages, but no field is guaranteed for every listing.

Does the Actor paginate search pages?

Category pages support automatic continuation for larger result requests. Search URLs are not modified with synthetic page or offset parameters, because Instacart can ignore those parameters and return overlapping results. Store and product URLs are likewise collected from their public result content.

Can I schedule recurring price checks?

Yes. Create an Apify schedule and save each run to a dataset or downstream integration. For useful comparisons, keep the URL and input settings consistent between runs.

Can I export the results?

Yes. Apify datasets can be downloaded as JSON, CSV, Excel, XML, and other supported formats, or read through the Apify API.

You are responsible for complying with Instacart's terms, applicable laws, privacy requirements, and any restrictions on using or redistributing collected data. Collect only public information for legitimate purposes and use the data responsibly.

Explore other product data Actors from the same profile:

  • Walmart Product Scraper - Collect Walmart product listings, prices, ratings, availability, seller information, and product details.
  • Target Product Scraper - Collect Target product listings, prices, ratings, inventory signals, images, and product URLs.

Support

For a problem with a supported public URL, include the URL type, a small input example, the run ID, and the affected output fields when opening an issue on the Actor page. This makes it easier to distinguish a changed Instacart page from a temporary source or network issue.

This Actor is intended for responsible collection of publicly available Instacart product information. Users must follow Instacart's terms of use, applicable laws, privacy rules, and data-use restrictions. This Actor is not affiliated with or endorsed by Instacart.