# Instacart Product Scraper (`igview-owner/instacart-product-details-scraper`) Actor

Scrape Instacart product details and category listings in seconds. Get real-time prices, high-res images, full nutrition facts, ingredients, and brand info. Optimized for speed and bulk URLs. Perfect for price tracking & market research!

- **URL**: https://apify.com/igview-owner/instacart-product-details-scraper.md
- **Developed by:** [Sachin Kumar Yadav](https://apify.com/igview-owner) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 18 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## 🛒 Instacart Product Scraper – Product Details & Category Listings

**🚀 Scrape Instacart product details by product URL or browse category listings. Get product name, brand, price, images, nutrition info, ingredients, directions, and more. Built with Apify best practices for reliability and speed.**

### 📋 Table of Contents

- [✨ Features](#-features)
- [🎯 Use Cases](#-use-cases)
- [⚡ Quick Start](#-quick-start)
- [📊 Input Parameters](#-input-parameters)
- [📤 Output Format](#-output-format)
- [❓ FAQ](#-faq)
- [🛠️ Troubleshooting](#️-troubleshooting)
- [🏷️ Tags](#️-tags)

***

### ✨ Features

- **Two Scraping Modes** – Product details or category/search listing in one actor
- **Rich Product Data** – Name, brand, price, size, images, nutrition, ingredients, directions, warnings
- **Category Listings** – Browse any Instacart category or search page and get all product listings
- **Clean Output** – Nested Instacart API responses parsed into clean, flat JSON
- **Bulk URL Support** – Process up to 100 URLs in a single run
- **Resilient** – Retries, rate-limit handling, and clear error messages

***

### 🎯 Use Cases

| Use Case | Description | Key Benefits |
|----------|-------------|--------------|
| 📦 Product Analytics | Track price, brand, and product details over time | Competitive monitoring, pricing strategy |
| 🥗 Nutrition Research | Extract nutrition facts, ingredients, and directions | Health apps, dietary analysis |
| 🛍️ Catalog Enrichment | Enrich grocery catalogs with accurate Instacart data | Better SEO, consistent attributes |
| 🔎 Market Research | Discover products across Instacart categories | Identify trends, compare brands |
| 🤖 Data Pipelines | Feed structured grocery product data to your systems | Automation, dashboards, ML models |

***

### ⚡ Quick Start

#### 1️⃣ Product Details – Single Product URL

```json
{
  "scrapeType": "product_details",
  "urls": [
    "https://www.instacart.com/products/35355-banquet-chicken-pot-pie-7-oz"
  ]
}
```

#### 2️⃣ Category Listing – Browse Category/Search Page

```json
{
  "scrapeType": "category_listing",
  "urls": [
    "https://www.instacart.com/categories/1447-pet-care?page=2"
  ]
}
```

#### 3️⃣ Bulk – Multiple Product URLs

```json
{
  "scrapeType": "product_details",
  "urls": [
    "https://www.instacart.com/products/35355-banquet-chicken-pot-pie-7-oz",
    "https://www.instacart.com/products/94262-cesar-filets-in-gravy-wet-dog-food-variety-pack-3-52-oz"
  ]
}
```

***

### 📊 Input Parameters

| Parameter | Type | Required | Description | Default | Example |
|-----------|------|----------|-------------|---------|---------|
| `scrapeType` | String | ✅ Yes | Scrape mode: `product_details` or `category_listing` | `product_details` | `product_details` |
| `urls` | Array\<String> | ✅ Yes | Instacart product or category URLs | - | `["https://www.instacart.com/products/35355-..."]` |

#### 🔗 Supported URL Formats

- ✅ Product URL: `https://www.instacart.com/products/35355-banquet-chicken-pot-pie-7-oz`
- ✅ Category URL: `https://www.instacart.com/categories/1447-pet-care`
- ✅ Category with Page: `https://www.instacart.com/categories/1447-pet-care?page=2`

***

### 📤 Output Format

#### 📦 Product Details Output

```json
{
  "source": "instacart",
  "scrape_type": "product_details",
  "input_url": "https://www.instacart.com/products/35355-banquet-chicken-pot-pie-7-oz",
  "name": "Banquet Chicken Pot Pie, Frozen Meal",
  "brand_name": "Banquet",
  "size": "7 oz",
  "landing_param": "35355-banquet-chicken-pot-pie-7-oz",
  "product_image": "https://d2lnr5mha7bycj.cloudfront.net/product-image/file/large_8b7b0572-c650-4e66-8a7b-701257e815db.jpg",
  "product_images": ["https://...600x600...image1.jpg/", "https://...600x600...image2.jpg/"],
  "price": "$1.00",
  "full_price": null,
  "on_sale": {"loyalty": false},
  "searchable": true,
  "unit_count": "1",
  "description": "One 7 oz. Banquet Chicken Pot Pie Frozen Meal...",
  "details": "Enjoy a quality comfort food meal...",
  "ingredients": "FILLING: WATER, COOKED CHICKEN ROLL...",
  "directions": "Microwave Oven: Cook only one at a time...",
  "warnings": "Contains: milk, soy, wheat.",
  "seo_description": null,
  "meta_title": "Banquet Chicken Pot Pie, Frozen Meal (7 oz) Delivery or Pickup Near Me - Instacart",
  "meta_description": "Get Banquet Chicken Pot Pie, Frozen Meal delivered to you...",
  "nutrition": {
    "calories": 350,
    "total_fat": 18,
    "saturated_fat": 9,
    "trans_fat": 0,
    "monounsaturated_fat": 8,
    "polyunsaturated_fat": 3,
    "cholesterol": 40,
    "sodium": 930,
    "carbohydrate": 35,
    "fiber": 1,
    "sugars": 3,
    "protein": 11,
    "serving_size": "198.00",
    "servings_per_container": "1"
  },
  "product_category_id": "4188",
  "product_category": "Frozen Pot Pies",
  "product_url": "https://www.instacart.com/products/35355-banquet-chicken-pot-pie-7-oz",
  "scraped_at": "2025-11-16T10:30:00.000Z"
}
```

#### 📂 Category Listing Output

```json
{
  "source": "instacart",
  "scrape_type": "category_listing",
  "input_url": "https://www.instacart.com/categories/1447-pet-care?page=2",
  "product_id": "17399193",
  "name": "Good 'n' Fun Kabobs, Triple Flavor, 18 Pack",
  "size": "12 oz",
  "landing_param": "17399193-good-n-fun-kabobs-triple-flavor-18-pack-18-ea",
  "product_image": "https://www.instacart.com/image-server/600x600/d2lnr5mha7bycj.cloudfront.net/product-image/file/primary_2713ac48-e223-4c1e-bdbb-9ea94a121be7.png",
  "product_url": "https://www.instacart.com/products/17399193-good-n-fun-kabobs-triple-flavor-18-pack-18-ea",
  "scraped_at": "2025-11-16T10:30:00.000Z"
}
```

#### 📋 Product Details – Output Fields

| Field | Type | Description |
|-------|------|-------------|
| `source` | String | Always `instacart` |
| `scrape_type` | String | `product_details` or `category_listing` |
| `input_url` | String | Original URL provided |
| `name` | String | Product name |
| `brand_name` | String | Brand name |
| `size` | String | Product size/weight |
| `landing_param` | String | Instacart product slug |
| `product_image` | String | Main product image URL |
| `product_images` | Array\<String> | All product image URLs |
| `price` | String | Current price |
| `full_price` | String | Original price (if on sale) |
| `on_sale` | Object | Sale indicator |
| `searchable` | Boolean | Whether product is searchable |
| `unit_count` | String | Number of units |
| `description` | String | Short product description |
| `details` | String | Detailed product description |
| `ingredients` | String | Full ingredients list |
| `directions` | String | Cooking/usage directions |
| `warnings` | String | Allergen/safety warnings |
| `meta_title` | String | SEO meta title |
| `meta_description` | String | SEO meta description |
| `nutrition` | Object | Full nutrition facts (calories, fat, protein, etc.) |
| `product_category_id` | String | Category ID |
| `product_category` | String | Category name |
| `product_url` | String | Full product URL |
| `scraped_at` | String | ISO timestamp of fetch |

#### 📋 Category Listing – Output Fields

| Field | Type | Description |
|-------|------|-------------|
| `source` | String | Always `instacart` |
| `scrape_type` | String | Always `category_listing` |
| `input_url` | String | Original category URL provided |
| `product_id` | String | Instacart product ID |
| `name` | String | Product name |
| `size` | String | Product size/weight |
| `landing_param` | String | Instacart product slug |
| `product_image` | String | Product image URL |
| `product_url` | String | Full product URL |
| `scraped_at` | String | ISO timestamp of fetch |

***

### ❓ FAQ

- **Q: What input do I need?**
  - A scrape type (`product_details` or `category_listing`) and one or more Instacart URLs.

- **Q: What's the difference between the two modes?**
  - **Product Details** gives you full info for a single product (nutrition, ingredients, images, etc.). **Category Listing** gives you a list of all products on a category or search page.

- **Q: Can I scrape multiple pages of a category?**
  - Yes! Add multiple URLs with different `?page=` parameters (e.g., `?page=1`, `?page=2`, `?page=3`).

- **Q: What if a product or page is not found?**
  - The run will include a clear error entry for that URL. Other URLs continue processing.

- **Q: How many URLs can I process in one run?**
  - Up to 100 URLs per run.

- **Q: What nutrition data is included?**
  - Calories, total fat, saturated fat, trans fat, cholesterol, sodium, carbohydrates, fiber, sugars, protein, serving size, and servings per container.

***

### 🛠️ Troubleshooting

| Issue | Cause | Solution |
|-------|-------|----------|
| ❌ "No URLs provided" | Empty `urls` array | Add at least one Instacart URL |
| ❌ "No data returned" | Invalid or expired URL | Verify the Instacart URL is correct and active |
| ⚠️ "Page not found" | Wrong URL format | Use full Instacart product or category URLs |
| ⏱️ Slow runs | Network/rate limits | Try fewer URLs or schedule runs |
| ❌ "Rate limit exceeded" | Too many requests | Wait and try again, or contact developer |

***

### 🏷️ Tags

`instacart scraper`, `instacart product scraper`, `instacart product details`, `instacart category scraper`, `instacart price scraper`, `instacart nutrition data`, `instacart ingredients`, `grocery product scraper`, `grocery data extractor`, `instacart product images`, `instacart product information`, `instacart dataset`, `apify actor`, `instacart market research`, `instacart catalog enrichment`, `instacart price tracking`, `grocery analytics`, `food product data`, `instacart api`, `instacart product research`

***

### 🚀 Get Started Now

**Ready to scrape Instacart product details?**

1. 🔄 Select the **scrape type** (`Product Details` or `Category Listing`)
2. 🔗 Enter one or more **Instacart URLs**
3. ▶️ Click **Start** to run the actor
4. 📥 Download your data in **JSON, CSV, Excel, or HTML** format
5. Click ["Try for free"](https://apify.com?fpr=ykgg9c) to test the actor

**⭐ If this actor helps your workflow, please give it a star!**

***

*Built with ❤️ by Sachin Kumar Yadav using Apify Platform*

# Actor input Schema

## `scrapeType` (type: `string`):

Choose what to scrape:
• **Product Details** — Full details of a single product (name, price, brand, images, nutrition, ingredients, etc.)
• **Category Listing** — List of products from a category or search page.

## `urls` (type: `array`):

🧩 Provide one or more Instacart URLs.

**For Product Details:** use product URLs like https://www.instacart.com/products/35355-banquet-chicken-pot-pie-7-oz

**For Category Listing:** use category URLs like https://www.instacart.com/categories/1447-pet-care?page=2

## Actor input object example

```json
{
  "scrapeType": "product_details",
  "urls": [
    "https://www.instacart.com/products/35355-banquet-chicken-pot-pie-7-oz"
  ]
}
```

# Actor output Schema

## `products` (type: `string`):

Open the dataset view with an overview of all scraped Instacart products.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "scrapeType": "product_details",
    "urls": [
        "https://www.instacart.com/products/35355-banquet-chicken-pot-pie-7-oz"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("igview-owner/instacart-product-details-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "scrapeType": "product_details",
    "urls": ["https://www.instacart.com/products/35355-banquet-chicken-pot-pie-7-oz"],
}

# Run the Actor and wait for it to finish
run = client.actor("igview-owner/instacart-product-details-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "scrapeType": "product_details",
  "urls": [
    "https://www.instacart.com/products/35355-banquet-chicken-pot-pie-7-oz"
  ]
}' |
apify call igview-owner/instacart-product-details-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,igview-owner/instacart-product-details-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/863osqbGCvVmrrEJG/builds/KlHln6bRKZPUwqawJ/openapi.json
