engpass.radarRuptures de médicaments en Suisse
Retour à l'aperçu de l'API

Documentation API

v1 — publique

Accè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

GET/api/v1/shortages
GET/api/v1/shortages/:gtin
GET/api/v1/stats
GET/api/v1/timeline
GET/api/alternatives
POST/api/alternatives/batch
GET/api/export/csv
GET/api/health
GET

/api/v1/shortages

Renvoie une liste paginée et filtrable de toutes les ruptures signalées.

ParamètreTypeRequisDescriptionExemple
searchstringRecherche plein texte sur libellé, entreprise, code ATCpregabalin
statusstringCode(s) de statut 1–5, séparés par virgule1,4
firmastringNom exact de l'entrepriseSandoz
atcstringPréfixe de code ATCC09
neuintegerUniquement les ruptures ≤ 7 jours1
pageintegerNuméro de page (par défaut : 1)2
perPageintegerEntrées par page (max : 200)100
sortstringchamp:asc ou champ:desctageSeitMeldung: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" }
}
GET

/api/v1/shortages/:gtin

Détails complets pour un produit unique, y compris Severity Score breakdown.

ParamètreTypeRequisDescriptionExemple
gtinstringouiGTIN du produit (7–14 chiffres), dans le chemin URL7680654320016
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",
    ...
  }
}
GET

/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 },
      ...
    ]
  }
}
GET

/api/v1/timeline

Série temporelle hebdomadaire : nouvelles ruptures et stock actif. Idéal pour analyses de tendance.

ParamètreTypeRequisDescriptionExemple
weeksintegerNombre 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" }
}
GET

/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ètreTypeRequisDescriptionExemple
gtinstringouiGTIN du produit7680654320016
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" }
  ]
}
POST

/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.

GET

/api/export/csv

Renvoie toutes les ruptures (filtrées) sous forme de fichier CSV. Importable directement dans Excel ou Python pandas.

ParamètreTypeRequisDescriptionExemple
searchstringRecherche plein texte sur libellé, entreprise, code ATCpregabalin
statusstringCode(s) de statut 1–5, séparés par virgule1,4
firmastringNom exact de l'entrepriseNovartis
atcstringPréfixe de code ATCN06
# 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

GET

/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

200Succès
400Paramètres invalides (p. ex. GTIN incorrect)
404Produit introuvable
500Erreur interne du serveur
503Système dégradé (uniquement sur /api/health)

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 h

Rate 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.

Free100 req/heureCHF 0
Research2 000 req/jourCHF 0
Engpassradar Pro10 000 req/jourCHF 39/mois
Klinik-System100 000 req/jourCHF 199/mois
Data LicenseIllimitédès CHF 499/mois
401Clé API invalide ou inactive
429Rate limit dépassé — X-RateLimit-Reset contient le timestamp de réinitialisation
# 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 Swissmedic
shortage.resolvedRupture marquée comme résolue
shortage.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.

Demander le Klinik-System →

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 entreprise
get_shortageProduit unique par GTIN — incl. score, prix, statut BWL
find_alternativesAlternatives pour un produit en rupture — avec leur propre statut de rupture
check_atc_groupCombien de produits dans une classe ATC sont concernés ? (C09, C09AA, …)
list_active_shortagesListe en lot des ruptures actives avec filtres
get_company_statusProfil entreprise : ruptures actives + score de transparence
get_shortage_timelineTendance hebdomadaire du nombre de ruptures
get_weekly_summarySnapshot KPI : total actif, critique, affecté BWL

Installation 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.

Installer via Smithery →

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