Instacart Product Intelligence — Price & Stock Tracker avatar

Instacart Product Intelligence — Price & Stock Tracker

Under maintenance

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Instacart Product Intelligence — Price & Stock Tracker

Instacart Product Intelligence — Price & Stock Tracker

Under maintenance

Scrape real-time product prices, stock levels, promotions, and ratings from Instacart across any US ZIP code. Reveals geographic price discrimination. Normalized output for analytics pipelines and price monitoring.

Pricing

from $5.00 / 1,000 results

Rating

5.0

(1)

Developer

Shubham Nayak

Shubham Nayak

Maintained by Community

Actor stats

2

Bookmarked

2

Total users

0

Monthly active users

2 days ago

Last modified

Share

Instacart Scraper — Real-Time Price, Stock & Promotions by ZIP Code

Extract real-time product prices, stock levels, promotions, nutrition facts, and ratings from Instacart across any US ZIP code. The only Instacart scraper that sets the delivery address inside the browser session — so prices reflect what a real customer at that location would see, not a default warehouse price.


What This Instacart Scraper Does

Three collection modes, one actor:

ModeUse Case
searchKeyword search results across one or more ZIP codes
categoryBulk-harvest an entire store aisle (produce, dairy, beverages…)
product-detailsMonitor a fixed list of product URLs for price/stock changes

Every run sets the Instacart delivery address inside the browser session before collecting data — so prices reflect what a real customer at that ZIP code would see, not a default warehouse price.


Key Features

  • ZIP-accurate pricing — Sets the delivery address UI per session; reveals geographic price discrimination across markets.
  • Multi-ZIP in one run — Pass multiple ZIP codes; each runs as an independent browser session with its own location context.
  • Retailer slug URL supportproduct-details mode accepts both plain product URLs and ?retailerSlug= URLs, automatically rendering the retailer-specific product page.
  • Full detail extraction — Nutrition facts (structured), ingredients, directions, price variants (all sizes), and up to 10 product images per product.
  • Session-pool deduplication — Up to 50 browser sessions; each session's ZIP setting is cached in Key-Value Store to avoid redundant location UI interactions.
  • Infinite-scroll support — Follows Instacart's lazy-load pagination with configurable maxItems cap and stale-page detection.
  • Production stealth — Randomised viewport, suppressed navigator.webdriver, human-like delays (800–2 300 ms), and smart resource blocking (fonts, analytics, third-party pixels blocked; CDN images allowed).
  • Pay-per-result billing — Charged only for products actually pushed to the dataset.

Use Cases

WhoHow They Use It
CPG & FMCG brandsMonitor competitor pricing across Safeway, Kroger, Publix by ZIP — detect regional promotions before they reach national reports
Price intelligence platformsFeed daily Instacart snapshots into dashboards alongside Amazon Fresh and Walmart data
Retail analystsTrack stock availability and promotion frequency across store chains in different metro areas
E-commerce researchersExtract full nutrition and ingredient data for product database enrichment
Algorithmic pricing teamsSet up hourly product-details runs on SKU watchlists; trigger repricing workflows via Apify webhooks

Input

{
"zipCodes": ["10001", "94105"],
"mode": "search",
"queries": ["organic milk", "sourdough bread"],
"store": "safeway",
"maxItems": 100,
"maxConcurrency": 2,
"headless": true
}
FieldTypeRequiredDefaultDescription
zipCodesstring[]YesOne or more US ZIP codes. Each ZIP runs as an independent browser session.
modestringNo"search""search", "category", or "product-details".
queriesstring[]No[]Search keywords (mode=search) or category slugs (mode=category).
startUrlsobject[]No[][{"url":"https://..."}] — product URLs for mode=product-details. Supports ?retailerSlug= params.
storestringNo"fairway"Instacart store slug, e.g. "safeway", "publix", "kroger".
maxItemsintegerNo0Max products per ZIP + query. 0 = unlimited.
maxConcurrencyintegerNo2Parallel browser sessions. Keep ≤ 4 without proxies.
enrichmentConcurrencyintegerNo3Detail-page tabs opened simultaneously per listing (not separate browsers).
maxRequestRetriesintegerNo3Retry attempts per URL before marking failed.
headlessbooleanNotrueSet false to watch the browser during local testing.
proxyConfigurationobjectNoApify proxy config. Residential proxies recommended for multi-ZIP runs.

Mode Examples

Search — price-track across markets

{
"zipCodes": ["10001", "30301", "77001"],
"mode": "search",
"queries": ["oat milk", "Greek yogurt"],
"store": "publix",
"maxItems": 50
}

Category — bulk aisle harvest

{
"zipCodes": ["10001"],
"mode": "category",
"queries": ["produce", "dairy-eggs", "beverages"],
"store": "safeway"
}

Product details — daily price monitor

{
"zipCodes": ["94105"],
"mode": "product-details",
"store": "safeway",
"startUrls": [
{ "url": "https://www.instacart.com/products/42309-pepsi-cola-12-fl-oz" },
{ "url": "https://www.instacart.com/products/2823570-red-bull-energy-drink-8-4-fl-oz?retailerSlug=safeway" }
]
}

