# Shoprite Product Search Scraper (`stealth_mode/shoprite-product-search-scraper`) Actor

Scrape ShopRite product listings with detailed pricing, promotions, and availability. Extract 40+ fields per item — brand, price, discounts, loyalty details, and more. Perfect for price monitoring, competitive analysis, and retail intelligence.

- **URL**: https://apify.com/stealth\_mode/shoprite-product-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.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

## ShopRite Product Search Scraper: Extract Real-Time Grocery Pricing Data

***

### What Is ShopRite?

ShopRite is a major supermarket chain offering an extensive range of groceries, household items, and specialty products through both physical stores and online shopping. Its product database includes thousands of SKUs updated in real-time with pricing, promotions, and inventory status. Manually tracking product availability, pricing changes, and promotional offers across categories is labor-intensive — the **ShopRite Product Search Scraper** automates this process, delivering complete product data instantly.

***

### Overview

The **ShopRite Product Search Scraper** extracts detailed product information from ShopRite.com search results and category pages, turning unstructured listings into machine-readable records. It is designed for:

- **Price monitoring services** tracking grocery inflation and competitor pricing
- **Retail analysts** benchmarking product assortments and promotional strategies
- **Loyalty program researchers** studying how promotions vary by membership tier
- **eCommerce aggregators** building product feeds and comparison tools
- **Market researchers** analyzing product availability and discounts across regions

Key strengths include dual scraping modes (URLs and keyword search), on-sale filtering, flexible sorting options, and rich output spanning pricing, promotions, loyalty discounts, and product attributes.

***

### Input Format

The scraper accepts configuration in two modes: **Scrape by URLs** or **Scrape by Search Filters**. Choose one mode per run.

#### Mode 1: Scrape by URLs

Paste direct links to product search results or category pages:

```json
{
  "urls": [
    "https://www.shoprite.com/sm/pickup/rsid/3000/categories/meat/beef-id-519883?f=Breadcrumb%3Agrocery%2Fmeat%2Fbeef",
    "https://www.shoprite.com/sm/pickup/rsid/3000/results?q=meat&take=30&sort=ppfreq&fpromotions=True"
  ],
  "max_items_per_url": 200,
  "ignore_url_failures": true
}
```

| Field | Description |
|---|---|
| `urls` | Direct links to ShopRite search or category pages. Each URL can return up to `max_items_per_url` products. |
| `max_items_per_url` | Maximum products collected per URL (e.g., `200`). Leave empty for no limit. |
| `ignore_url_failures` | If `true`, scraper skips failed URLs and continues. If `false`, it stops on error. |

#### Mode 2: Scrape by Search Filters

Search for products using keywords and filter criteria:

```json
{
  "keyword": "meat",
  "sort_by": "ppfreq",
  "on_sale": true,
  "page": 2,
  "max_items_per_url": 200
}
```

| Field | Description |
|---|---|
| `keyword` | Search term (e.g., `"meat"`, `"organic milk"`, `"pasta"`). Required for this mode. |
| `sort_by` | Sort results by: `""` (relevance, default), `"brand"` (A-Z), `"brand desc"` (Z-A), `"price"` (low to high), `"price desc"` (high to low) |
| `on_sale` | If `true`, returns only discounted/promotional items. If `false`, all matching products. |
| `page` | Starting page number (default: 1). Use `2` to start from page 2, etc. |
| `max_items_per_url` | Maximum products per page (e.g., `200`). |

> **Note:** Leave `urls` empty when using search filters. Do not mix both modes in one run.

***

### Output Format

**Sample output**

