Online pharmacy price benchmark

Track your product prices across every online pharmacy. One API call, all the data.

Who it's for

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

Data Engineers Pricing teams Trade Marketing Business Intelligence

The problem

No consolidated view of the online channel.

E-commerce now drives a meaningful and growing share of OTC and dermo-cosmetic sales. Manual price checks tie up your teams for hours every week. The data goes stale fast, and without consolidation cross-store analysis is impossible. Pricing gaps and stock-outs surface too late.

Generic price-monitoring tools don't cover online pharmacies. Pharma analytics vendors focus on physical sell-out, not the digital shelf.

How it works

One API call, all price data across every store.

# pip install requests
import requests

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

data = response.json()
print(f"Min: ${data['stats']['min_price']}")
print(f"Max: ${data['stats']['max_price']}")
print(f"Stores: {data['stats']['snapshot_count']}")
curl -X GET "https://api.rxradar.xyz/v1/snapshots/compare?gtin=0020714002527" \
  -H "Authorization: Bearer YOUR_API_KEY"
// Node.js / fetch
const response = await fetch(
  "https://api.rxradar.xyz/v1/snapshots/compare?gtin=0020714002527",
  {
    headers: {
      "Authorization": "Bearer YOUR_API_KEY"
    }
  }
);

const data = await response.json();
console.log(`Min: $${data.stats.min_price}`);
console.log(`Max: $${data.stats.max_price}`);
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,
        "has_promo": false,
        "currency": "USD"
      },
      "stock": {
        "available": true,
        "label": "In stock"
      },
      "rating": {
        "value": 4.5,
        "count": 127
      },
      "rank": {
        "position": 3,
        "page": 1,
        "page_size": 24
      },
      "promotions": [],
      "badges": [],
      "favorites_count": 342,
      "network": "cvs",
      "store": "cvs.com"
    }
    // ... 15 more snapshots
  ]
}

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

Comparison

RxRadar Manual checks Generic tools
E-commerce prices Multi-network Variable Partial
Price history Yes No Variable
Stock availability Yes Manual Rare
REST API Yes No Variable
Pharma-specific Yes Yes No
Integration time 1 hour N/A Variable

FAQ

How fresh is the data?
Data is collected weekly. The collected_at field gives the exact collection timestamp for each store.
Which online pharmacies are covered?
Stores spanning independent online pharmacies, retail chains, and major marketplaces. The exact store list is shared under NDA — request access to get a full coverage map.
How does authentication work?
Bearer token authentication. You receive an API key (format rx_xxx) that goes in the Authorization header.
Can I test before committing?
Yes. Request access and we'll set you up with sandbox credentials and sample data tailored to your catalog.

Ready to integrate?

Request API access and test it on your own products.

Request access