Instacart Grocery Price Index
Pricing
from $0.99 / 1,000 results
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
Maintained by CommunityActor stats
3
Bookmarked
44
Total users
5
Monthly active users
a day ago
Last modified
Categories
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.
| Field | Type | Description |
|---|---|---|
product_id | String | Instacart product identifier. |
item_id | String | Item-level identifier for a store or retailer listing. |
item_load_id | String | Listing load identifier when available. |
name | String | Product name. |
brand | String | Brand name when available. |
brand_id | String | Brand identifier when available. |
size | String | Pack size, unit size, or packaging text. |
price | Number | Parsed current price when available. |
price_string | String | Display price text from the listing. |
full_price_string | String | Full displayed price text, including additional pricing context when available. |
pricing_unit_string | String | Unit pricing text such as price per ounce or each. |
currency_symbol | String | Currency symbol shown with the price. |
in_stock | Boolean | Whether the item is marked available. |
stock_level | String | Availability level such as inStock. |
stock_level_label | String | Human-readable availability label when available. |
is_upcoming_product | Boolean | Whether Instacart marks the item as upcoming. |
retailer_id | String | Retailer identifier in a multi-retailer result. |
retailer_location_id | String | Retailer location identifier when available. |
shop_id | String | Instacart shop identifier. |
zone_id | String | Delivery or shopping zone identifier when available. |
postal_code | String | Postal code associated with the page context when available. |
search_term | String | Search term associated with a keyword result. |
search_id | String | Search session identifier when available. |
category | String | Product category label. |
category_id | String | Category identifier. |
category_url | String | Category page URL when available. |
category_total_count | Number | Product count reported by a category page when available. |
product_url | String | Direct product or item URL. |
product_canonical_url | String | Canonical product URL when supplied by Instacart. |
image_url | String | Product image URL. |
product_rating | Number | Product rating when available. |
product_rating_count | Number | Number of ratings when available. |
dietary_tags | Array | Dietary attributes available for the item. |
on_sale | Boolean | Sale indicator when available. |
buy_one_get_one | Boolean | Buy-one-get-one indicator when available. |
store | String | Source label, normally Instacart. |
timestamp | String | ISO timestamp for the saved record. |
extraction_method | String | Provenance 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
- Open the Actor in Apify Console.
- Add one or more public Instacart URLs to
startUrls. - Set
results_wantedto the maximum number of products for the complete run. - Optionally configure Apify Proxy if your run requires a different network route.
- Start the run and review the dataset preview.
- 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
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | Array of URL objects | Yes | Fresh produce category URL | One or more public Instacart URLs. Supported page types are category, keyword search, public store or brand, and product detail pages. |
results_wanted | Integer | No | 20 | Maximum number of unique products to save across the entire run. Minimum value is 1. |
proxyConfiguration | Object | No | { "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}
Keyword search
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
Can I scrape an Instacart keyword search?
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.
Is it legal to collect Instacart data?
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.
Related Actors
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.
Legal Notice
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.