Online pharmacy availability monitoring

Track stock-outs of your products across 50+ online pharmacies. React before sales are lost.

50+
networks
10K+
pharmacies
7d
max freshness

Who it's for

This API is built for technical teams at pharma brands and dermo-cosmetic manufacturers.

Data Engineers Supply Chain Trade Marketing Business Intelligence

The problem

A stock-out at an e-commerce distributor means lost sales and shoppers diverted to competitors.

Your stock-outs go unnoticed.

The time between a stock-out and its detection can stretch to weeks. Every day a stock-out goes undetected is revenue shifted to competitors and digital market share eroded.

How it works

The stock.available field tells you whether the product is in stock. Filter to detect stock-outs.

# Detect stock-outs
import requests

response = requests.get(
    "https://api.rxradar.xyz/v1/snapshots/compare",
    params={"gtin": "0020714002527"},
    headers={"Authorization": "Bearer YOUR_API_KEY"}
)

data = response.json()
out_of_stock = [s for s in data["data"] if not s["stock"]["available"]]

print(f"Out of stock on {len(out_of_stock)} sites")
for r in out_of_stock:
    print(f"- {r['store']}")
curl -X GET "https://api.rxradar.xyz/v1/snapshots/compare?gtin=0020714002527" \
  -H "Authorization: Bearer YOUR_API_KEY"
// Detect stock-outs
const response = await fetch(
  "https://api.rxradar.xyz/v1/snapshots/compare?gtin=0020714002527",
  { headers: { "Authorization": "Bearer YOUR_API_KEY" } }
);

const data = await response.json();
const outOfStock = data.data.filter(s => !s.stock.available);

console.log(`Out of stock on ${outOfStock.length} sites`);
outOfStock.forEach(r => console.log(`- ${r.store}`));
Response
{
  "gtin": "0020714002527",
  "product_name": "Clinique Take The Day Off Cleansing Balm 125 ml",
  "stats": {
    "min_price": 29.40,
    "max_price": 39.00,
    "avg_price": 33.85,
    "snapshot_count": 16
  },
  "data": [
    {
      "id": 98765,
      "product_id": 12345,
      "collected_at": "2026-05-18T14:30:00",
      "price": {
        "current": 34.00,
        "original": null,
        "range": null,
        "currency": "USD"
      },
      "stock": {
        "available": true,
        "label": "In stock"
      },
      "rating": {
        "value": 4.5,
        "count": 127
      },
      "rank": {
        "position": 3,
        "page": 1,
        "page_size": 24
      },
      "promo": null,
      "network": "cvs",
      "store": "cvs.com"
    }
    // ... more snapshots
  ]
}

Endpoint: GET /v1/snapshots/compare | Full documentation →

Comparison

RxRadar Manual checks Distributor portals Generic tools
Stock-out detection Near-real-time Lagging Variable Variable
Store coverage 50+ networks Limited 1 store Configurable
Stock history Yes No Variable Variable
REST API Yes No Rarely Variable
Pharma-specific Yes Yes Yes No
Setup 1 hour Ongoing Access required Configuration

FAQ

How do I build alerts?
The API serves raw data. Run a cron that polls the API and fires an alert whenever stock.available flips to false.
How fresh is the data?
Data is collected weekly. The collected_at field gives the exact collection timestamp for each store.
Can I get historical availability?
Yes — the /v1/products/{id}/snapshots endpoint returns the snapshot history for a given product.

Ready to integrate?

Request API access and test it on your own products.

Request access