```json
{
  "attributes": {
    "content origin": "V7 SR stores",
    "eu1169_compliance": "Unspecified",
    "pvid": "17055536",
    "features": [
      "Natural",
      "Extraordinary",
      "Distinct",
      "American style kobe beef",
      "No hormones",
      "No added antibiotics",
      "100% vegetarian feed"
    ],
    "product _marketing": "Each package contains 1 steak and on average weights 1-1.25 lbs",
    "storage _type": "{\"Type\":\"Ambient\"}",
    "unit _type": [
      "Each"
    ],
    "u_s _product _specifications": "{\"Food Form\":\"Solid\"}",
    "description _breakdown": "{\"Functional Name\":\"Fresh Meat\"}",
    "number of _units": "{\"Count Per Package\":\"1\"}",
    "pack _type": "{\"Type\":\"Tray\"}",
    "standardized _brand": "{\"Brand\":\"American Wagyu\"}"
  },
  "available": true,
  "brand": "American Wagyu",
  "categories": [
    {
      "category_id": "6a5c94d6-2935-449b-98bd-bc593305089a",
      "retailer_id": "Grocery",
      "category": "Grocery",
      "category_breadcrumb": "Grocery"
    },
    {
      "category_id": "f976b945-e557-481d-a425-8293ad417ff2",
      "retailer_id": "520692",
      "category": "Meat",
      "category_breadcrumb": "Grocery/Meat"
    },
    {
      "category_id": "1fc18f06-2219-41e8-a16d-870255fd19d1",
      "retailer_id": "519883",
      "category": "Beef",
      "category_breadcrumb": "Grocery/Meat/Beef"
    },
    {
      "category_id": "caf2ab9d-2321-4658-9794-9bb92167382e",
      "retailer_id": "300223",
      "category": "Roasts & Briskets",
      "category_breadcrumb": "Grocery/Meat/Beef/Roasts & Briskets"
    }
  ],
  "category": "",
  "default_category": [
    {
      "category_id": "caf2ab9d-2321-4658-9794-9bb92167382e",
      "retailer_id": "300223",
      "category": "Roasts & Briskets",
      "category_breadcrumb": "Grocery/Meat/Beef/Roasts & Briskets"
    }
  ],
  "description": "American Wagyu Beef Loin New York Strip Steak, Boneless, Average Weight 1 lb Pack",
  "image": {
    "default": "https://images.cdn.shoprite.com/cell/00200797000003_322",
    "cell": "https://images.cdn.shoprite.com/cell/00200797000003_322",
    "details": "https://images.cdn.shoprite.com/detail/00200797000003_322",
    "zoom": "https://images.cdn.shoprite.com/zoom/00200797000003_322",
    "template": "https://images.cdn.shoprite.com/{size}/00200797000003_322"
  },
  "is_discounted": false,
  "is_favorite": false,
  "is_in_cart": false,
  "is_on_list": false,
  "is_past_purchased": false,
  "is_sponsored": false,
  "name": "American Wagyu Beef Loin New York Strip Steak, Boneless, Average Weight 1 lb Pack",
  "note": "",
  "points_based_promotions": [],
  "price": "$34.99",
  "price_label": "",
  "price_source": "regular",
  "promotions": [],
  "quantity": 0,
  "sell_by": "each",
  "shopping_rule_messages": [],
  "show_coupon": false,
  "sku": "00200797000003",
  "unit_of_measure": {
    "label": "Pound",
    "size": 1,
    "type": "pound",
    "abbreviation": "lb"
  },
  "unit_of_price": {
    "label": "Each",
    "size": 1,
    "type": "each",
    "abbreviation": ""
  },
  "unit_of_size": {
    "label": "Pound",
    "size": 1,
    "type": "pound",
    "abbreviation": "lb"
  },
  "unit_price": "$34.99/lb",
  "was_price": "$34.99",
  "was_unit_price": "",
  "ad_id": null,
  "weight_increment": null,
  "is_configurable": false,
  "options": [],
  "tax_details": [],
  "subtotal_with_loyalty": "",
  "subtotal_without_loyalty": "",
  "has_loyalty_discount": false,
  "unit_price_without_loyalty": "",
  "unit_price_with_loyalty": "",
  "from_url": "https://www.shoprite.com/sm/pickup/rsid/3000/categories/meat-id-520692"
}
```

Each product record contains 40+ fields spanning identity, pricing, promotions, availability, and loyalty details:

#### Product Identity

| Field | Meaning |
|---|---|
| `Name` | Product name as displayed on ShopRite |
| `SKU` | Stock Keeping Unit — unique product identifier |
| `Brand` | Manufacturer or brand name |
| `Description` | Full product description (ingredients, usage, warnings) |
| `Image` | Product photo URL |
| `Category` | Subcategory (e.g., "Beef") |
| `Default Category` | Primary category classification |
| `Categories` | All applicable category tags |
| `Note` | Any special notes or disclaimers |

#### Pricing & Currency

| Field | Meaning |
|---|---|
| `Price` | Current selling price |
| `Unit Price` | Price per unit of measure (e.g., per pound) |
| `Was Price` | Original price before discount |
| `Was Unit Price` | Original unit price |
| `Price Label` | Display label (e.g., "On Sale") |
| `Price Source` | Source of pricing data (store-specific) |
| `Unit of Price` | Currency denomination |
| `Unit of Measure` | Measurement type (lb, oz, each, etc.) |
| `Unit of Size` | Product size unit |

#### Promotions & Discounts

| Field | Meaning |
|---|---|
| `Is Discounted` | Boolean: product has an active discount |
| `Promotions` | List of active promotional offers |
| `Points-Based Promotions` | Rewards or loyalty points offers |
| `Show Coupon` | Boolean: coupon available for product |
| `Sell By` | Expiration/sell-by date (for perishables) |

#### Loyalty & Cart Status

| Field | Meaning |
|---|---|
| `Has Loyalty Discount` | Boolean: loyalty member pricing applied |
| `Unit Price With Loyalty` | Price including loyalty member discount |
| `Unit Price Without Loyalty` | Standard retail price |
| `Subtotal With Loyalty` | Total with member benefits |
| `Subtotal Without Loyalty` | Total without member benefits |
| `Is Favorite` | Boolean: added to user favorites |
| `Is in Cart` | Boolean: item in shopping cart |
| `Is on List` | Boolean: saved to shopping list |
| `Is Past Purchased` | Boolean: purchased by user before |

