Scraping des données de santé publiques : guide conforme pour l'intelligence pharmaceutique

Apprenez à scraper les prix des médicaments, les bases FDA et les répertoires publics avec des proxys résidentiels, tout en respectant strictement les limites HIPAA et la réglementation étatique.

Scraping des données de santé publiques : guide conforme pour l'intelligence pharmaceutique

Pourquoi les équipes pharma ont besoin de données de santé publiques

Les équipes d'accès au marché, d'analyse des payeurs et d'intelligence pharmaceutique passent des heures à compiler manuellement des prix de médicaments, des données d'essais cliniques et des répertoires de fournisseurs. Les sources sont fragmentées, les formats incohérents et de nombreux sites bloquent les requêtes automatisées. Si vous tentez de scraper les prix des médicaments sur GoodRx ou les sites de transparence tarifaire des États, vous rencontrez des CAPTCHAs, des blocages IP et des limites de débit agressives.

Ce guide explique comment collecter uniquement des données publiques — prix des médicaments, bases de données réglementaires, essais cliniques ouverts et répertoires de fournisseurs — en utilisant des proxys de données de santé résidentiels, tout en restant strictement dans les limites HIPAA et la réglementation applicable.

Règle absolue : Ne scrapez jamais de données identifiables sur les patients. Ce guide se limite exclusivement aux données publiquement accessibles — prix, registres réglementaires, répertoires professionnels et résultats d'essais cliniques ouverts.

Sources de données de santé publiques : vue d'ensemble

L'écosystème des données de santé publiques est vaste mais dispersé. Voici les principales sources utilisées par les équipes d'intelligence pharmaceutique :

GoodRx — Prix des médicaments au détail

GoodRx agrège les prix de détail et les coupons de réduction pour des milliers de médicaments dans des pharmacies américaines. Les données sont publiquement visibles mais le site déploie des protections anti-bot agressives — JavaScript challenges, CAPTCHAs et blocages IP. Les prix varient par code postal, ce qui rend le géo-ciblage essentiel.

Bases de données FDA — Approbations et étiquetages

La FDA propose plusieurs points d'accès publics : Drugs@FDA pour les approbations, le répertoire NDC pour les codes produits, et DailyMed pour les étiquetages. Ces bases sont accessibles via API et scraping mais imposent des limites de débit.

ClinicalTrials.gov — Paysage des essais cliniques

Le NIH héberge le registre public des essais cliniques avec plus de 400 000 études dans 220 pays. L'API v2 est bien documentée, mais le scraping des pages détaillées permet d'extraire des données que l'API ne retourne pas toujours — statuts de recrutement par site, critères d'inclusion détaillés, résultats intermédiaires.

CMS Open Data — Données de remboursement Medicare/Medicaid

Les ensembles de données CMS couvrent les paiements Medicare Part D, les factures hospitalières et l'utilisation des médicaments. Le CMS Data Portal propose des API mais les téléchargements en masse sont lents et les données nécessitent un nettoyage important.

NPPES NPI — Répertoire national des fournisseurs

Le NPPES fournit des informations publiques sur les prestataires de santé : noms, spécialités, adresses professionnelles et identifiants NPI. Essentiel pour la validation des répertoires de fournisseurs et l'analyse du réseau de soins.

SourceType de donnéesAccèsAnti-botVariation géo
GoodRxPrix de détail, couponsScraping webAggressifOui (code postal)
Drugs@FDAApprobations, étiquetagesAPI + webModéréNon
ClinicalTrials.govEssais cliniquesAPI v2 + webFaiblePar site investigateur
CMS Open DataRemboursements, utilisationAPI + CSVFaibleOui (État/région)
NPPES NPIRépertoire fournisseursAPI + webModéréNon

Pourquoi les proxys résidentiels sont indispensables