Output

Each product is pushed as a flat JSON object to the Apify Dataset.

{
"product_id": "16914182",
"source": "instacart",
"scrape_mode": "search",
"store": "safeway",
"landing_param": "16914182-s-pellegrino-sparkling-natural-mineral-water-33-8-oza",
"name": "san pellegrino sparkling natural mineral water",
"brand_name": "san pellegrino",
"current_price": 2.88,
"original_price": 3.45,
"price_per_unit": "$0.09/fl oz",
"stock_status": "inStock",
"promotion_flag": true,
"promotion_label": "17% off",
"size": "1 L",
"image_url": "https://www.instacart.com/assets/domains/product-image/file/large_b5a770a4-bd8c-4e45-af58-7c0617822d9f.jpg",
"product_images": [
"https://www.instacart.com/assets/domains/product-image/file/large_b5a770a4-bd8c-4e45-af58-7c0617822d9f.jpg",
"https://www.instacart.com/assets/domains/product-image/file/large_08273d14-d24a-404d-910b-61e0a0e99afc.jpg",
"https://www.instacart.com/assets/domains/product-image/file/large_d99e54a0-b595-4a6d-b0e3-81d65e54989e.jpg",
"https://www.instacart.com/assets/domains/product-image/file/large_89edcfb1-ec71-4361-bf69-f4608b68664b.jpg",
"https://www.instacart.com/assets/domains/product-image/file/large_4c4ffc37-8ce4-4b72-b34c-130fe6bbd90a.jpg",
"https://www.instacart.com/assets/domains/product-image/file/large_fec8bb65-0d28-4b61-ae6f-783a7f6439c7.jpg"
],
"product_url": "https://www.instacart.com/products/16914182-s-pellegrino-sparkling-natural-mineral-water-33-8-oza?retailerSlug=safeway",
"added_tags": "Low sodium, Zero calories",
"geo_zip": "94105",
"scrape_timestamp": "2026-03-17T10:23:21.108Z",
"description": null,
"details": "Embrace the spirit of Italian living with S.Pellegrino Sparkling Natural Mineral Water. While moving through the San Pellegrino Terme area at the foothills of the Italian Alps, this water mineralizes through contact with underground rocks, naturally enriching S.Pellegrino with mineral salts, calcium and magnesium. The addition of carbon dioxide to the Italian mineral water enhances S.Pellegrino, providing its unmistakable taste and gentle bubbles. S.Pellegrino sparkling water is low in sodium and contains zero calories with no artificial colors, flavors or sweeteners. Elevate your next homemade meal with this Italian sparkling mineral water, enjoy while you’re out on the town, or indulge during any of life’s delicious moments. Unflavored sparkling water perfectly complements the flavors of your favorite foods, making it a favorite of chefs and foodies alike. Enhance your moments with S.Pellegrino Sparkling Natural Mineral Water.\n• One 33.8 fl oz (1 L) plastic bottle of S.Pellegrino Sparkling Natural Mineral Water\n• This bottled sparkling water offers unmistakable taste and gentle bubbles\n• S.Pellegrino sparkling mineral water is low in sodium and contains zero calories with no artificial colors, flavors or sweeteners\n• Perfect for any of life’s delicious moments, this unflavored sparkling water complements the flavors of your favorite foods and is perfect for a night out on the town\n• This 1 liter sparkling water plastic bottle is ideal for use on the go",
"ingredients": "CARBONATED MINERAL WATER.",
"directions": "Keep In A Clean, Cool ,Dry And Odorless Place, Away From Direct Sunlight.",
"warnings": null,
"nutrition": {
"calories": 0,
"total_fat": null,
"saturated_fat": 0,
"trans_fat": 0,
"monounsaturated_fat": 0,
"polyunsaturated_fat": 0,
"cholesterol": null,
"sodium": null,
"carbohydrate": null,
"fiber": 0,
"sugars": 0,
"protein": null,
"serving_size": "12.00",
"servings_per_container": "About 3"
},
"price_variants": [
{
"size": "1 L",
"price": 2.88,
"original_price": 3.45,
"unit_price": "$0.09/fl oz",
"url": "/products/16914182?retailerSlug=safeway"
},
{
"size": "6 x 16.9 fl oz",
"price": 9.99,
"original_price": 10.99,
"unit_price": "$0.10/fl oz",
"url": "/products/17020436?retailerSlug=safeway"
},
{
"size": "12 x 25.3 fl oz",
"price": 29.19,
"original_price": 30.29,
"unit_price": "$0.10/fl oz",
"url": "/products/16523315?retailerSlug=safeway"
},
{
"size": "25.3 fl oz",
"price": 2.88,
"original_price": 3.45,
"unit_price": "$0.11/fl oz",
"url": "/products/17074096?retailerSlug=safeway"
}
]
}

Field Reference

