Partly. The CVS app's "in stock" label is the store's own count of an item, and you can read that count directly. Scavio's CVS API takes a store number and returns, for each product, the units on the shelf (in_store) and the units you can order for pickup there (pickup), up to 20 SKUs per /api/v1/cvs/stock call. A single unit is the usual reason an item reads in stock but not for pickup. Each call costs 1 credit, about $0.002 on the Growth plan billed yearly, and needs no CVS account.
The question is a common one. On r/CVS, a customer looking for a Hello Kitty tumbler asked whether the app is accurate: it had been "saying in stock for the past two weeks" but the item was nowhere in the store, and it showed in stock yet unavailable for pickup at the same time. The thread has 13 comments, and it is the first Reddit result Google shows for that complaint. Store employees make the same point from the other side in another r/CVS thread (47 points, 18 comments): the website listing an item does not mean the store has it.
What the count can and cannot tell you
The number is CVS's system count for that store. It cannot see stock that has arrived but is not yet on the shelf, or units that were stolen or miscounted, so a shelf can be empty while the count says 3. What the count does tell you is which store to try first, and that is where reading it for several stores at once pays off.
Step 1: Find the store numbers
Every CVS store page on cvs.com ends in its number, for example storeid=7019 for 150 East 42nd St in New York. Scavio has no store locator, so collect the numbers for the stores you care about.
Step 2: Check the items at each store
curl -s https://api.scavio.dev/api/v1/cvs/stock \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"store_id": "1889", "sku_ids": ["832677", "275748", "789787", "585539", "275752"]}'Item ids (sku_id) come from a search result or from the number after prodid- in a cvs.com product URL. Store 1889 in Brighton, Massachusetts answered in under a second (the full call used 20 SKUs); these five rows are as captured on November 2, 2026:
[
{ "sku_id": "832677", "in_store": 0, "pickup": 0, "same_day_delivery": null, "ship": 8151, "ship_available": true },
{ "sku_id": "275748", "in_store": 20, "pickup": 20, "same_day_delivery": null, "ship": 7969, "ship_available": true },
{ "sku_id": "789787", "in_store": 10, "pickup": 10, "same_day_delivery": null, "ship": 0, "ship_available": false },
{ "sku_id": "585539", "in_store": 1, "pickup": 0, "same_day_delivery": null, "ship": 4467, "ship_available": true },
{ "sku_id": "275752", "in_store": 3, "pickup": 1, "same_day_delivery": null, "ship": 2744, "ship_available": true }
]SKU 585539, a Colgate Total toothpaste, is the Reddit situation exactly: one unit counted in the store, zero available to order for pickup. ship is the online warehouse, the same at every store, so a product can be unavailable to ship (789787 here) and still sit on a store shelf.
Step 3: Read it across stores
We ran a 48-product "toothpaste" search at five stores, one call each: New York, Palm Springs, Brighton, Argyle in Texas and Lakewood in Ohio. Of the 240 product-at-store counts:
- In stock but not for pickup always meant one unit. 19 items had exactly one unit on the shelf, and 13 of those showed zero for pickup. No item with two or more units on the shelf was unavailable for pickup.
- Pickup usually trails the shelf. Pickup was lower than the shelf count on 102 of 240, by a single unit on 97 of them.
- Another store often has it. 17 of the 48 products were out of stock at one store or more while another had them. Colgate Optic White Advanced in Sparkling White was at 0 in New York and 12 in Lakewood, at the same price everywhere.
- All zeros means check the store. Store 17064 in Federal Way, Washington, a CVS pharmacy inside a Target, returned 0 for all 48 products. A wrong store number reads the same way, so do not report a sell-out until you have checked it.
Treat 1 unit as "probably not there" and a count of 3 or more as worth the trip, and check the next store when yours shows 0. The full five-store chart is in the best CVS product data APIs.
What it costs
A shopping-list checker that looks at 20 items across the 5 stores nearest a user is 5 stock calls, 5 credits, about $0.01 on the Growth plan billed yearly. A restock alert watching 100 items at 10 stores every hour is 50 calls an hour, about 36,000 credits a month: $72 at the Growth-yearly rate. Searches return the same shelf and pickup counts plus price and coupons, so a 48-product search per store is the cheaper way to scan a whole category.
Try the CVS API free, 50 credits, no card, or run a stock check in the playground.
Reference: CVS API overview · stock docs · search docs · how to get CVS prices and store stock
Frequently asked questions
Why does the CVS app say in stock but unavailable for pickup?
Because the store's count for that item is low. In our November 2, 2026 check of 48 toothpastes at five stores, 19 items had exactly one unit on the shelf and 13 of those showed zero units for pickup. Every in-stock item with no pickup units was a single-unit item.
Can I check what other CVS stores have in stock?
Yes, one store at a time on cvs.com, or many at once through an API. Scavio's /api/v1/cvs/stock takes a store number and up to 20 SKUs and returns units on the shelf and for pickup for each; call it once per store. You need each store's number from its cvs.com page.
How accurate is CVS inventory?
It is the store's system count, so it is only as good as that count. Replies on r/CVS point to counts thrown off by theft and to stock that goes out when staff have time. Any app or API that reads CVS stock inherits those limits, Scavio included; the count tells you where to look first, not a guarantee.
Does this work for prescriptions?
No. Scavio's CVS API covers front-store products such as health, beauty, personal care and household items. Prescription availability is a pharmacy question, which CVS handles through its own pharmacy tools and the CVS Health Developer Portal's Retail Pharmacy APIs for approved developers.