Les sites de prix de médicaments comme GoodRx et les portails de transparence tarifaire de certains États déploient des systèmes anti-bot avancés. Les IP de datacenter sont bloquées quasi instantanément. Voici pourquoi les proxys de données de santé résidentiels sont nécessaires :

  • GoodRx utilise Cloudflare avec challenges JavaScript et CAPTCHAs. Les requêtes depuis des IP de datacenter renvoient des 403 ou des pages de challenge. Les IP résidentielles contournent ces défenses car elles ressemblent au trafic de vrais consommateurs comparant les prix.
  • Portails de transparence étatiques — Plusieurs États (Colorado, Texas, Washington) publient des bases de prix hospitalières conformément à la règle de transparence des prix du CMS. Ces sites utilisent souvent WAF et limites de débit qui bloquent les requêtes automatisées.
  • Limites de débit — Même les sources sans anti-bot agressif (APIs FDA, NPPES) imposent des limites de requêtes. La rotation d'IP résidentielles permet de répartir la charge et d'éviter les throttling.

Les proxys de datacenter fonctionnent pour les APIs bienveillantes (ClinicalTrials.gov, CMS CSV). Mais dès que vous interagissez avec des interfaces web commerciales, les IP résidentielles deviennent obligatoires.

Géo-ciblage : les prix des médicaments varient par région

Les prix GoodRx pour un même médicament peuvent différer de 20 à 40 % entre deux codes postaux. Les données de remboursement CMS varient par région. Pour capturer cette variation, votre infrastructure de scraping d'intelligence pharmaceutique doit pouvoir cibler des localisations spécifiques.

Avec ProxyHat, le géo-ciblage se configure directement dans le nom d'utilisateur :

  • Pays : user-country-US:pass
  • État : user-country-US-state-tx:pass
  • Ville : user-country-US-city-dallas:pass

Pour un benchmark de prix GoodRx à travers les 50 États, vous pouvez itérer sur chaque code d'État et collecter les prix dans chaque marché — une tâche impossible avec une IP unique.

Architecture : du scraping à l'entrepôt de données analytique

Un pipeline de données pharmaceutiques complet suit quatre étapes :

1. Collecte (Scraping)

Des workers asynchrones extraient les données des sources publiques via des proxys résidentielles rotatives. Chaque source nécessite son propre module — sélecteurs CSS pour GoodRx, appels API pour ClinicalTrials.gov, pagination pour NPPES.

2. Normalisation

Les données brutes sont incohérentes : les noms de médicaments varient (marque vs générique vs DCI), les formats de prix diffèrent, les codes NDC changent avec les conditionnements. La normalisation mappe tout vers un schéma commun — par exemple en utilisant RxNorm comme référence de nomenclature.

3. ETL vers l'entrepôt de données

Les données normalisées sont chargées dans un entrepôt analytique (BigQuery, Snowflake, Redshift) avec des dimensions temporelles pour le suivi historique des prix et des statuts d'essais.

4. Analyse et visualisation

Les équipes d'accès au marché construisent des tableaux de bord — écarts de prix régionaux, paysage concurrentiel des essais cliniques, couverture des répertoires de fournisseurs.

Voici un exemple concret de scraping GoodRx avec géo-ciblage par État :

import requests
from bs4 import BeautifulSoup
import json
import time

STATES = ["tx", "ca", "ny", "fl", "il", "oh", "pa", "ga", "nc", "mi"]
DRUG_SLUG = "atorvastatin"
PROXY_BASE = "http://user-country-US-state-{state}:PASSWORD@gate.proxyhat.com:8080"

results = []

for state in STATES:
    proxy_url = PROXY_BASE.format(state=state)
    proxies = {"http": proxy_url, "https": proxy_url}
    
    url = f"https://www.goodrx.com/{DRUG_SLUG}"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
                      "AppleWebKit/537.36 (KHTML, like Gecko) "
                      "Chrome/125.0.0.0 Safari/537.36",
        "Accept": "text/html,application/xhtml+xml",
        "Accept-Language": "en-US,en;q=0.9",
    }
    
    try:
        resp = requests.get(url, proxies=proxies, headers=headers, timeout=30)
        resp.raise_for_status()
        soup = BeautifulSoup(resp.text, "html.parser")
        
        # Extraction des prix depuis les éléments de page GoodRx
        price_elements = soup.select("[data-testid='price']")
        prices = [el.get_text(strip=True) for el in price_elements]
        
        results.append({
            "state": state,
            "drug": DRUG_SLUG,
            "prices": prices,
            "scraped_at": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
        })
        print(f"{state}: {prices}")
    except requests.RequestException as e:
        print(f"{state}: erreur - {e}")
    
    time.sleep(2)  # Respect du débit

