API Integration

API v1 · public

drugshortage.ch API

Accès direct et structuré à toutes les pénuries de médicaments en Suisse. Données réelles, mises à jour quotidiennement, bilingue DE/FR. Pas de scraping – API REST propre avec rate limiting.

BASE URL drugshortage.ch/api/v1/drugshortage.php?endpoint=
💰
Accès & Tarifs
⚠️ Veuillez accepter les conditions d’utilisation.
Free
CHF 0
100 req/jour · sans clé
  • Tous les endpoints de base
  • JSON · pagination
Essayer l’API →
Pro
CHF 79/mois
50’000 req/jour · clé API
  • Tout de Basic
  • Français (lang=fr)
  • Export CSV
  • Webhooks
Enterprise
Sur demande
Illimité · dédié
  • Tout de Pro
  • SLA · White-Label
  • Support direct
Demander →
🔑
Authentification
bash
# Avec clé API (Bearer Token)
curl -H "Authorization: Bearer VOTRE_CLE_API"   "https://www.drugshortage.ch/api/v1/drugshortage.php?endpoint=shortages"

# Alternativement en paramètre
curl "https://www.drugshortage.ch/api/v1/drugshortage.php?endpoint=shortages&api_key=VOTRE_CLE"

# En-têtes de réponse
X-RateLimit-Limit:     5000
X-RateLimit-Remaining: 4847
X-Api-Tier:           basic
Endpoints
GET shortages Liste paginée de toutes les pénuries
ParamètreTypeRequisDescriptionExemple
searchstringRecherche plein texteamoxicillin
firmastringNom exact de l’entrepriseSandoz Pharmaceuticals AG
atcstringPréfixe code ATCC09
statusstringCodes statut 1–11, séparés par virgule. Sans paramètre, l’ensemble des données est retourné – y compris les entrées terminées (9), plus en vente (7) et hors commerce (8 ou Trade = AH). Avec le paramètre, le filtrage porte exactement sur ces codes (status=8 inclut aussi Trade = AH). Pour chaque entrée, les champs isActive et isAusserHandel indiquent l’état réel.1,2
mutatedSincestringUniquement les entrées dont la dernière mutation est >= à la date (format ISO YYYY-MM-DD). Idéal pour les synchronisations incrémentales.2026-05-01
reportedSincestringUniquement les entrées dont la première annonce est >= à la date (format ISO YYYY-MM-DD). Pour suivre les nouvelles entrées.2026-05-01
pageintegerNuméro de page (défaut: 1)2
perPageintegerEntrées par page (défaut: 200, max: 200)200
sortstringchamp:asc ou champ:desc. Champs autorisés : bezeichnung, firma, atc, tage, lieferdatum, datumLetzteMutationdatumLetzteMutation:desc
langstringProLangue (de/fr)fr
bash
curl "...?endpoint=shortages&atc=C09&perPage=3"

{
  "data": [{
    "id": 4821, "gtin": "7680654320016",
    "bezeichnung": "Olmesartan Mepha Lactab 20 mg",
    "firma": "Mepha Pharma AG", "atcCode": "C09CA08",
    "statusCode": 1, "statusText": "1 actuellement pas de livraisons",
    "isActive": true, "isAusserHandel": false, "trade": null,
    "lieferfaehigkeitDate": "15.07.2026",
    "ersteMeldungDate": "20.04.2026",
    "ersteInfoFirmaDate": "20.04.2026",
    "dauer": "langer Engpass (> 6 Wochen)",
    "datumLetzteMutation": "05.05.2026",
    "datumLetzteMutation2": "2026-05-05T00:00:00+02:00",
    "isBwl": true, "bewertung": 1
  }],
  "total": 1180, "page": 1, "perPage": 3, "pages": 394
}
Le rapport de base (sans status=) contient désormais toutes les annonces. Pour n’obtenir que les pénuries en cours, filtrez côté client sur isActive: true ou demandez explicitement les codes de statut actifs (p. ex. status=1,2,3,4,5,6,10,11). Le champ datumLetzteMutation2 fournit la date de mutation au format ISO-8601 avec décalage horaire (DateTimeOffset) ; datumLetzteMutation reste au format texte habituel.
GET shortages/{gtin} Toutes les annonces pour un GTIN
bash
curl "...?endpoint=shortages/7680654320016"

