Instacart Grocery Price Index avatar

Instacart Grocery Price Index

Pricing

from $1.49 / 1,000 results

Go to Apify Store
Instacart Grocery Price Index

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

Shahid Irfan

Maintained by Community

Actor stats

0

Bookmarked

17

Total users

4

Monthly active users

18 days ago

Last modified

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

ParameterTypeRequiredDefaultDescription
startUrlsArrayYesFresh produce categoryOne or more Instacart URLs to scrape (category/search/store). Search/store URLs usually return richer commercial fields than category URLs.
results_wantedIntegerNo20Maximum number of products to save.
proxyConfigurationObjectNoApify Proxy disabledProxy settings for run reliability.

Output Data

Each dataset item may contain the following fields:

FieldTypeDescription
product_idStringProduct identifier when available.
nameStringProduct name.
brandStringBrand name when available.
brand_idStringBrand identifier when available.
priceNumberCurrent price when available.
price_stringStringRaw price string from listing cards.
original_priceNumberPrevious price when available.
sizeStringProduct size/packaging text.
image_urlStringProduct image URL.
product_urlStringProduct detail URL.
in_stockBooleanAvailability flag.
stock_levelStringAvailability level (for example inStock).
item_idStringItem-level ID from search payloads.
item_load_idStringItem load identifier for the listing session.
retailer_idStringRetailer identifier in multi-retailer search.
shop_idStringShop identifier in multi-retailer search.
search_termStringSearch term attached to search payload results.
search_idStringSearch session identifier.
storeStringStore/source label.
categoryStringProduct category label when available.
timestampStringExtraction timestamp (ISO format).
extraction_methodStringOutput 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: 20 for 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_wanted and 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


Use this actor responsibly and in compliance with website terms and applicable laws. Respect rate limits and data usage policies.