Instacart Grocery Price Index
Pricing
Pay per usage
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
Pay per usage
Rating
0.0
(0)
Developer

Shahid Irfan
Actor stats
0
Bookmarked
15
Total users
2
Monthly active users
2 hours 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. - Clean dataset output — Save normalized rows with duplicate filtering enabled by default.
- Flexible collection size — Control how many products and pages to process per run.
- 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 category URLs to scrape. |
results_wanted | Integer | No | 20 | Maximum number of products to save. |
max_pages | Integer | No | 5 | Maximum pagination pages to visit per URL. |
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,"max_pages": 10}
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,"max_pages": 8}
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": "apollo_search_graphql"}
Tips for Best Results
Use Working Category URLs
- Use live Instacart category links from a supported store route.
- Validate URLs manually before large runs.
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.
Built-In Request Pacing
- Request pacing is handled internally for stable page processing.
- Use proxy configuration when additional reliability is needed.
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 page limits.
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.
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.