Online pharmacy digital shelf

Measure your product visibility in categories and search results. Position = conversion.

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 E-commerce Business Intelligence

The problem

In e-commerce, listing position drives conversion. A product on page 2 is invisible.

You have no visibility on how your products rank at your distributors.

You can't measure the impact of your trade investments, nor catch a position drop before it hits sales. Your competitors optimize their digital shelf while you're flying blind.

How it works

The rank.position field gives the product's rank in its category or search result.

# Analyze rank positions
import requests

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

for s in response.json()["data"]:
    if s.get("rank"):
        print(f"{s['store']}: position {s['rank']['position']} (page {s['rank']['page']})")
curl -X GET "https://api.rxradar.xyz/v1/snapshots?gtin=0020714002527" \
  -H "Authorization: Bearer YOUR_API_KEY"
// Analyze rank positions
const response = await fetch(
  "https://api.rxradar.xyz/v1/snapshots?gtin=0020714002527",
  { headers: { "Authorization": "Bearer YOUR_API_KEY" } }
);

const { data } = await response.json();
data.filter(s => s.rank)
    .forEach(s => console.log(`${s.store}: position ${s.rank.position} (page ${s.rank.page})`));
Response
{
  "gtin": "0020714002527",
  "network": null,
  "days": 7,
  "data": [
    {
      "id": 98765,
      "product_id": 12345,
      "gtin": "0020714002527",
      "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
  ],
  "total": 28,
  "page": 1,
  "per_page": 50,
  "pages": 1
}

Endpoint: GET /v1/snapshots | Full documentation →

Comparison

RxRadar Manual checks SEO tools Generic tools
Position tracking Automated Tedious Google only Variable
E-pharma coverage 50+ networks Limited Not specialized Not specialized
Position history Yes No Yes Variable
REST API Yes No Yes Variable
Pharma-specific Yes Yes No No
Setup 1 hour Ongoing Variable Configuration

FAQ

How is rank calculated?
Rank is the product's position in the category or search result where it was collected. Position 1 = first product displayed.
Can I track rank over time?
Yes — the /v1/products/{id}/snapshots endpoint returns the history. Plot position over time from those snapshots.
Do all stores expose a rank?
No — rank is only available for stores where we collect category data. The field is null when unavailable.

Ready to integrate?

Request API access and test it on your own products.

Request access