Documentation API
v1 — publiqueAccès libre à toutes les ruptures d'approvisionnement de médicaments en Suisse. Sans clé API, sans connexion. Merci d'utiliser de manière équitable — max. ~300 requêtes/jour recommandées.
Plus de 100 req/h ? Clés Professional dès CHF 39/mois — avec Severity Scoring et 10 000 req/jour.
Accès API & tarifs →Base URL
https://engpassradar.ch/api/v1
Toutes les réponses sont en JSON UTF-8. CORS est activé (Access-Control-Allow-Origin: *).
Endpoints
/api/v1/shortages/api/v1/shortages/:gtin/api/v1/stats/api/v1/timeline/api/alternatives/api/alternatives/batch/api/export/csv/api/health/api/v1/shortages
Renvoie une liste paginée et filtrable de toutes les ruptures signalées.
| Paramètre | Type | Requis | Description | Exemple |
|---|---|---|---|---|
| search | string | – | Recherche plein texte sur libellé, entreprise, code ATC | pregabalin |
| status | string | – | Code(s) de statut 1–5, séparés par virgule | 1,4 |
| firma | string | – | Nom exact de l'entreprise | Sandoz |
| atc | string | – | Préfixe de code ATC | C09 |
| neu | integer | – | Uniquement les ruptures ≤ 7 jours | 1 |
| page | integer | – | Numéro de page (par défaut : 1) | 2 |
| perPage | integer | – | Entrées par page (max : 200) | 100 |
| sort | string | – | champ:asc ou champ:desc | tageSeitMeldung:desc |
curl "https://engpassradar.ch/api/v1/shortages?atc=C09&status=1,4&perPage=20"
{
"data": [
{
"id": 4821,
"gtin": "7680654320016",
"bezeichnung": "Olmesartan Mepha Lactab 20 mg",
"firma": "Mepha Pharma AG",
"atcCode": "C09CA08",
"statusCode": 1,
"statusText": "Direkt gemeldet",
"tageSeitMeldung": 183,
"isActive": true,
"datumLieferfahigkeit": "31.12.2026",
...
}
],
"total": 68,
"page": 1,
"perPage": 20,
"meta": { "generatedAt": "2026-04-19T10:00:00Z", "source": "engpassradar.ch" }
}/api/v1/shortages/:gtin
Détails complets pour un produit unique, y compris Severity Score breakdown.
| Paramètre | Type | Requis | Description | Exemple |
|---|---|---|---|---|
| gtin | string | oui | GTIN du produit (7–14 chiffres), dans le chemin URL | 7680654320016 |
curl "https://engpassradar.ch/api/v1/shortages/7680654320016"
{
"data": {
"gtin": "7680654320016",
"bezeichnung": "Olmesartan Mepha Lactab 20 mg",
"firma": "Mepha Pharma AG",
"atcCode": "C09CA08",
"statusCode": 1,
"tageSeitMeldung": 183,
"isActive": true,
"isBwl": true,
"score": {
"total": 57,
"label": "Mittel",
"breakdown": {
"transparency": 5,
"duration": 22,
"noAlternatives": 15,
"critical": 15
}
},
"bemerkungen": "Engpass aufgrund erhöhter Nachfrage...",
"voraussichtlicheDauer": "Q3 2026",
...
}
}/api/v1/stats
Indicateurs agrégés sur la situation actuelle d'approvisionnement. Utiles pour tableaux de bord et monitoring.
curl "https://engpassradar.ch/api/v1/stats"
{
"data": {
"active": 705,
"uniqueAtcGroups": 148,
"avgDaysSinceMeldung": 203,
"lastUpdated": "2026-04-19T03:15:00Z",
"duration": {
"under2Weeks": 42,
"weeks2to6": 89,
"weeks6to26": 201,
"months6to12": 178,
"over1Year": 195
},
"regulatory": {
"bwl": 87,
"pflichtlager": 112,
"kassenpflichtig": 534
},
"topAtcGroups": [
{ "atc": "N02", "bezeichnung": "Analgetika", "count": 54 },
...
]
}
}/api/v1/timeline
Série temporelle hebdomadaire : nouvelles ruptures et stock actif. Idéal pour analyses de tendance.
| Paramètre | Type | Requis | Description | Exemple |
|---|---|---|---|---|
| weeks | integer | – | Nombre de semaines en arrière (4–260, par défaut : 52) | 104 |
curl "https://engpassradar.ch/api/v1/timeline?weeks=12"
{
"data": [
{ "week": "2026-W14", "newShortages": 18, "activeShortages": 712 },
{ "week": "2026-W15", "newShortages": 22, "activeShortages": 705 },
...
],
"meta": { "weeks": 12, "generatedAt": "2026-04-19T10:00:00Z" }
}/api/alternatives
Alternatives à substance active équivalente pour un produit, divisées en même entreprise, co-marketing et toutes les alternatives. Les réponses sont mises en cache 24 heures.
| Paramètre | Type | Requis | Description | Exemple |
|---|---|---|---|---|
| gtin | string | oui | GTIN du produit | 7680654320016 |
curl "https://engpassradar.ch/api/alternatives?gtin=7680654320016"
{
"gleicheFirma": [],
"coMarketing": [
{ "bezeichnung": "Olmesartan Spirig HC Lactab 20 mg", "firma": "Spirig HealthCare", "gtin": "7680591620011" }
],
"alleAlternativen": [
{ "bezeichnung": "Olmesartan Sandoz Filmtabl 20 mg", "firma": "Sandoz", "gtin": "7680630420018", "typ": "G" }
]
}/api/alternatives/batch
Recherche d'alternatives pour jusqu'à 50 GTIN en une seule requête. Nettement plus efficace que N appels individuels.
curl -X POST "https://engpassradar.ch/api/alternatives/batch" \
-H "Content-Type: application/json" \
-d '{"gtins": ["7680654320016", "7680591620011"]}'
[
{ "gtin": "7680654320016", "data": { "alleAlternativen": [...], ... } },
{ "gtin": "7680591620011", "data": null }
]data: null si aucune alternative en cache n'existe encore pour un GTIN.
/api/export/csv
Renvoie toutes les ruptures (filtrées) sous forme de fichier CSV. Importable directement dans Excel ou Python pandas.
| Paramètre | Type | Requis | Description | Exemple |
|---|---|---|---|---|
| search | string | – | Recherche plein texte sur libellé, entreprise, code ATC | pregabalin |
| status | string | – | Code(s) de statut 1–5, séparés par virgule | 1,4 |
| firma | string | – | Nom exact de l'entreprise | Novartis |
| atc | string | – | Préfixe de code ATC | N06 |
# Alle Neuropharmaka-Engpässe als CSV herunterladen
curl "https://engpassradar.ch/api/export/csv?atc=N06" -o n06-engpaesse.csv
# In Python:
import pandas as pd
df = pd.read_csv("https://engpassradar.ch/api/export/csv?atc=N06")Champs : libellé, entreprise, code ATC, statut, livrable depuis, dernière mutation, jours depuis signalement, GTIN, Pharmacode, première observation
/api/health
Vérification de santé du système. Renvoie 200 si tous les systèmes sont prêts, 503 en cas de problème.
curl "https://engpassradar.ch/api/health"
{
"status": "healthy",
"timestamp": "2026-04-19T10:00:00Z",
"database": { "healthy": true, "latencyMs": 12 },
"cache": { "entries": 84, "utilizationPercent": "42.0" }
}Codes de statut HTTP
Caching
/api/v1/shortagess-maxage: 5 minstale: 1 h/api/v1/shortages/:gtins-maxage: 5 minstale: 1 h/api/v1/statss-maxage: 5 minstale: 1 h/api/v1/timelines-maxage: 1 hstale: 24 h/api/alternativess-maxage: 1 hstale: 24 hRate limits & accès API
L'API est gratuite pour la recherche et les petites équipes. Pour les intégrations commerciales, merci de choisir un forfait qui soutient l'exploitation.
# Mit API-Key (Professional/Institutional) curl -H "Authorization: Bearer <ihr-api-key>" \ "https://engpassradar.ch/api/v1/shortages?atc=C09" # Response-Header X-RateLimit-Limit: 10000 X-RateLimit-Remaining: 9847 X-RateLimit-Reset: 1746057600 X-Api-Tier: professional
Webhooks
Les webhooks envoient une requête HTTP POST à votre URL dès qu'une nouvelle rupture est signalée ou qu'une rupture existante est résolue — sans polling, en temps réel.
shortage.createdNouvelle rupture sur la liste Swissmedicshortage.resolvedRupture marquée comme résolueshortage.updatedModification d'une rupture existante (date, statut)Les webhooks sont disponibles dans le Klinik-System
Engpassradar Pro reçoit les données via API polling. Le Klinik-System (CHF 199/mois) envoie les push events directement à votre infrastructure.
Flux RSS
/rss.xmlToutes les ruptures actuelles/wirkstoff/{atc}/feed.xmlRuptures par groupe ATC (p. ex. /wirkstoff/C09/feed.xml)Serveur MCP (Claude / Copilot / Cursor)
Le serveur MCP fournit les données engpassradar comme outils d'agent natifs — sans scraping, directement dans le workflow de Claude Desktop, GitHub Copilot ou Cursor. Des questions comme « Inhibace n'est pas livrable — quelles alternatives existent pour C09AA ? » deviennent un appel direct à la base de données.
search_shortagesRecherche plein texte par produit, principe actif ou entrepriseget_shortageProduit unique par GTIN — incl. score, prix, statut BWLfind_alternativesAlternatives pour un produit en rupture — avec leur propre statut de rupturecheck_atc_groupCombien de produits dans une classe ATC sont concernés ? (C09, C09AA, …)list_active_shortagesListe en lot des ruptures actives avec filtresget_company_statusProfil entreprise : ruptures actives + score de transparenceget_shortage_timelineTendance hebdomadaire du nombre de rupturesget_weekly_summarySnapshot KPI : total actif, critique, affecté BWLInstallation via Smithery (recommandé)
Aucun téléchargement, aucun build. Le serveur tourne en hébergement sur mcp.engpassradar.ch — Smithery connecte votre client IA directement.
Configuration manuelle (Claude Desktop / Cursor)
Pour une connexion HTTP directe sans Smithery — ajouter dans claude_desktop_config.json (macOS : ~/Library/Application Support/Claude/) :
{
"mcpServers": {
"engpassradar": {
"type": "http",
"url": "https://mcp.engpassradar.ch"
}
}
}Avec une clé API Pro (10 000 req/jour) :
{
"mcpServers": {
"engpassradar": {
"type": "http",
"url": "https://mcp.engpassradar.ch?ENGPASS_API_KEY=ihr-api-key"
}
}
}Free Tier (100 req/h) sans clé. Clé Pro (10 000 req/jour) via API Keys. Code source : github.com/…/mcp