API Dokumentation
v1 — öffentlichFreier Zugang zu allen Schweizer Arzneimittel-Lieferengpässen. Kein API-Key, kein Login erforderlich. Bitte fair nutzen — max. ~300 Requests/Tag empfohlen.
Base URL
https://engpassradar.ch/api/v1
Alle Antworten sind UTF-8 JSON. CORS ist aktiviert (Access-Control-Allow-Origin: *).
Endpunkte
/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
Gibt eine paginierte, filterbare Liste aller gemeldeten Engpässe zurück.
| Parameter | Typ | Pflicht | Beschreibung | Beispiel |
|---|---|---|---|---|
| search | string | – | Volltextsuche auf Bezeichnung, Firma, ATC-Code | pregabalin |
| status | string | – | Status-Code(s) 1–5, kommagetrennt | 1,4 |
| firma | string | – | Exakter Firmenname | Sandoz |
| atc | string | – | ATC-Code-Präfix | C09 |
| neu | integer | – | Nur Engpässe ≤ 7 Tage alt | 1 |
| page | integer | – | Seitennummer (Standard: 1) | 2 |
| perPage | integer | – | Einträge pro Seite (max: 200) | 100 |
| sort | string | – | feld:asc oder feld: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
Vollständige Details zu einem einzelnen Produkt inklusive Severity Score Breakdown.
| Parameter | Typ | Pflicht | Beschreibung | Beispiel |
|---|---|---|---|---|
| gtin | string | ja | GTIN des Produkts (7–14 Ziffern), im URL-Pfad | 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
Aggregierte Kennzahlen der aktuellen Versorgungslage. Nützlich für Dashboards und 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
Wöchentliche Zeitreihe: neue Engpässe und aktiver Bestand. Ideal für Trendanalysen.
| Parameter | Typ | Pflicht | Beschreibung | Beispiel |
|---|---|---|---|---|
| weeks | integer | – | Anzahl Wochen zurück (4–260, Standard: 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
Wirkstoffgleiche Alternativen für ein Produkt, aufgeteilt in gleiche Firma, Co-Marketing und alle Alternativen. Antworten werden 24 Stunden gecacht.
| Parameter | Typ | Pflicht | Beschreibung | Beispiel |
|---|---|---|---|---|
| gtin | string | ja | GTIN des Produkts | 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
Alternativenabfrage für bis zu 50 GTINs in einem einzigen Request. Deutlich effizienter als N Einzelanfragen.
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 wenn für eine GTIN noch keine gecachten Alternativen vorhanden sind.
/api/export/csv
Gibt alle (gefilterten) Engpässe als CSV-Datei zurück. Direkt in Excel oder Python pandas importierbar.
| Parameter | Typ | Pflicht | Beschreibung | Beispiel |
|---|---|---|---|---|
| search | string | – | Volltextsuche | pregabalin |
| status | string | – | Status-Code(s), kommagetrennt | 1,4 |
| firma | string | – | Exakter Firmenname | Novartis |
| atc | string | – | ATC-Code-Präfix | 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")Felder: Bezeichnung, Firma, ATC-Code, Status, Lieferbar ab, Letzte Mutation, Tage seit Meldung, GTIN, Pharmacode, Erstmals gesehen
/api/health
System-Health-Check. Gibt 200 wenn alle Systeme bereit,503 bei Problemen.
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" }
}HTTP Status Codes
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 hRSS-Feeds
/rss.xmlAlle aktuellen Engpässe/wirkstoff/{atc}/feed.xmlEngpässe nach ATC-Gruppe (z. B. /wirkstoff/C09/feed.xml)