FieldTypeNotes
product_idstringInstacart numeric product ID
sourcestringAlways "instacart"
scrape_modestring"search", "category", or "product-details"
storestringStore slug from your input
input_urlstring|nullOriginal URL from startUrls (product-details mode only)
landing_paramstringFull URL slug
namestringProduct name (lowercase)
current_pricenumber|nullCurrent or sale price
original_pricenumber|nullPre-sale price (only present when on promotion)
price_per_unitstring|nullUnit price label as shown on site
stock_statusstringinStock, outOfStock, lowStock, highlyInStock
promotion_flagbooleantrue when original_price > current_price
promotion_labelstring|nullDeal badge text, e.g. "25% off"
category_treeobject|nullNested breadcrumb hierarchy
sizestring|nullPackage size
image_urlstring|nullPrimary product image (CDN URL)
product_imagesstring[]All carousel images (up to 10)
product_urlstringFull product URL
added_tagsstring|nullAttribute badges, comma-separated
ratingnumber|nullStar rating 0–5
reviews_countinteger|nullTotal review count
geo_zipstringZIP code used for price lookup
scrape_timestampISO8601UTC time the product was collected
detailsstring|nullFull "Details" section text
ingredientsstring|nullIngredients list
directionsstring|nullUsage or preparation directions
warningsstring|nullAllergen and warning text
nutritionobject|nullStructured nutrition facts
price_variantsarray|nullAll size/price options for this product

Mode-Specific Field Omissions

Fieldsearchcategoryproduct-details
brand_namepresentpresentomitted
input_urlomittedomittedpresent
rating, reviews_countomittedpresentpresent
category_treeomittedpresentpresent
details / ingredients / nutrition / price_variantsomittedomittedpresent

Pricing

Pay-per-result: $0.005 per product pushed to the dataset.

Run sizeApprox. cost
1 ZIP × 5 queries (~250 products)~$0.13
3 ZIPs × 10 queries (~2,500 products)~$1.25
10 ZIPs × 1 full category (~5,000 products)~$2.50
20 categories × 5 ZIPs (~50,000 products)~$25.00

Compute costs (memory, runtime) are billed separately by Apify at standard rates. Use maxItems to cap dataset size during testing.


Scaling Guide

Small runs (testing, spot-checks)

{ "maxConcurrency": 1, "headless": false, "maxItems": 20 }

No proxy needed. Good for verifying output schema or a new store slug.

Medium runs (daily price tracking, 1–5 ZIPs)

{ "maxConcurrency": 3, "headless": true }

Apify's shared proxy is usually sufficient. Add residential proxies if you see challenge pages.

Large runs (10+ ZIPs, full category sweeps)

{
"maxConcurrency": 5,
"headless": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

High-frequency monitoring (hourly / near-real-time)

Use multiple actor runs scoped to subsets of ZIP codes, combined with Apify Scheduler. Keep maxItems tight (20–50) to control cost and runtime.


Supported Stores

Any Instacart store can be targeted using its URL slug. Common examples:

SlugStore
safewaySafeway
publixPublix
krogerKroger
aldiALDI
costcoCostco
whole-foodsWhole Foods Market
sproutsSprouts
fairwayFairway Market
albertsonsAlbertsons
vonsVons

Find the slug in any Instacart store URL: https://www.instacart.com/store/**{slug}**/collections/produce


Challenge Handling

When Instacart serves a bot-detection challenge, the actor:

  1. Detects the challenge via page title and body text patterns.
  2. Retires the current browser session from the pool.
  3. Retries the request automatically (up to maxRequestRetries) with a fresh session.

If all retries fail, the URL is logged as a failed request and the run continues without losing other data.


Frequently Asked Questions

Does this work for all Instacart stores? Yes — any store available on Instacart can be targeted using its URL slug (e.g. safeway, kroger, whole-foods). Availability varies by ZIP code.

How accurate is the pricing data? Very accurate. The actor sets the Instacart delivery address inside the browser session before scraping, so it captures the exact price a real customer at that ZIP code would see — including ZIP-specific promotions and store-level pricing.

Can I scrape multiple ZIP codes in one run? Yes. Pass an array of ZIP codes in zipCodes. Each ZIP gets its own isolated browser session with its own location context.

Does it handle pagination and infinite scroll? Yes. The actor follows Instacart's lazy-load pagination and stops when maxItems is reached or no new products appear.

What if a product is out of stock? The actor still collects the product with stock_status: "outOfStock". Stock status is one of: inStock, outOfStock, lowStock, highlyInStock.

Can I use this for price monitoring on a schedule? Yes. Use Apify Scheduler to run the actor on a cron schedule. Combine with webhooks to push data to your pipeline on each run completion.

Do I need proxies? Not required for small runs. For 10+ ZIPs or high-frequency runs, residential proxies (via proxyConfiguration) reduce challenge page frequency.


Limitations

  • Instacart requires a valid US ZIP code for price accuracy. Non-US ZIPs are not supported.
  • Category slugs must match Instacart's internal collection names. Find the correct slug in an Instacart category page URL.
  • Products behind a login wall (Buy Again, personal lists) are not accessible.
  • The actor does not support checkout, cart, or any write operations.

Support & Feedback

Open an issue on GitHub or contact the actor author through the Apify Store.