#### Availability & Inventory

| Field | Meaning |
|---|---|
| `Available` | Boolean: in stock at selected store |
| `Quantity` | Units available for purchase |
| `Attributes` | Product attributes (size, color, flavor, etc.) |
| `Is Configurable` | Boolean: product has customizable options |
| `Options` | Selectable options (e.g., size variations) |

#### Targeting & Ads

| Field | Meaning |
|---|---|
| `Is Sponsored` | Boolean: paid product placement |
| `Ad ID` | Sponsored product identifier |
| `Shopping Rule Messages` | Rules applied to this product (e.g., limits) |
| `Tax Details` | Tax classification and rate |
| `Weight Increment` | Minimum purchase weight unit |

***

### How to Use

#### By URLs (Recommended for specific searches)

1. **Navigate ShopRite.com** — Use the search or category menu to find products.
2. **Copy URLs** — Get the full URL from your browser (e.g., `https://www.shoprite.com/sm/pickup/rsid/3000/results?q=meat`).
3. **Paste in scraper** — Add URLs to the `urls` array.
4. **Set limits** — Adjust `max_items_per_url` (e.g., `200` for full category).
5. **Run scraper** — Start the actor and monitor progress.

#### By Search Filters (For dynamic, keyword-based searches)

1. **Enter keyword** — Type your search term (e.g., `"organic milk"`, `"cereal"`).
2. **Set filters** — Choose sort order, enable `on_sale` if needed, set start page.
3. **Configure limits** — Set `max_items_per_url` to control volume.
4. **Run scraper** — Start the run; scraper handles pagination automatically.

**Troubleshooting:**

- If a URL returns no products, verify the link is a search results or category page (not a product detail page).
- Use `ignore_url_failures: true` for bulk runs to prevent interruptions.
- Loyalty pricing varies by store; pricing may differ by location (`rsid` parameter).

***

### Use Cases & Business Value

- **Price monitoring:** Track competitor pricing across categories and regions in real-time
- **Promotional analysis:** Identify discount patterns and measure coupon effectiveness
- **Loyalty insights:** Compare member vs. non-member pricing to understand tier benefits
- **Product feed** — Aggregate ShopRite data into custom price comparison or shopping aggregator apps
- **Supply chain:** Monitor product availability and stock levels across locations
- **Market research:** Analyze shelf space allocation, brand positioning, and category assortments

By automating data collection, the ShopRite scraper replaces hours of manual monitoring with structured, actionable data that feeds directly into analytics, BI platforms, and pricing engines.

***

### Conclusion

The **ShopRite Product Search Scraper** is a powerful tool for retail intelligence, competitive analysis, and pricing automation. With support for both URL-based and keyword-based scraping, granular filtering, and 40+ output fields covering pricing, promotions, and loyalty details, it unlocks insights that manual browsing cannot match. Start a run today and transform ShopRite data into business advantage.

# Actor input Schema

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

Add the URLs of the product search list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `keyword` (type: `string`):

Enter the keyword to search for items

## `sort_by` (type: `string`):

Sort items by options

## `on_sale` (type: `boolean`):

If true, the scraper will only scrape items that are on sale.

## `page` (type: `integer`):

The page number to start scraping from.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.shoprite.com/sm/pickup/rsid/3000/categories/meat/beef-id-519883?f=Breadcrumb%3Agrocery%2Fmeat%2Fbeef&page=2&skip=30"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "urls": [
        "https://www.shoprite.com/sm/pickup/rsid/3000/categories/meat/beef-id-519883?f=Breadcrumb%3Agrocery%2Fmeat%2Fbeef&page=2&skip=30"
    ],
    "ignore_url_failures": true,
    "on_sale": false,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/shoprite-product-search-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 = {
    "urls": ["https://www.shoprite.com/sm/pickup/rsid/3000/categories/meat/beef-id-519883?f=Breadcrumb%3Agrocery%2Fmeat%2Fbeef&page=2&skip=30"],
    "ignore_url_failures": True,
    "on_sale": False,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/shoprite-product-search-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 '{
  "urls": [
    "https://www.shoprite.com/sm/pickup/rsid/3000/categories/meat/beef-id-519883?f=Breadcrumb%3Agrocery%2Fmeat%2Fbeef&page=2&skip=30"
  ],
  "ignore_url_failures": true,
  "on_sale": false,
  "max_items_per_url": 20
}' |
apify call stealth_mode/shoprite-product-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,stealth_mode/shoprite-product-search-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/xE90TWQ4Nwg7VjRdy/builds/PpMeeJchE8hj9EJV3/openapi.json
