Walgreens Products & Reviews Scraper at a glance
Walgreens Products & Reviews Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes product id, product, brand, primary image and product images, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Web data
- Pricing
- $2.00 per 1,000 results (Free plan), from $1.00 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 28 options
Scrape Walgreens products by keyword, category or product URL. Extract prices, promotions, availability, ingredients, descriptions, product details, ratings and customer reviews in clean, structured data.
What Walgreens Products & Reviews Scraper can do
- Three ways in. Search by keyword, paste category or search-result links, or paste individual product links. Products from every source are combined and deduplicated in one dataset.
- Seven search filters. Brand, product type, minimum and maximum price, minimum rating, online-only availability and offers-only, plus eight sort orders including top sellers and name A-Z / Z-A.
- Identifiers and offers. Product and SKU identifiers, UPC and GTIN codes, online and store stock labels, prices, coupons and offers.
- Optional depth. Turn on full product information (descriptions, ingredients, warnings, uses, shipping, image gallery) and individual customer reviews with a per-product cap.
- Built for schedules. Incremental mode labels new, updated, unchanged, reappeared and expired products, with fields you can exclude from change detection.
- Fails loudly. A source that cannot be read stops the run with a clear message instead of returning an empty dataset.
Choose what to collect
These inputs let you configure Walgreens Products & Reviews Scraper. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | Search mode uses keywords, filters and sorting. URL mode uses the supplied links and ignores search inputs. |
searchQueriesarray | One or more keywords. Used in Search mode only; products from all terms are deduplicated. |
brandsarray | Exact brand names, such as Crest or Colgate. Match any supplied brand. Search mode only. |
productTypesarray | Exact product type names, such as Toothpaste or Manual Toothbrushes. Search mode only. |
minPricenumber | Include products with a current price at least this amount. Search mode only. |
maxPricenumber | Include products with a current price no more than this amount. Search mode only. |
minRatingnumber | Include products rated at least this value, from 0 to 5. Search mode only. |
Show 21 more inputs
| Input | What it controls |
|---|---|
onlineOnlyboolean | Include products marked in stock online. Search mode only. |
offersOnlyboolean | Include products with an offer or a discounted sale price. Search mode only. |
sortBystring | Ordering applied separately to each search term. Search mode only. |
urlsarray | Category, search-result, or product links. URL mode ignores keyword inputs and search controls; supported filters and ordering already present in the links are retained. |
maxItemsinteger | Maximum products to save across the selected sources. Set 0 for no product cap. |
maxPagesinteger | Page limit per search term or category. Leave 0 for no extra limit: the actor stops at a hard cap of 1000 pages per source and Max items is the effective cap. |
fetchDetailsboolean | Include the full image gallery, descriptions, ingredients, warnings, uses, shipping information, and complete product details. |
fetchReviewsboolean | Collect individual reviews with text, ratings, dates, public author details, photos, videos, and helpfulness counts. |
maxReviewsPerProductinteger | Newest reviews to collect for each product. Set 0 to use the cap of 1000; larger values are reduced to 1000. Large review collections increase output size and run time. |
resumeFromRunIdstring | Skip product IDs already saved in an earlier run or dataset. |
incrementalModeboolean | Compare products with the previous completed scan of the same mode, sources, filters, and enrichment options. Compared: price, sale price, rating, review count, inventory status, title, brand, image links and the other product fields. Excluded by default (still in the output): the raw catalog copy and the nearest-store stock wording, which changes with the connection used. Use Change scope to compare only price and stock. |
stateKeystring | Optional custom baseline name. Each mode, source set, filter and enrichment configuration has its own baseline. |
emitUnchangedboolean | Save unchanged products during recurring scans. |
emitExpiredboolean | Save an expired row for a product missing from a completed scan of the same scope. Scans that start past the first page, use search filters, or stop early (page or item limit) are never treated as complete. |
changeScopestring | Which changes mark a product as updated. Price and stock only compares price, regular price, sale price, sale flag, deal text, online stock status and the terms of each offer; descriptions, images, labels and other details never create an updated row (they stay in the output of new products). Incremental mode only. |
compactUpdatesboolean | Save updated and expired rows as short rows: product ids, link, title, current price and stock, and old and new values of what changed (priceChanges, variantChanges). New products stay complete. A compact row has no full product information or reviews, so none is collected or charged for it. Incremental mode only. |
expireAfterMissedScansinteger | With Include disappeared products, save an expired row only after the product was missing from this many completed scans in a row. 1 expires at the first missed scan. Expired means the product was not in the scanned listings; it does not prove the product was removed from sale. |
ignoreFieldsForChangesarray | Field names left out when deciding whether a product changed. Dotted paths such as reviews.date drop that key from every element. Image links and the raw catalog copy are already ignored by default. Ignored fields stay in the output. |
mcpConnectorsarray | Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a page per product; other connectors get a best-effort write or digest. Each connector receives a condensed summary per product, not the full record; the complete record always stays in the dataset. Leave empty to skip; this never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com). |
notionParentPageUrlstring | URL or id of the Notion page under which product pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on products written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
idProduct IDtitleProductbrandBrandimageUrlPrimary image (image)imagesProduct images (array)pricePriceproductSizeSizeonlineInvStatusOnline stockratingRatingreviewCountReviewsurlURL (link)changeTypeChangeShow 27 more fields
reviewsreviewsProductIdProduct IDOriginalProductNameProductIdReview IDRatingRating (number)TitleReview titleReviewTextReview textSubmissionTimeDate (date)UserNicknameReviewerIsRecommendedRecommended (boolean)TotalPositiveFeedbackCountHelpful votes (number)PhotosReview photosVideosReview videoschangedFieldsChanged fields (array)firstSeenAtFirst seen (date)lastSeenAtLast seen (date)storeInventoryStatusStore stockdescriptionTextDescriptioncategoryCategorysubCategorySub-categoryingredientNameActive ingredientsinactiveIngredientsInactive ingredientsingredientsIngredientswarningsWarningsusesUsesshippingShippingproductDetailsFull product informationExample output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"id": "00000001",
"prodId": "00000001",
"skuId": "00000002",
"title": "Sample Product",
"productName": "Sample Product",
"brand": "Sample Brand",
"url": "https://www.walgreens.com/store/c/sample-product/ID=00000001-product",
"imageUrl": "https://pics.walgreens.com/prodimg/000000/450.jpg",
"images": [
"https://pics.walgreens.com/prodimg/000000/900.jpg",
"https://pics.walgreens.com/prodimg/000000/2_900.jpg"
],
"price": "$5.00",
"regularPrice": "$6.00",
"salePrice": "$5.00",
"currency": "USD",
"productSize": "5 oz",
"productType": "Personal care",
"gtin": "0000000000000",
"upc": "000000000000",
"rating": "4.5",
"reviewCount": "100",
"ingredientName": "Sample active ingredient",
"inactiveIngredients": "Sample inactive ingredient",
"onlineInvStatus": "instock",
"storeInventoryStatus": "In Stock",
"couponCode": "Sample coupon",
"offerDescription": "Sample offer",
"productDetails": {
"productInfo": {
"productId": "00000001",
"title": "Sample Product"
},
"prodDetails": {
"section": []
}
},
"catalogProduct": {
"prodId": "00000001",
"skuId": "00000002",
"productDisplayName": "Sample Product",
"priceInfo": {
"regularPrice": "$6.00",
"salePrice": "$5.00"
}
},
"descriptionText": "Sample product description",
"reviews": [
{
"Id": "sample-review-1",
"ProductId": "00000001",
"Title": "Sample review",
"ReviewText": "Illustrative review text",
"Rating": 5,
"SubmissionTime": "2026-01-01T00:00:00Z",
"UserNickname": "Sample Reviewer"
}
],
"reviewsFetched": 1,
"reviewTotal": 100,
"changeType": "UPDATED",
"changedFields": [
"price"
],
"firstSeenAt": "2026-01-01T00:00:00Z",
"lastSeenAt": "2026-01-02T00:00:00Z"
}Ways to use this data
- Price and promotion tracking: capture current, regular and sale prices, coupons and offers across one or more categories or search terms to see how pricing moves over time.
- Stock and availability monitoring: check online and in-store stock labels for specific products or a whole category before restocking or promoting them elsewhere.
- Product content and catalog building: collect titles, brands, sizes, descriptions, ingredients, warnings and full image galleries to populate a catalog, comparison site or app.
- Customer sentiment research: collect individual review text, ratings and review counts to see what shoppers say about specific products or brands.
- Recurring catalog audits: schedule the actor with Incremental mode to see only new, updated, reappeared or expired products between scans, instead of re-downloading everything each time.
- Downstream automation: send a condensed product summary into Notion, Linear, Airtable or another connected app through the optional MCP export, while the complete record stays in the dataset.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Walgreens Products & Reviews Scraper return?
The documented output for Walgreens Products & Reviews Scraper includes product id, product, brand, primary image, product images, price, size and online stock. Availability of each field depends on the source page and the selected mode.
How much does Walgreens Products & Reviews Scraper cost?
It costs $2.00 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
Can I get only new or changed products on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Track changes across runs. Each scheduled run then returns only new, updated, reappeared, and, with Include disappeared products on, expired records for the same mode, sources, filters and enrichment options. Unchanged products are not billed unless Include unchanged products is on.
Why did my run fail instead of returning an empty dataset?
If a category, search or product page cannot be read (temporary refusals are retried first), the run stops with an error instead of quietly returning an empty or partial dataset for that source, so "nothing found" is never confused with "the catalog could not be read". The same applies when a requested brand or product type does not exist for a search term. Products saved before the failure stay in the dataset, but a failed run does not update the recurring-run baseline. Optional full product information and review lookups are more tolerant: once they fail repeatedly within a run, the actor keeps the base catalog data and stops trying to enrich further products in that run, rather than failing outright.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to send a condensed product summary to Notion, Linear or Airtable while the complete record stays in the dataset.
