CVS Scraper at a glance
CVS Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes product id, title, brand, price and was price, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.20 per 1,000 results on the Apify Free plan and from $1.60 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
- Other
- Pricing
- $2.20 per 1,000 results (Free plan), from $1.60 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 13 options
Scrape CVS.com pharmacy, beauty, health and personal care products by keyword search. Extract product names, brands, prices, descriptions, ratings, customer reviews and availability. Collect structured product data for price comparison, competitor analysis, market research and stock monitoring.
What CVS Scraper can do
- Two ways in. Point it at keyword searches, or paste storefront links - search pages and product pages both walk with the same grammar.
- Retail-ready product records. Every row carries title, brand, price with was-price and per-unit price, rating, review count, sponsored flag and badges; detail enrichment adds the description, availability and image gallery straight from the product page. Individual review texts are not collected; each row carries the rating and the review count.
- Scheduled-run friendly. Incremental mode classifies every product NEW / UPDATED / UNCHANGED / EXPIRED across runs, so a daily monitor pushes only what moved, and resume mode continues an interrupted walk exactly where it stopped.
- Connector-ready. Push records into Notion, Sheets or any MCP-capable app as they land.
- Honest runs. Refused pages rotate and retry; a fully closed window fails loudly with a connection-problem message instead of shipping an empty success.
Choose what to collect
These inputs let you configure CVS Scraper - Products, Prices, Ratings & Availability. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring | Search mode walks keyword search result pages. Links mode walks the storefront links you paste: search pages and product pages. |
searchTermsarray | Keyword searches to walk (search mode). Each term walks its result pages in order. |
urlsarray | Links to walk (links mode): keyword search pages and product pages. |
fetchDetailsboolean | Read each product's detail page: description, availability, gallery, aggregate rating. Billed per enriched record. |
maxItemsinteger | Maximum records this run may push. 0 means no limit. |
resumeFromRunIdstring | Internal: continues an interrupted run. |
incrementalModeboolean | Track changes across scheduled runs. |
Show 6 more inputs
| Input | What it controls |
|---|---|
stateKeystring | Internal: names the incremental baseline. |
emitUnchangedboolean | Incremental mode: also emit rows whose tracked fields did not change. |
emitExpiredboolean | Incremental mode: emit EXPIRED rows for products that left a fully-scanned scope. |
mcpConnectorsarray | Internal: connector ids that receive the run's records as they push. |
notionParentPageUrlstring | Internal: parent page for the Notion connector. |
maxNotifyListingsinteger | Internal: cap on records sent to connectors per run. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
productIdProduct ID (text)titleTitle (text)brandBrand (text)pricePrice (number)wasPriceWas price (number)pricePerUnitPer unit (text)ratingRating (number)reviewsCountReviews (number)sponsoredSponsored (boolean)badgesBadges (json)positionPosition (number)urlURL (link)Show 9 more fields
descriptionDescription (text)currencyCurrency (text)availabilityAvailability (text)imageUrlImage (link)imageUrlsImages (json)changeTypeChange (text)changedFieldsChanged fields (json)firstSeenAtFirst seen (text)lastSeenAtLast seen (text)Example output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"recordId": "cvs:186492",
"productId": "186492",
"title": "L.A. Girl Shimmer Spray, Gold",
"brand": "L.A. Girl",
"price": 7.99,
"wasPrice": 12.99,
"currency": "USD",
"rating": 4.6,
"reviewsCount": 21,
"availability": "InStock",
"url": "https://www.cvs.com/shop/l-a-girl-shimmer-spray-gold-prodid-186492"
}Ways to use this data
- Who: pricing teams tracking CVS promos on health-and-beauty assortments - price, was-price and per-unit price land per row, updated per scheduled run.
- Who: brands auditing their drugstore shelf - sponsored flags, badges, ratings and review velocity per product.
- Who: analysts building retail datasets - walk any keyword search with the same grammar and export straight to CSV/Excel or a warehouse.
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 CVS Scraper return?
The documented output for CVS Scraper includes product id, title, brand, price, was price, per unit, rating and reviews. Availability of each field depends on the source page and the selected mode.
How much does CVS Scraper cost?
It costs $2.20 per 1,000 results on the Apify Free plan and from $1.60 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
How do I run CVS Scraper - Products, Prices, Ratings & Availability?
Open the actor on Apify, review the input form and current pricing, then run it with your chosen input. Inspect the output before using it in a larger workflow.
Where can I request a different source or output?
Contact us with the source URLs, fields you need and expected collection frequency. We can discuss a custom scraper or data pipeline.