# Sauvegarde pour normalisation ultérieure
with open("goodrx_prices_raw.json", "w") as f:
    json.dump(results, f, indent=2)

Ce script itère sur 10 États, utilise une IP résidentielle ciblée pour chaque État via ProxyHat, et extrait les prix affichés. Les données brutes sont ensuite normalisées et chargées dans l'entrepôt.

Pour les sources API publiques comme ClinicalTrials.gov, un proxy de datacenter suffit généralement :

import requests

PROXY = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
proxies = {"http": PROXY, "https": PROXY}

# Recherche d'essais cliniques pour un médicament spécifique
params = {
    "query.term": "intervention:semaglutide AND STATUS:RECRUITING",
    "pageSize": 50,
    "format": "json"
}

resp = requests.get(
    "https://clinicaltrials.gov/api/v2/studies",
    params=params,
    proxies=proxies,
    timeout=30
)

trials = resp.json()
for study in trials.get("studies", []):
    nct_id = study["protocolSection"]["identificationModule"]["nctId"]
    title = study["protocolSection"]["identificationModule"]["briefTitle"]
    status = study["protocolSection"]["statusModule"]["overallStatus"]
    print(f"{nct_id} | {status} | {title}")

Conformité : les frontières HIPAA et au-delà

La conformité n'est pas optionnelle dans le secteur de la santé — elle est existentielle. Voici les principes à respecter impérativement :

Limites HIPAA strictes

La HIPAA (Health Insurance Portability and Accountability Act) protège les informations de santé protégées (PHI — Protected Health Information). Les PHI sont des données de santé identifiables liées à un individu. La règle est simple :

  • Ne scrapez jamais de données de patients identifiables — dossiers médicaux, résultats de tests, ordonnances nominatives, profils de patients sur des forums de santé.
  • Les données publiques agrégées — prix de médicaments, statistiques de remboursement anonymisées, registres de fournisseurs — ne sont pas des PHI et ne relèvent pas de la HIPAA.
  • Les données d'essais cliniques sur ClinicalTrials.gov sont publiquement déclarées par les investigateurs et ne contiennent pas de PHI.
  • Les répertoires NPI contiennent des informations professionnelles (nom, spécialité, adresse professionnelle) — ce sont des données publiques, pas des PHI.
Règle fondamentale : Si la donnée peut être rattachée à un patient spécifique, ne la scrapez pas. Limitez-vous aux données de marché, réglementaires et professionnelles publiquement accessibles.

Réglementations étatiques en matière de données de santé

Au-delà de la HIPAA, plusieurs États ont leurs propres lois :

  • CMIA (Californie) — Couvre les informations médicales au-delà du périmètre HIPAA. Les données agrégées et publiques restent exclues, mais soyez prudent avec toute donnée de santé californienne.
  • SHIELD Act (New York) — Similaire au CMIA, avec des exigences de notification en cas de breach.
  • Washington My Health My Data Act — Loi très large sur les données de santé des consommateurs. Les données de prix de médicaments publiquement accessibles sont probablement exclues, mais consultez un juriste si vous scrapez des données de santé dans cet État.

Dans tous les cas, les données que nous ciblons ici — prix publics, registres réglementaires, répertoires professionnels — sont par nature publiques et agrégées. Elles ne relèvent ni de la HIPAA ni des lois étatiques sur les données de santé. Mais documentez votre raisonnement et consultez votre équipe juridique.

