engpass.radarSwiss drug shortages
Back to API overview

API Documentation

v1 — public

Free 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

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

Returns a paginated, filterable list of all reported shortages.

ParameterTypeRequiredDescriptionExample
searchstringFull-text search on label, company, ATC codepregabalin
statusstringStatus code(s) 1–5, comma-separated1,4
firmastringExact company nameSandoz
atcstringATC code prefixC09
neuintegerOnly shortages ≤ 7 days old1
pageintegerPage number (default: 1)2
perPageintegerEntries per page (max: 200)100
sortstringfield:asc or field: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

Full details for a single product including Severity Score breakdown.

ParameterTypeRequiredDescriptionExample
gtinstringyesGTIN of the product (7–14 digits), in URL path7680654320016
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

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

/api/v1/timeline

Weekly time series: new shortages and active stock. Ideal for trend analyses.

ParameterTypeRequiredDescriptionExample
weeksintegerNumber 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" }
}
GET

/api/alternatives

Active-substance-equivalent alternatives for a product, split into same company, co-marketing and all alternatives. Responses are cached for 24 hours.

ParameterTypeRequiredDescriptionExample
gtinstringyesGTIN of the product7680654320016
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

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.

GET

/api/export/csv

Returns all (filtered) shortages as a CSV file. Directly importable into Excel or Python pandas.

ParameterTypeRequiredDescriptionExample
searchstringFull-text search on label, company, ATC codepregabalin
statusstringStatus code(s) 1–5, comma-separated1,4
firmastringExact company nameNovartis
atcstringATC code prefixN06
# 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

GET

/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

200Successful
400Invalid parameters (e.g. wrong GTIN)
404Product not found
500Internal server error
503System degraded (only on /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 & API access

The API is free for research and small teams. For commercial integrations, please choose a plan that supports operations.

Free100 req/hourCHF 0
Research2,000 req/dayCHF 0
Engpassradar Pro10,000 req/dayCHF 39/mo
Klinik-System100,000 req/dayCHF 199/mo
Data LicenseUnlimitedfrom CHF 499/mo
401Invalid or inactive API key
429Rate limit exceeded — X-RateLimit-Reset contains the reset timestamp
# 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 list
shortage.resolvedShortage marked as resolved
shortage.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.

Request Klinik-System →

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 company
get_shortageSingle product by GTIN — incl. score, price, BWL status
find_alternativesAlternatives for a product in shortage — with their own shortage status
check_atc_groupHow many products in an ATC class are affected? (C09, C09AA, …)
list_active_shortagesBulk list of active shortages with filters
get_company_statusCompany profile: active shortages + transparency score
get_shortage_timelineWeekly trendline of shortage counts
get_weekly_summaryKPI snapshot: total active, critical, BWL-affected

Setup via Smithery (recommended)

No download, no build. The server runs hosted at mcp.engpassradar.ch — Smithery connects your AI client directly to it.

Install via Smithery →

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