Surveillance des prix en pharmacie : construire des données à la manière de GoodRx de la bonne façon

Les prix des médicaments aux États-Unis varient considérablement selon la pharmacie, le code postal et la carte de réduction — et des outils publics les exposent déjà. Voici comment collecter ces données à grande échelle, où se trouvent les ensembles de données officiels, et comment rester du côté conforme dans un domaine sensible.

Les prix des prescriptions aux États-Unis sont notoirement chaotiques : le même médicament peut coûter des montants très différents selon la pharmacie, le code postal et la carte de réduction que vous présentez au comptoir. Cette variance est précisément la raison pour laquelle les outils de transparence des prix existent et pourquoi les données sous-jacentes sont précieuses pour la recherche, les sites de comparaison et l'analyse de marché. C'est aussi un domaine sensible, donc la bonne façon de les collecter est d'abord la conformité — uniquement des données de prix publiques et non personnelles. Ce guide couvre ce qui rend les données dignes d'être surveillées, où se trouvent les sources officielles, comment capturer les écarts géographiques à grande échelle, et où se situe la limite. C'est une information pratique, pas un conseil juridique ou médical.

Pourquoi les données valent la peine d'être collectées

Les écarts sont énormes. Une analyse de RAND des données de 2022 a révélé que les prix américains pour tous les médicaments étaient de 278 % des prix dans 33 pays de comparaison — et pour les médicaments de marque d'origine, 422 %. Les génériques dérogent à la tendance : les génériques non marqués américains, qui représentent environ 90 % du volume des prescriptions américaines, étaient en fait moins chers à 67 % des prix des autres pays. Même aux États-Unis, les outils de réduction comparent les prix dans plus de 70 000 pharmacies et annoncent des économies allant jusqu'à 80 %. Cette combinaison — énormes écarts entre pays, et énormes variances au sein du pays — est ce qui rend la surveillance systématique des prix utile, que vous construisiez un service de comparaison, suiviez un marché ou recherchiez l'accessibilité.

Commencez par les ensembles de données officiels

Avant de scraper quoi que ce soit, vérifiez si les données sont déjà publiées. Beaucoup le sont. Medicaid publie le National Average Drug Acquisition Cost (NADAC) comme un ensemble de données ouvert, mis à jour chaque semaine — coûts d'acquisition en pharmacie par médicament, pas besoin de scraping. Plusieurs États gèrent leurs propres outils de transparence ; celui de la Floride, par exemple, vous permet de comparer les prix de détail pour les 400 médicaments les plus prescrits par comté. Les sources gouvernementales et académiques (RAND, ASPE) publient les comparaisons entre pays. Extraire des données structurées d'une API officielle est plus rapide, plus propre et moins risqué que de scraper un site consommateur — épuisez toujours cela en premier.

import requests

# NADAC is an open Medicaid dataset -- query it directly, no scraping
r = requests.get(
    "https://data.medicaid.gov/api/1/datastore/query/<dataset-id>/0",
    params={"limit": 500, "offset": 0},
    timeout=30,
)
rows = r.json().get("results", [])
for row in rows[:5]:
    print(row["ndc_description"], row["nadac_per_unit"], row["effective_date"])
Diagramme statistique des écarts de prix des médicaments sur ordonnance aux États-Unis : 278 % des prix de l'OCDE pour tous les médicaments, 422 % pour les marques, plus de 70 000 pharmacies, génériques moins chers à 67 %
Les écarts de prix sont la raison pour laquelle les données sont importantes : les médicaments de marque américains étaient à 422 % des prix des autres pays, tandis que les génériques étaient moins chers.

Capturez l'écart géographique

Le signal intéressant dans les outils de prix consommateurs est local : les prix en espèces et avec réduction pour un médicament changent par code postal, car la concurrence entre pharmacies et les tarifs négociés diffèrent selon la région. Pour capturer cet écart, vous interrogez une page de prix publique pour le même médicament dans un ensemble de codes postaux, et — puisque ces outils personnalisent par la localisation du visiteur — vous routez chaque requête par une sortie résidentielle dans la région correspondante pour voir les prix locaux, pas un prix par défaut. Le résultat est une matrice de prix par code postal par médicament : quelles pharmacies sont les moins chères où, et quelle est l'étendue de l'écart.

import requests, time, random

PROXY = "http://USER:PASS@gate.quantumproxies.io:8000"
proxies = {"http": PROXY, "https": PROXY}

def cash_prices(drug, zip_code):
    r = requests.get(f"https://example-rx.com/{drug}",
                     params={"zip": zip_code}, proxies=proxies, timeout=20)
    time.sleep(random.uniform(2, 4))          # polite pacing
    return parse_prices(r.text)               # [{pharmacy, price}, ...]

zips = ["10001", "33101", "90001", "60601"]   # NY, Miami, LA, Chicago
for z in zips:
    rows = cash_prices("atorvastatin-20mg", z)
    best = min(rows, key=lambda x: x["price"])
    print(z, best["pharmacy"], best["price"])

La précision géographique est tout l'intérêt, donc une pool résidentielle avec ciblage par ville et pays à travers plus de 200 emplacements est ce qui rend la surveillance par code postal réelle. C'est la même approche axée sur la localisation derrière l'intelligence des prix de livraison et d'épicerie.