Bonnes pratiques de conformité

  • Respectez robots.txt — Même si le statut légal est débattu, c'est une bonne pratique éthique et technique.
  • Limites de débit raisonnables — N'écrasez pas les serveurs. 1-2 requêtes/seconde avec des pauses est un bon compromis.
  • Ne contournez pas l'authentification — Si un site nécessite un login pour accéder à certaines données, ces données ne sont pas « publiquement accessibles » au sens de ce guide.
  • Audit trail — Journalisez chaque collecte : source, date, IP utilisée, données extraites. Essentiel pour la traçabilité réglementaire.
  • Anonymisez au plus tôt — Si des données semi-identifiantes apparaissent dans des répertoires professionnels, supprimez les éléments non nécessaires dès la collecte.

Cas d'usage concrets

Benchmarking des prix pour l'accès au marché

Les équipes d'accès au marché comparent les prix de leurs produits avec ceux des concurrents à travers les régions et les canaux. En scrapant GoodRx avec géo-ciblage, vous pouvez :

  • Identifier les écarts de prix régionaux pour un même médicament
  • Suivre l'évolution des coupons de réduction dans le temps
  • Comparer les prix de marque vs générique par marché local
  • Alimenter des modèles de tarification avec des données réelles plutôt que des estimations

Surveillance du paysage des essais cliniques

Les équipes R&D et d'intelligence concurrentielle surveillent ClinicalTrials.gov pour :

  • Détecter les nouveaux essais pour des molécules concurrentes
  • Suivre les statuts de recrutement par site investigateur
  • Analyser les critères d'inclusion/exclusion pour positionner ses propres essais
  • Identifier les investigateurs clés et les sites de recherche actifs

Validation des répertoires de fournisseurs

Les payeurs et les plans de santé valident la précision de leurs répertoires de fournisseurs en croisant les données NPPES NPI avec leurs bases internes :

  • Détection de fournisseurs inactifs ou ayant changé de spécialité
  • Vérification de la couverture géographique par spécialité
  • Identification de doublons et d'incohérences
  • Mise à jour proactive des répertoires avant la saison d'inscription

Choisir le bon type de proxy par source

SourceType de proxy recommandéRaison
GoodRxRésidentiel + géo-ciblageAnti-bot agressif + variation de prix par localisation
Portails de transparence étatiquesRésidentielWAF et limites de débit strictes
APIs FDA / ClinicalTrials.govDatacenter (rotation)Anti-bot faible mais limites de débit API
CMS Open DataDatacenterTéléchargements CSV massifs, pas d'anti-bot
NPPES NPIDatacenter (rotation)API avec limites de débit modérées

Points clés à retenir

  • Données publiques uniquement — Ne scrapez jamais de données patients identifiables. Les prix de médicaments, registres réglementaires et répertoires professionnels sont publics et conformes.
  • Proxys résidentiels pour les sites commerciaux — GoodRx et les portails de transparence étatiques bloquent les IP de datacenter. Les IP résidentielles sont indispensables.
  • Géo-ciblez vos requêtes — Les prix varient par État et code postal. Configurez le géo-ciblage dans vos identifiants proxy pour capturer cette variation.
  • Normalisez tôt, chargez souvent — Un pipeline scraping → normalisation → ETL transforme des données brutes fragmentées en insights actionnables.
  • Documentez tout — Audit trail, raisonnement de conformité, consultation juridique. La traçabilité est votre meilleure défense.
  • Respectez les limites de débit — Même avec des proxys rotatifs, maintenez des requêtes raisonnables (1-2/sec) pour préserver l'accès et l'éthique.

Prochaines étapes

Si vous construisez un pipeline d'intelligence pharmaceutique, commencez par les sources les plus accessibles — APIs ClinicalTrials.gov et CMS — puis ajoutez progressivement les sources résidentielles comme GoodRx. ProxyHat propose des plans résidentiels avec géo-ciblage par pays, État et ville, adaptés aux besoins des équipes d'accès au marché. Consultez notre cas d'usage web scraping et nos localisations de proxy pour plus de détails sur la couverture géographique.

Prêt à commencer ?

Accédez à plus de 50M d'IPs résidentielles dans plus de 148 pays avec filtrage IA.

Voir les tarifsProxies résidentiels
← Retour au Blog