API Documentation
v1 — publicFree access to all Swiss drug shortages. No API key, no login required. Please use fairly — max. ~300 requests/day recommended.
More than 100 req/h? Professional keys from CHF 39/month — with severity scoring and 10,000 req/day.
API access & pricing →Base URL
https://engpassradar.ch/api/v1
All responses are UTF-8 JSON. CORS is enabled (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
Returns a paginated, filterable list of all reported shortages.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| search | string | – | Full-text search on label, company, ATC code | pregabalin |
| status | string | – | Status code(s) 1–5, comma-separated | 1,4 |
| firma | string | – | Exact company name | Sandoz |
| atc | string | – | ATC code prefix | C09 |
| neu | integer | – | Only shortages ≤ 7 days old | 1 |
| page | integer | – | Page number (default: 1) | 2 |
| perPage | integer | – | Entries per page (max: 200) | 100 |
| sort | string | – | field:asc or field: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
Full details for a single product including Severity Score breakdown.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| gtin | string | yes | GTIN of the product (7–14 digits), in URL path | 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
Aggregated metrics on the current supply situation. Useful for dashboards and 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
Weekly time series: new shortages and active stock. Ideal for trend analyses.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| weeks | integer | – | Number of weeks back (4–260, default: 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
Active-substance-equivalent alternatives for a product, split into same company, co-marketing and all alternatives. Responses are cached for 24 hours.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| gtin | string | yes | GTIN of the product | 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
Alternatives lookup for up to 50 GTINs in a single request. Significantly more efficient than N individual calls.
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 when no cached alternatives exist for a GTIN yet.
/api/export/csv
Returns all (filtered) shortages as a CSV file. Directly importable into Excel or Python pandas.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
| search | string | – | Full-text search on label, company, ATC code | pregabalin |
| status | string | – | Status code(s) 1–5, comma-separated | 1,4 |
| firma | string | – | Exact company name | Novartis |
| atc | string | – | ATC code prefix | 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")Fields: label, company, ATC code, status, available from, last mutation, days since report, GTIN, Pharmacode, first seen
/api/health
System health check. Returns 200 when all systems are ready, 503 on issues.
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 hRate limits & API access
The API is free for research and small teams. For commercial integrations, please choose a plan that supports operations.
# 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
Webhooks send an HTTP POST request to your URL as soon as a new shortage is reported or an existing one is resolved — no polling, in real time.
shortage.createdNew shortage on the Swissmedic listshortage.resolvedShortage marked as resolvedshortage.updatedChange to existing shortage (date, status)Webhooks are available in the Klinik-System
Engpassradar Pro receives data via API polling. The Klinik-System (CHF 199/mo) sends push events directly to your infrastructure.
RSS feeds
/rss.xmlAll current shortages/wirkstoff/{atc}/feed.xmlShortages by ATC group (e.g. /wirkstoff/C09/feed.xml)MCP server (Claude / Copilot / Cursor)
The MCP server provides engpassradar data as native agent tools — no scraping, directly in the workflow of Claude Desktop, GitHub Copilot or Cursor. Questions like "Inhibace is unavailable — what alternatives exist for C09AA?" become a direct database call.
search_shortagesFull-text search by product, active substance or companyget_shortageSingle product by GTIN — incl. score, price, BWL statusfind_alternativesAlternatives for a product in shortage — with their own shortage statuscheck_atc_groupHow many products in an ATC class are affected? (C09, C09AA, …)list_active_shortagesBulk list of active shortages with filtersget_company_statusCompany profile: active shortages + transparency scoreget_shortage_timelineWeekly trendline of shortage countsget_weekly_summaryKPI snapshot: total active, critical, BWL-affectedSetup via Smithery (recommended)
No download, no build. The server runs hosted at mcp.engpassradar.ch — Smithery connects your AI client directly to it.
Manual configuration (Claude Desktop / Cursor)
For direct HTTP connection without Smithery — add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/):
{
"mcpServers": {
"engpassradar": {
"type": "http",
"url": "https://mcp.engpassradar.ch"
}
}
}With Pro API key (10,000 req/day):
{
"mcpServers": {
"engpassradar": {
"type": "http",
"url": "https://mcp.engpassradar.ch?ENGPASS_API_KEY=ihr-api-key"
}
}
}Free tier (100 req/h) without key. Pro key (10,000 req/day) via API Keys. Source code: github.com/…/mcp