Il y a un deuxième axe à capturer : l'écart du payeur. Le même médicament a un prix en espèces, un prix avec carte de réduction et, séparément, ce que l'assurance négocie — et le moins cher de ceux-ci n'est souvent pas celui qu'un patient suppose. Parce que les outils de réduction affichent les prix en espèces et les prix avec coupon côte à côte, un moniteur peut enregistrer les deux par pharmacie et signaler où le prix avec réduction sous-coupe le prix de liste par la plus large marge. Capturez une image à intervalles réguliers et vous voyez aussi les prix évoluer au fil du temps, ce qui est là où l'analyse devient intéressante : changements saisonniers, nouveaux génériques entrant sur le marché, et pharmacies réévaluant en réponse aux concurrents dans la rue. Stockez le médicament, le dosage, la forme, la pharmacie, le code postal, le type de prix et un horodatage sur chaque ligne pour que l'ensemble de données reste propre et interrogeable.

Obtenez des proxies résidentiels géo-ciblés

Gérez le rendu et les murs

Les sites de prix consommateurs ont tendance à rendre les résultats avec JavaScript et à se défendre contre les bots, car leur tarification est leur produit. Une requête brute renvoie souvent une coquille vide, et un sondage intensif depuis une IP est mis au défi. La rotation des IP résidentielles plus un rythme poli maintient un moniteur en fonctionnement ; lorsqu'un site rend côté client ou lance des défis persistants, une Scraper API qui rend la page et renvoie des données structurées est le chemin le plus propre. Gardez le taux de requêtes doux quoi qu'il arrive — ce sont des services liés à la santé, et être un bon citoyen du site fait partie de faire cela de manière responsable.

Diagramme de checklist de collecte conforme de données de prix en pharmacie : collectez les prix en espèces publics et les ensembles de données officiels, évitez les dossiers de patients et les données personnelles
Tracez la ligne clairement : les prix annoncés publiquement et les ensembles de données officiels sont du jeu équitable ; les dossiers de patients et toute donnée personnelle ne le sont pas.

La ligne de conformité

C'est là que la discipline compte plus que dans le scraping ordinaire des prix. Collectez les prix en espèces et avec réduction annoncés, les noms et emplacements des pharmacies, les noms et dosages des médicaments, et les ensembles de données publics officiels — toutes des informations non personnelles, affichées publiquement. Ne touchez pas aux dossiers de patients, prescriptions, assurances ou données de réclamations, tout ce qui est derrière un login, ou toute information de santé liée à un individu — ce sont des données personnelles selon des lois comme le RGPD et peuvent être des données de santé sensibles en plus. Gardez votre ensemble de données sur les prix et les pharmacies, agrégés plutôt que de suivre des individus, et vous restez bien à l'intérieur de la ligne. Notre guide sur le RGPD et le scraping de données personnelles couvre le raisonnement en détail.

Questions fréquemment posées

Pouvez-vous scraper les prix des médicaments sur ordonnance ?

Les prix en espèces et avec réduction annoncés publiquement sur les sites de comparaison et de pharmacie peuvent être collectés, et une grande partie des données de référence est publiée sous forme d'ensembles de données ouverts officiels. Les limites importantes sont dictées par la conformité : restez sur les données de prix publiques et non personnelles, évitez tout ce qui est derrière un login, et ne collectez jamais d'informations sur la santé ou les patients concernant des individus.

Où puis-je obtenir des données officielles sur les prix des médicaments ?

Medicaid publie NADAC, un ensemble de données hebdomadaire ouvert des coûts d'acquisition en pharmacie, interrogeable via son API de données. Plusieurs États gèrent des outils de transparence des prix — celui de la Floride couvre les 400 médicaments les plus prescrits par comté. RAND et ASPE publient des comparaisons entre pays. Commencez par ces sources officielles avant de scraper tout site consommateur ; elles sont plus propres et moins risquées.

Pourquoi les prix des médicaments varient-ils selon la localisation ?

Les prix en espèces et avec réduction reflètent la concurrence locale entre pharmacies et les tarifs négociés, qui diffèrent selon la région, donc le même médicament coûte des montants différents selon le code postal. Les outils consommateurs personnalisent également les résultats en fonction de la localisation du visiteur. Pour capturer le véritable écart, interrogez plusieurs codes postaux et routez chaque requête par une sortie résidentielle dans la région correspondante en utilisant des proxies géo-ciblés.

Ai-je besoin de proxies pour la surveillance des prix en pharmacie ?

Pour une précision géographique par code postal, oui — vous avez besoin de sorties dans les régions que vous évaluez, ce qui signifie des proxies résidentiels géo-ciblés. Ils répartissent également les requêtes pour que la surveillance programmée depuis une adresse ne soit pas bloquée. Les ensembles de données officiels comme NADAC n'ont pas besoin de proxies du tout, alors extrayez-les directement et réservez les proxies pour les données géographiques des sites consommateurs.

Les données de prix en pharmacie sont précieuses précisément parce qu'elles sont si variables — 278 % d'écarts entre pays, de larges écarts par code postal, plus de 70 000 pharmacies fixant des prix différemment. Construisez le pipeline de la bonne manière : épuisez d'abord les ensembles de données officiels, capturez les écarts géographiques avec des proxies résidentiels ciblés par localisation, rendez les sites protégés avec une Scraper API, et tracez une ligne stricte sur les prix publics sans données personnelles. Faites cela et vous obtenez un ensemble de données de surveillance des prix propre et défendable dans un domaine où la conformité est tout.

Commencez la surveillance des prix avec QuantumProxies