Online pharmacy distribution monitoring

Map your product distribution. Identify where you're sold — and where you're not.

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 Trade Marketing Sales teams Business Intelligence

The problem

You know your direct distributors.

You don't have a consolidated view of your e-commerce footprint.

Some sites resell your products without an agreement. Others delist without warning. You find out too late — once volumes have dropped or a competitor's product has taken the slot.

How it works

The /v1/products/gtin/{gtin} endpoint returns every site that lists a given product.

# List every store for an EAN
import requests

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

data = response.json()
print(f"Listed on {data['total']} sites")

for p in data["data"]:
    print(f"- {p['store']}: {p['name']}")
curl -X GET "https://api.rxradar.xyz/v1/products/gtin/0020714002527" \
  -H "Authorization: Bearer YOUR_API_KEY"
// List every store for an EAN
const response = await fetch(
  "https://api.rxradar.xyz/v1/products/gtin/0020714002527",
  { headers: { "Authorization": "Bearer YOUR_API_KEY" } }
);

const data = await response.json();
console.log(`Listed on ${data.total} sites`);
data.data.forEach(p => console.log(`- ${p.store}: ${p.name}`));
Response
{
  "gtin": "0020714002527",
  "data": [
    {
      "id": 12345,
      "gtin": "0020714002527",
      "code_alt": "2071400",
      "brand": "Clinique",
      "name": "Take The Day Off Cleansing Balm 125 ml",
      "description": "Makeup-removing cleansing balm",
      "currency": "USD",
      "url": "https://www.cvs.com/shop/clinique-take-the-day-off-cleansing-balm",
      "format": {
        "packaging": "125 ml jar",
        "quantity": "125",
        "unit": "ml"
      },
      "images": {
        "url": "https://cdn.../product.jpg",
        "gallery": null
      },
      "has_gtin": true,
      "has_variants": false,
      "has_reviews": true,
      "indexed_at": "2023-06-15T14:30:00",
      "last_collected_at": "2026-05-18T10:00:00",
      "network": "cvs",
      "store": "cvs.com",
      "latest": {
        "price": 34.00,
        "currency": "USD",
        "in_stock": true,
        "rating": 4.5
      }
    }
    // ... 15 more listings
  ],
  "total": 16,
  "page": 1,
  "per_page": 50,
  "pages": 1
}

Endpoint: GET /v1/products/gtin/{gtin} | Full documentation →

Comparison

RxRadar Manual checks Distributor portals Generic tools
E-pharma coverage 50+ networks Limited 1 store Not specialized
Consolidated view Yes Manual spreadsheet No Variable
Delisting detection Automatic Manual Rarely Variable
REST API Yes No Rarely Variable
Pharma-specific Yes Yes Yes No
Setup 1 hour Ongoing Access required Configuration

FAQ

How do I detect a delisting?
Diff consecutive snapshots. If a product disappears from a store, it's been delisted or is in a long stock-out.
Can I list all covered stores?
Yes — the /v1/stores endpoint returns the full list of online pharmacies in coverage.
Are unauthorized resellers detected?
The API gives you the exhaustive list of sites selling your products. Cross-reference it against your authorized-distributor list.

Ready to integrate?

Request API access and test it on your own products.

Request access