Documentation-API

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=
🔑
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, les codes 9 (terminé), 7 (plus en vente) et 8 (hors commerce, ainsi que Trade = AH) sont masqués ; avec le paramètre, exactement ces codes sont retournés (status=8 inclut aussi Trade = AH).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:desctage: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",
    "lieferfaehigkeitDate": "15.07.2026",
    "ersteMeldungDate": "20.04.2026",
    "ersteInfoFirmaDate": "20.04.2026",
    "dauer": "langer Engpass (> 6 Wochen)",
    "datumLetzteMutation": "05.05.2026",
    "isBwl": true, "bewertung": 1
  }],
  "total": 55, "page": 1, "perPage": 3, "pages": 19
}
GET shortages/{gtin} Produit individuel par GTIN
bash
curl "...?endpoint=shortages/7680654320016"
GET stats Indicateurs agrégés de la situation
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 pour un produit
bash
curl "...?endpoint=alternatives&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é Pro+
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
Veuillez ne pas déduire l’état « terminé » de l’absence d’une entrée dans la liste standard. Une entrée peut être absente pour plusieurs raisons (p. ex. code 7, 8 ou 9, ou hors commerce via Trade = AH). Interrogez les pénuries terminées avec status=9, les produits qui ne sont plus en vente avec status=7. Les produits hors commerce s’obtiennent avec status=8 – ceci retourne aussi bien les entrées avec statut 8 que celles avec Trade = AH (le marquage permanent ; le statut 8 ne sert que de solution transitoire).
📡
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 →