{ "data": [ { ... }, { ... } ], "count": 2, "meta": { ... } }
Un GTIN peut avoir plusieurs annonces (avec des statuts différents). data est donc un tableau de toutes les annonces du GTIN, trié par dernière mutation (la plus récente d’abord), et count en indique le nombre. Toutes les annonces sont retournées, y compris terminées/hors commerce.
GET stats Indicateurs agrégés de la situation

Porte volontairement uniquement sur les pénuries actives (les entrées terminées/plus en vente/hors commerce sont exclues), afin que les indicateurs reflètent la situation actuelle.

bash
curl "...?endpoint=stats"

{ "data": { "active": 719, "uniqueAtcGroups": 294,
  "avgDaysSinceMeldung": 178.8, "regulatory": { "bwl": 133, "who": 214 },
  "topAtcGroups": [{ "atc": "N05", "count": 63 }, ...] } }
GET timeline Série temporelle hebdomadaire
ParamètreTypeRequisDescription
weeksintegerSemaines en arrière (4–260, défaut: 52)
GET supply Pénuries d’approvisionnement par principe actif exclusif drugshortage.ch

Principes actifs/dosages dont 50–100% des préparations ne sont pas livrables. Endpoint exclusif à drugshortage.ch.

bash
curl "...?endpoint=supply"
GET alternatives?gtin= Alternatives disponibles pour un produit

Affiche uniquement les alternatives réellement disponibles. Sont exclues les préparations elles-mêmes en pénurie, désenregistrées/plus en vente, hors commerce (Trade = AH) ainsi que les produits hospitaliers/d’importation. Avec lang=fr, les désignations françaises (NomF) sont retournées.

bash
curl "...?endpoint=alternatives&gtin=7680654320016"

{ "gtin": "7680654320016",
  "gleicheFirma": [], "coMarketing": [...], "alleAlternativen": [...] }
GET company/{firma} Profil entreprise avec évaluation
bash
curl "...?endpoint=company/Sandoz%20Pharmaceuticals%20AG"
GET export/csv Export CSV filtré (pénuries actives) Pro+

L’export CSV fournit la vue active (sans les entrées terminées/hors commerce). Pour l’ensemble complet des données, utilisez l’endpoint shortages.

python
import pandas as pd
df = pd.read_csv("...?endpoint=export/csv&atc=N06", encoding="utf-8-sig")
GET health Vérification de l’état du système
json
{ "status": "healthy", "database": { "healthy": true, "latencyMs": 1.1 } }
🏷️
Codes de statut
CodeSignification
1actuellement pas de livraisons
2pénurie annoncée
3quota de livraisons
4livrable pour hôpitaux, pas pour retail
5livrable pour hôpitaux, quota pour retail
6quota pour hôpitaux, pas de livraisons en retail
7enregistré mais plus en vente
8hors commerce (également signalé via Trade = AH)
9pénurie terminée
10approvisionnement par la réserve obligatoire
11grossiste limité, achat direct auprès de l’entreprise
Le rapport de base shortages retourne par défaut tous les statuts. Pour n’en obtenir qu’une partie, filtrez avec status= : pénuries terminées avec status=9, produits plus en vente avec status=7, hors commerce avec status=8 (retourne aussi bien le statut 8 que Trade = AH, le marquage permanent ; le statut 8 n’est qu’une solution transitoire). L’état d’une entrée individuelle se lit de manière fiable dans les champs statusCode, isActive et isAusserHandel.
📡
Codes de statut HTTP
200 Succès
400 Paramètres invalides
401 Clé API invalide
404 Non trouvé
429 Limite dépassée
500 Erreur serveur

Des questions sur l’API?

Nous vous aidons volontiers pour l’intégration.

Nous contacter →