For CVS product data inside an app, a coupon tool or an AI agent, start with Scavio's CVS API. It is the one option here that returns a product's regular and sale price, its ExtraBucks Rewards and manufacturer coupons, and the units on the shelf and for pickup at the CVS store you pick, in the same search result. A stock call then checks up to 20 SKUs at any store at once. Every call costs 1 credit, and Scavio starts from $2 per 1,000 requests on the Growth plan billed yearly.
You need a third-party API because CVS does not sell or open its retail catalogue to developers. The CVS Health Developer Portal lists Retail Pharmacy (prescription refills, availability and orders), Pharmacy Benefit Manager, MinuteClinic and Pharmacy Immunization APIs, behind a developer account you request. None of them covers front-store products, prices, coupons or shelf stock, so do not confuse prescription availability with retail data.
We build Scavio, so read this with that bias in mind. Every Scavio number below comes from live calls we made on November 2, 2026. Every competitor detail was read off the vendor's own page that day, and where a detail was not published we say so. The screenshots are each vendor's own CVS page, captured the same day.
Which CVS API fits your job?
| Tool | Choose it for | Store-level stock | Prices and coupons | Price (checked Nov 2, 2026) |
|---|---|---|---|---|
| Scavio | Apps and agents that need shelf counts, prices and coupons with one key | Units in store and for pickup at the store number you pass; 20 SKUs per stock call | Regular, sale and unit price; ExtraBucks and manufacturer coupons | From $2 per 1,000 requests (Growth, yearly); 50 free credits |
| ScrapeHero | Enterprise feeds with ZIP and store fields | Samples show stock_quantity, retailer_store_id and pickup store fields | Price, regular price and discount; no coupon field shown | Custom enterprise pricing, not published |
| Bright Data | A scraper built from a prompt, billed per page load | Lists stock status, store location and pickup option | Price, sale price and unit price | $1.50 per 1,000 page loads; $499/mo for 383,000; 5,000 free a month |
| Apify actor | Product pages by URL | availability field; no store input | Price only | From $5.00 per 1,000 results |
| Init | A single CVS search endpoint on a general platform | No store parameter documented | Name, price, SKU and rating | 100 free credits a month; $17/mo for 1,000 credits; credits per call not stated |
| Actowiz | Managed delivery on a schedule | "Location-based availability"; store level not stated | Price fields plus coupon_value, coupon_type, loyalty_price | $500/mo for 5,000 records, $2,000/mo for 50,000 |
At CVS the price is the same everywhere; the shelf is not
We searched "toothpaste" at five CVS stores, 48 products per store, with one Scavio search call each: New York (store 7019), Palm Springs, California (9804), Brighton, Massachusetts (1889), Argyle, Texas (11091) and Lakewood, Ohio (3329).
All 48 products came back at the same price and sale price at all five stores. Stock did not line up at all: 17 of the 48 were out of stock at one store or more while another store had them, and only 31 were on the shelf at all five. Crest 3D White Radiant Mint, on sale at $3.99, had 49 units in New York and 5 in Palm Springs. Colgate Optic White Advanced in Sparkling White had none in New York and 12 in Lakewood. The stores held 183 to 292 toothpaste units each across the same 48 products.
The store number is the input that matters, and it has a trap. A sixth number we took from a cvs.com store page, 17064 in Federal Way, Washington, returned 0 units for all 48 products. That store is a CVS pharmacy inside a Target, with no CVS front-store shelf, so a correct answer and a wrong store number both read as zero. A stock checker should treat "0 for everything" as a reason to check the store, not as a sell-out.
1. Scavio: prices, coupons and shelf counts at the store you pick

Scavio's CVS API is 3 POST endpoints, each 1 credit. Measured on November 2:
- Search: "toothpaste" at store 7019 returned 48 products of 226 results in 3.9 s (1.7 to 2.1 s at the other four stores). Each row carries price, sale price, unit price, promotion text, rating, review count, size, the coupons on it and a
stockblock with units in store, for pickup and in the online ship pool. 46 of the 48 carried at least one coupon: 119 manufacturer coupons with a number and expiry date, and 28 ExtraBucks Rewards offers. Brand, price-range and rating facets come with the page. - Stock: 20 SKUs at store 1889 in 0.7 s, each with
in_store,pickup,shipandship_available. The shelf and pickup counts matched the search call at the same store for all 20. - Product: the Crest Radiant Mint returned its UPC (030772125489), sale end date (November 7), size, a 15-unit purchase limit, ingredients, directions, 12 attribute groups, the category path and 11 images, in 24.4 s.
What it does not do: there is no store locator, so you supply store numbers from cvs.com store pages, and nothing guards against a pharmacy-only store. Product detail is slow (10 to 30 seconds or more), so set a long timeout or stay on search. The counts are CVS's own system numbers. Same-day delivery units are not returned (always null), because CVS reports the same figure whichever store you ask about. There is no review text, nothing from the pharmacy, and coverage is the US. The benefit is one key and one JSON format for CVS alongside Walgreens, Walmart, Target and Dollar General, plus an MCP server for agents. How to get CVS product prices and store stock walks through each call with captured responses.
2. ScrapeHero: enterprise feeds with store fields

