ShopRite US Scraper: Price Plus, Digital Coupons & Deals
Pricing
from $3.20 / 1,000 products
ShopRite US Scraper: Price Plus, Digital Coupons & Deals
Get US ShopRite prices for milk, coffee and groceries by ZIP or store: sale prices, Price Plus labels, digital coupons, deal dates, unit prices, stock, UPC and size. About $0.004 per product: 1,000 products cost $4. No login. Missing card-price values stay null.
Pricing
from $3.20 / 1,000 products
Rating
0.0
(0)
Developer
mogged
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Security
Limited permissionsShare
For grocery price analysts, brands and comparison services collecting recurring observations from US ShopRite stores. Search milk, coffee, meat and other groceries, choose ZIP codes or exact stores, and export advertised prices, sale dates, unit prices, original UPCs, availability and public digital coupon offers. About $0.004 per delivered product, or $0.08 for 20 products, plus a minimum $0.00005 Actor start charge. No retailer login or retailer API key is needed.
This is the US Wakefern ShopRite, using the common Safeway & Albertsons retail-family fields.
What the prices mean
price is the advertised current price from the selected ShopRite store's public catalog. regularPrice comes from the explicit previous price when present. For a product explicitly marked regular, the current price is also its regular price. Missing previous prices remain null.
Offers preserve dates, minimumQuantity, limit and conditions. Multibuys such as "12 for $16.00" remain conditional, rather than becoming unconditional unit prices.
Explicit loyalty discounts populate memberPrice; unknown Price Plus requirements remain null. A null does not prove no card is required.
Public SKU-linked digital coupons stay in offers, with their supplied saving and conditions. Savings are not subtracted from price. Missing coupon dates remain null; account-specific eligibility is unavailable.
For weighted products, priceText: "avg/ea" identifies an estimated pack price. unitPrice keeps the per-pound price. Preserve both alongside sellByWeight and unitOfPrice; checkout weight can change the total. Taxes and fees are excluded.
What you get
Each row represents one product at one verified store. Unknown values remain null.
| Field | Meaning |
|---|---|
verdict | Product, advertised price and selected store in one sentence. |
retailer, country, currency | ShopRite, US and USD. |
storeId, storeName, location | Verified store number and name, plus the requested ZIP. ZIP is null for exact or default stores. |
productId, sku, gtin | Original product identifier and UPC/SKU text, retaining leading zeros. |
title, brand, size | Product name, supplied brand and package-size label. |
price, regularPrice, onSale | Advertised store price, explicit previous price and observed sale status. |
promoText, promoType | Main promotion label and normalized type. |
promoStart, promoEnd | Available main promotion validity dates, using UTC timestamps when supplied. |
memberPrice, memberProgram | Explicit loyalty price and program; null when not separately identified. |
unitPrice, unitOfMeasure | Source price per unit and its label, such as lb, oz, gal or fl oz. |
inStock, stockLevel | Public catalog availability; shelf quantity remains null. |
rating, reviewCount | Source aggregate review fields, usually null. |
category, url, imageUrl | Category breadcrumb, store-scoped product page and product image. |
scrapedAt | UTC time of the observation. |
Retailer-specific extras follow those fields:
| Field | Meaning |
|---|---|
banner, upc | shoprite and the original barcode text. |
aisle, shelf | Store product location when supplied by a product detail response. |
sellByWeight, sellByWeightCode | Whether the source sells by weight, plus its original selling-unit label. |
snapEligible | Explicit product SNAP flag when available; otherwise null. |
isDeal | Sale, explicit loyalty discount, promotion or verified public coupon. |
digitalCouponAvailable | True or false after a successful lookup; null when coupon coverage is unknown. |
digitalCouponText, offers | Coupon summary and all normalized source-linked promotional evidence. |
weeklyAd | Null unless separately established. A sale flag is not treated as proof of circular placement. |
priceRequiresMembership | True only for an explicit source loyalty discount; unknown remains null. |
priceText, unitPriceText, priceSource | Original display labels and catalog price source. |
wholePrice, unitOfSize, unitOfPrice | Original selling-unit and package information, useful for weighted products. |
storeAddress, storeTimezone, storeDistance | Public store location and distance from a ZIP center in miles. |
requestedLocations | All supplied ZIPs that resolved to this same store. |
details, sourceUrl | Optional ingredients, nutrition and attributes, plus the public store-specific source. |
The overview, deals and details views match the retail family. DEALS contains only qualifying deal rows, split into linked parts for larger exports.
Every run saves a SUMMARY record with products, stores, dealsFound, freeFailures, chargedProducts, spendingLimitReached, duplicateExclusions, resolvedStores, outcomes and notes. This is the same central monitoring contract as the retail family. Check its status before importing a snapshot as complete. Product rows have recordType: "PRODUCT"; explanatory rows have recordType: "NOTE" and no Product fee.
Start in three steps
- Enter product search terms, category/deals links or product IDs.
- Choose ZIP codes or exact store IDs and set a global product cap.
- Start the run, inspect SUMMARY and export the dataset as JSON, CSV or Excel.
The 3 November 2026 cloud prefill delivered 20 unique milk products near 07080 in 18.9 seconds, with a complete summary. It selected ShopRite of South Plainfield, store 578. Exact store IDs keep recurring monitoring stable.
Inputs and examples
| Input | Behavior |
|---|---|
searchTerms | Array such as ["milk", "coffee"]. Each term is searched at every selected store. |
startUrls | Optional public ShopRite category, results, promotions or product links. Plain strings are accepted. |
productIds | Exact SKU strings such as ["00041190467150"]. Preserve leading zeros. |
locations | US ZIPs such as ["07080", "10001"]. Chooses the nearest live verified grocery store within 100 miles of each ZIP center. |
storeIds | Exact store numbers such as ["592", "112"]; these take precedence over ZIPs. |
maxItemsPerSearch | New rows per source and store. Default 20, maximum 1,000. |
maxItems | Global product/store observation cap. Default 20, maximum 10,000. |
dealsOnly | Retain observed sales, promotions, explicit member discounts and public coupons. |
includeDetails | Add store-scoped ingredients, nutrition and aisle when available. Adds requests; no extra Product fee. |
proxyConfiguration | Default datacenter routing with US residential retries after refusals. Custom proxies are supported. |
With no source selection, the Actor searches milk. With dealsOnly: true and no source selection, it selects the live sale-product catalog. With no ZIP or store IDs, it uses the site's corporate default, store 3000. Corporate prices are not a national average and should not be labeled as a nearby physical store's prices. Its address is kept null.
A meat category at a fixed store:
{"startUrls": ["https://www.shoprite.com/sm/planning/rsid/592/categories/meat-id-520692"],"storeIds": ["592"],"maxItemsPerSearch": 100,"maxItems": 100}
An exact basket at two stores:
{"productIds": ["00041190467150", "00041190467242"],"storeIds": ["592", "112"],"includeDetails": true,"maxItems": 4}
Pasted URL store numbers do not override the run's explicit store selection. Category IDs come from the category URL. Search and category pages can include sponsored insertions, so pagination follows the retailer's next link rather than skipping by the number of returned cards. Overlapping products at the same store are delivered once.
Real output example
Selected fields from the 3 November 2026 prefill:
{"retailer": "ShopRite","country": "US","currency": "USD","storeId": "578","storeName": "ShopRite of South Plainfield","location": "07080","productId": "00041190467150","gtin": "00041190467150","title": "Bowl & Basket Whole Milk, one gallon","price": 4.89,"regularPrice": 4.89,"unitPrice": 4.89,"unitOfMeasure": "gal","inStock": true,"memberPrice": null}
Two private volume tests on 3 November 2026 each delivered 1,200 unique products across three stores, with 1,200 accepted Product charges and a complete summary. One used milk and coffee searches and the other a meat category. They finished in 291.2 and 336.6 seconds. These are measured examples, not a runtime guarantee.
Pricing and spending limits
A Product fee applies to one distinct delivered product at one store. The same product at two stores is two observations. Overlapping searches, repeated IDs and repeated ZIPs resolving to the same store do not create a second fee within a run. Notes, summaries, source failures and empty results carry no Product fee. There is no additional default dataset-item charge.
| Delivered observations | Base | Bronze | Silver | Gold |
|---|---|---|---|---|
| 20 | $0.08 | $0.076 | $0.072 | $0.064 |
| 100 | $0.40 | $0.38 | $0.36 | $0.32 |
| 1,000 | $4.00 | $3.80 | $3.60 | $3.20 |
Add the minimum $0.00005 Actor start charge. Base pricing is $0.004 per Product, Bronze $0.0038, Silver $0.0036 and Gold $0.0032. The maximum total charge is checked before saving each additional paid observation. Reaching that limit stops collection cleanly and sets spendingLimitReached in SUMMARY. Optional details have no separate event fee.
Monitor prices every day
Save a fixed-store basket as a task. In Apify Console, schedule it daily and connect its completed-run webhook to your database.
Join observations using retailer + storeId + productId. Keep scrapedAt, price, regularPrice, memberPrice, offer conditions and unit prices in separate columns. UPCs should be text in spreadsheets. A new scheduled run creates a fresh observation and charges for its delivered products again; this Actor does not supply historical backfill.
Check SUMMARY and source outcomes before importing a snapshot as complete. Preserve gaps rather than substituting prices. Make, Zapier, n8n and Sheets can consume these outputs.
API and automation
Start a run, then fetch its dataset and SUMMARY:
curl -X POST \'https://api.apify.com/v2/acts/moggedhq~shoprite-us-scraper/runs' \-H 'Authorization: Bearer YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"searchTerms":["coffee"],"storeIds":["592"],"maxItems":20}'
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("moggedhq/shoprite-us-scraper").call(run_input={"searchTerms": ["milk"], "storeIds": ["592"], "maxItems": 20})rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())summary = client.key_value_store(run["defaultKeyValueStoreId"]).get_record("SUMMARY")
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('moggedhq/shoprite-us-scraper').call({searchTerms: ['coffee'], storeIds: ['592'], maxItems: 20});const { items } = await client.dataset(run.defaultDatasetId).listItems();
Use with AI agents (MCP)
Connect an agent to https://mcp.apify.com. Ask it for US ShopRite store prices, promotion dates, unit prices, UPCs and public coupon conditions. Give ZIPs or exact store IDs, search terms or product IDs, and your maximum product count. Ask it to inspect SUMMARY and preserve null membership values and coupon conditions. Existing retail-family integrations can retain the same common field names and replace the Actor name plus source-specific IDs.
Reliability and limits
Public Wakefern requests run serially, at least 1.5 seconds apart, with datacenter before US residential retries and fresh sessions after refusals. Official shared gateway hosts retain the explicit ShopRite selector and verified store number. No account sessions, logins or CAPTCHA solving.
Store metadata and catalog prices are fetched live for each run. ZIP selection uses a geographic ZIP center, so it may differ from a route-distance choice or a shopper's manually selected store. Wine and spirits stores are excluded from grocery-store selection. No store is chosen beyond the stated 100-mile radius. Exact store IDs provide the most repeatable comparison.
Saved pages, progress and dataset rows survive restarts. Serial delivery restores IDs and reconciles the last unconfirmed row against authoritative charge counts and durable receipts. Stable charge keys prevent repeat charges; ambiguous billing evidence stops charging.
Availability is an online catalog signal, not a physical shelf audit. Cart quantity is not stock quantity. Missing ratings, exact inventory, SNAP eligibility and distinct card prices remain null. Sale dates can be supplied even when a digital coupon's dates are unavailable. Can Can Sale and Dollar Days appear only if the live catalog actually labels an offer that way; the Actor does not assign those campaign names from the calendar.
Image-only circular panels, account-specific clipped offers and checkout eligibility are outside coverage. Optional details can remain unavailable.
FAQ
Why is memberPrice null for a sale? The public catalog did not separately identify a loyalty price. Do not infer that no card is needed.
Are nulls and empty searches charged? A useful delivered product has a Product fee even if optional fields are null. An empty search, note or failed source has no Product fee.