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ètre | Type | Requis | Description | Exemple |
|---|---|---|---|---|
| search | string | – | Recherche plein texte | amoxicillin |
| firma | string | – | Nom exact de l’entreprise | Sandoz Pharmaceuticals AG |
| atc | string | – | Préfixe code ATC | C09 |
| status | string | – | Codes 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 |
| mutatedSince | string | – | Uniquement 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 |
| reportedSince | string | – | Uniquement 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 |
| page | integer | – | Numéro de page (défaut: 1) | 2 |
| perPage | integer | – | Entrées par page (défaut: 200, max: 200) | 200 |
| sort | string | – | champ:asc ou champ:desc | tage:desc |
| lang | string | Pro | Langue (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ètre | Type | Requis | Description |
|---|---|---|---|
| weeks | integer | – | Semaines 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>in=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
| Code | Signification |
|---|---|
| 1 | actuellement pas de livraisons |
| 2 | pénurie annoncée |
| 3 | quota de livraisons |
| 4 | livrable pour hôpitaux, pas pour retail |
| 5 | livrable pour hôpitaux, quota pour retail |
| 6 | quota pour hôpitaux, pas de livraisons en retail |
| 7 | enregistré mais plus en vente |
| 8 | hors commerce (également signalé via Trade = AH) |
| 9 | pénurie terminée |
| 10 | approvisionnement par la réserve obligatoire |
| 11 | grossiste 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.