ScrapeHero's CVS Scraping API is sold as an enterprise product that extracts "product details, zip codes, reviews, and search results from cvs.com". Its sample responses show zipcode and retailer_store_id, stock_availability and stock_quantity, pickup store fields, shipping fields, and paginated reviews with aspect sentiment, which Scavio does not offer. No coupon field appears in the samples. Pricing is custom, "based on your data volume, concurrency requirements, and support level", through a contact form; the page lists 300 calls a minute and 10 concurrent requests. Choose it if you need review text and want a contract.
3. Bright Data: a scraper built from a prompt

Bright Data's CVS Scraper API lets you "Build a CVS scraper with AI" and lists product name, brand, category, price, sale price, unit price, pack size, stock status, store location, pickup option and rating among the fields. It documents no ready-made keyword or store collector for CVS and does not mention coupons. Pricing is per page load: 5,000 free a month, $1.50 per 1,000 pay-as-you-go, or $499 a month for 383,000 with more at $1.30 per 1,000; the page carried a 60% discount code for three months. Choose it when you want to define the fields yourself and run at volume.
4. Apify actor: product pages by URL

getdataforme/cvs-scraper takes a list of cvs.com product URLs and returns URL, product name, price, description, image, availability, rating and review count. It has no search or store input and no coupon or sale-price field. It is priced "from $5.00 / 1,000 results" pay-per-event, and on November 2 it showed 40 total users, 1 monthly user and no ratings. Actors run as jobs that write to a dataset, and this one is maintained by a community developer, so test it before you rely on it.
5. Init: one CVS search endpoint

Init's CVS API is a published project on a general API-building platform: one endpoint, Search CVS Products, that takes a query and an optional category and returns a products array with an as_of timestamp. Its FAQ lists name, price, SKU, image, product URL and rating; no store parameter, stock field or coupon field is documented, and the page says it is unofficial and not affiliated with CVS. Init's pricing runs from 100 free credits a month to $17 a month for 1,000 credits ($0.01 a credit), but the CVS page does not say how many credits a call uses. Choose it for a quick product lookup in a prototype.
6. Actowiz: managed delivery

Actowiz runs CVS data collection as a managed service and delivers CSV, JSON, an API or files in S3, Snowflake and BigQuery. Its field list includes current, list and sale price, coupon_value, coupon_type, loyalty_price, in_stock and location, without saying whether location means an individual store. Plans start at $500 a month for up to 5,000 records with a weekly refresh, and $2,000 a month for 50,000 records refreshed daily; the page's FAQ gives faster refresh rates than its pricing table, so confirm before you sign. Choose it if you want a vendor to own the pipeline.
Channel3 also indexes cvs.com in a cross-retailer product search for shopping agents, with 1,000 free searches a month and paid pricing not published; its page documents no store stock or coupons.
Pick by the number you need
If your users act on whether a specific CVS has an item and what it costs after coupons, keeping those counts current is the ongoing work, and it is what Scavio's CVS API handles. Watching 200 SKUs at 50 stores every day is 10 stock calls per store, 500 credits a day and about 15,000 a month: $30 at the Growth-yearly rate of $2 per 1,000 credits, for 10,000 store counts a day. Priced per result at $5 per 1,000, the same 300,000 rows a month would be $1,500. For coupons and prices, which do not change by store, one 48-product search per query is enough: five categories, five pages each, is 25 credits a scan. Try the CVS API free, 50 credits, no card, or try the endpoints in the playground.
Reference: all 3 CVS endpoints · search docs · stock docs · product docs · how to get CVS prices and store stock · is the CVS app's stock accurate?
Frequently asked questions
Does CVS have a public API for product prices and stock?
No. The CVS Health Developer Portal offers Retail Pharmacy, Pharmacy Benefit Manager, MinuteClinic and Pharmacy Immunization APIs, and you request a developer account to see them. None of them returns cvs.com front-store prices, coupons or shelf stock. For that data you need a third-party API such as Scavio's CVS API.
Do CVS prices differ by store?
Not in our test. On November 2, 2026 all 48 toothpastes in a search cost the same at five CVS stores in New York, California, Massachusetts, Texas and Ohio, while 17 of them were out of stock at one store or more. The price an API returns is the cvs.com price; shoppers on Reddit report shelf prices that differ from it, so treat it as the online price.
Which CVS API returns store-level stock?
Scavio returns units on the shelf and units available for pickup at the store number you pass, on search and on a stock call for up to 20 SKUs. ScrapeHero's enterprise samples show a stock quantity with ZIP and store fields, and Bright Data lists stock status, store location and pickup option among its fields. The Apify actor and Init's search endpoint document no store input.
Can I get CVS ExtraBucks and coupons through an API?
Yes. Each Scavio search result lists its coupons: ExtraBucks Rewards offers with their text, and manufacturer coupons with a coupon number and expiry date. In a 48-product toothpaste search on November 2, 2026, 46 products carried at least one coupon, 147 in all. Actowiz lists coupon value and type among its delivered fields.
What is the cheapest CVS data API?
For store stock, Scavio: one stock call checks 20 SKUs at one store for 1 credit, about $0.002 on the Growth plan billed yearly. Bright Data is $1.50 per 1,000 page loads, the Apify actor starts at $5.00 per 1,000 results, Actowiz starts at $500 a month and ScrapeHero quotes enterprise pricing on request.