Instacart Grocery Price Index
Pricing
from $1.49 / 1,000 results
Instacart Grocery Price Index
Track real-time grocery price trends across Instacart. Monitor food costs, analyze pricing patterns, and gain insights into market fluctuations. Perfect for price analysis and competitive research.
Pricing
from $1.49 / 1,000 results
Rating
5.0
(1)
Developer
Shahid Irfan
Actor stats
0
Bookmarked
17
Total users
4
Monthly active users
18 days ago
Last modified
Categories
Share
Instacart Grocery Price Scraper
Collect Instacart product data for grocery price tracking, catalog analysis, and market monitoring. This actor helps you scrape product listings in a structured format, with clean records ready for dashboards, spreadsheets, and automation workflows.
Features
- Category URL scraping — Collect products from one or multiple Instacart category pages.
- Keyword search URL support — Extract rich item data from search URLs like
/store/s?k=lemon. - Store URL support — Richest item-level output is typically available on store/search routes.
- Clean dataset output — Save normalized rows with duplicate filtering enabled by default.
- Flexible collection size — Control how many products to process per run (pagination is automatic).
- Reliable long runs — Use optional proxy configuration for stronger run stability.
- Analysis-ready fields — Export key product identifiers, names, pricing, links, and stock status.
Use Cases
Grocery Price Monitoring
Track product-level prices over time to identify trends, sudden increases, and category-level shifts.
Competitive Benchmarking
Compare product assortment and pricing signals across categories to support commercial analysis.
Category Intelligence
Build focused datasets for fresh produce or other sections to understand assortment depth and availability.
BI and Reporting Pipelines
Feed structured output into BI tools, spreadsheets, or internal ETL jobs for recurring reporting.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | Array | Yes | Fresh produce category | One or more Instacart URLs to scrape (category/search/store). Search/store URLs usually return richer commercial fields than category URLs. |
results_wanted | Integer | No | 20 | Maximum number of products to save. |
proxyConfiguration | Object | No | Apify Proxy disabled | Proxy settings for run reliability. |
Output Data
Each dataset item may contain the following fields:
| Field | Type | Description |
|---|---|---|
product_id | String | Product identifier when available. |
name | String | Product name. |
brand | String | Brand name when available. |
brand_id | String | Brand identifier when available. |
price | Number | Current price when available. |
price_string | String | Raw price string from listing cards. |
original_price | Number | Previous price when available. |
size | String | Product size/packaging text. |
image_url | String | Product image URL. |
product_url | String | Product detail URL. |
in_stock | Boolean | Availability flag. |
stock_level | String | Availability level (for example inStock). |
item_id | String | Item-level ID from search payloads. |
item_load_id | String | Item load identifier for the listing session. |
retailer_id | String | Retailer identifier in multi-retailer search. |
shop_id | String | Shop identifier in multi-retailer search. |
search_term | String | Search term attached to search payload results. |
search_id | String | Search session identifier. |
store | String | Store/source label. |
category | String | Product category label when available. |
timestamp | String | Extraction timestamp (ISO format). |
extraction_method | String | Output provenance label. |
Usage Examples
Basic Run
{"startUrls": [{ "url": "https://www.instacart.com/categories/316-food/317-fresh-produce" }]}
Larger Collection
{"startUrls": [{ "url": "https://www.instacart.com/store/s?k=lemon" }],"results_wanted": 100}
Multi-URL Collection
{"startUrls": [{ "url": "https://www.instacart.com/categories/316-food/317-fresh-produce" },{ "url": "https://www.instacart.com/categories/316-food/320-bakery" }],"results_wanted": 120}
Sample Output
{"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","stock_level": "inStock","image_url": "https://www.instacart.com/image-server/400x400/d2lnr5mha7bycj.cloudfront.net/product-image/file/primary_5476a6d4-ff42-4d01-a194-86bfba1468b4.jpg","product_url": "https://www.instacart.com/products/16614423-english-seedless-cucumber-each","in_stock": true,"retailer_id": "1","shop_id": "9501","search_term": "lemon","search_id": "e706268e-f8bd-4fe7-aecd-ec0380e0c320","store": "Instacart","category": "Fresh Produce","timestamp": "2026-03-15T06:43:34.647Z","extraction_method": "structured_search_state"}
Tips for Best Results
Use Working Category URLs
- Use live Instacart category links from a supported store route.
- Validate URLs manually before large runs.
Choose URL Type By Data Richness
- Category URLs are best for broad catalog coverage and category metadata.
- Search/store URLs usually include richer item-level fields like price context, stock detail, retailer/shop context, and merchandising attributes.
Start Small Then Scale
- Start with
results_wanted: 20for quick validation. - Increase gradually for larger production jobs.
Built-In Data Cleanup
- Duplicate filtering is enabled internally for clean product datasets.
- Empty and null-like values are removed before records are saved.
Progressive Batch Output
- Data is pushed to dataset continuously in batches during crawling.
- If a run is stopped early, already-collected batches remain available in Output.
Built-In Request Pacing
- Request pacing is handled internally for stable page processing.
- Use proxy configuration when additional reliability is needed.
Automatic Pagination
- Pagination is auto-calculated from
results_wantedand live page yield. - Crawling stops early if subsequent pages stop producing new unique products.
Integrations
Connect scraped data with:
- Google Sheets — Build live tracking sheets.
- Airtable — Maintain searchable product databases.
- Make — Automate post-processing and alerts.
- Zapier — Trigger actions after each successful run.
- Webhooks — Push data into internal systems.
Export Formats
- JSON — API and development workflows.
- CSV — Spreadsheet analysis.
- Excel — Business reporting.
Frequently Asked Questions
What happens if no input is provided?
The actor expects startUrls. Local testing uses INPUT.json defaults.
How many products can I collect?
Set results_wanted to your target. Collection size depends on available products and automatic pagination.
Can I scrape multiple categories in one run?
Yes. Provide multiple entries in startUrls.
Why are some fields missing on certain rows?
Some products do not expose every attribute on every listing. Category URLs are usually less rich than search/store URLs, so use search/store when you need maximum field coverage.
How do I reduce duplicates?
The actor applies internal duplicate filtering automatically.
Can I schedule this actor?
Yes. You can run it on schedules and route output into downstream automations.
Support
For issues or feature requests, use Apify Console support channels.
Resources
Legal Notice
Use this actor responsibly and in compliance with website terms and applicable laws. Respect rate limits and data usage policies.