{"id":21677,"date":"2026-06-08T13:35:09","date_gmt":"2026-06-08T11:35:09","guid":{"rendered":"https:\/\/www.drugshortage.ch\/?page_id=21677"},"modified":"2026-06-17T20:10:23","modified_gmt":"2026-06-17T18:10:23","slug":"api-dokumentation-2","status":"publish","type":"page","link":"https:\/\/www.drugshortage.ch\/index.php\/api-dokumentation-2\/","title":{"rendered":"API Dokumentation"},"content":{"rendered":"\n<!-- ============================================================\n     drugshortage.ch API Dokumentation \u2013 neu gestaltet\n     ============================================================ -->\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Outfit:wght@300;400;500;600;700;800&amp;family=JetBrains+Mono:wght@400;500;600&amp;display=swap\" rel=\"stylesheet\">\n<style>\n:root {\n  --primary:   #e53e3e;\n  --primary-d: #c53030;\n  --navy:      #0f172a;\n  --slate:     #334155;\n  --muted:     #64748b;\n  --border:    #e2e8f0;\n  --bg:        #f8fafc;\n  --white:     #ffffff;\n  --green:     #16a34a;\n  --blue:      #2563eb;\n  --amber:     #d97706;\n  --mono:      'JetBrains Mono', monospace;\n  --sans:      'Outfit', sans-serif;\n}\n\n#apidoc2 * { box-sizing:border-box; margin:0; padding:0; }\n#apidoc2 { font-family:var(--sans); color:var(--slate); line-height:1.6; }\n\n\/* \u2500\u2500 Hero \u2500\u2500 *\/\n.d2-hero {\n  background: var(--white);\n  border:1px solid var(--border);\n  border-radius:16px;\n  padding:48px 40px;\n  margin-bottom:28px;\n  position:relative;\n  overflow:hidden;\n}\n.d2-hero::after {\n  content:'';\n  position:absolute;\n  top:0; right:0; bottom:0;\n  width:40%;\n  background: linear-gradient(135deg, #fff5f5 0%, #fef2f2 50%, #fff 100%);\n  z-index:0;\n}\n.d2-hero-content { position:relative; z-index:1; max-width:580px; }\n.d2-hero-eyebrow {\n  display:inline-flex; align-items:center; gap:6px;\n  background:#fef2f2; border:1px solid #fecaca;\n  color:var(--primary); font-size:11px; font-weight:600;\n  padding:4px 12px; border-radius:20px; letter-spacing:.5px;\n  text-transform:uppercase; margin-bottom:16px;\n}\n.d2-hero-eyebrow::before { content:'\u25cf'; font-size:8px; }\n.d2-hero h1 {\n  font-size:36px; font-weight:800; color:var(--navy);\n  line-height:1.15; margin-bottom:12px; letter-spacing:-.5px;\n}\n.d2-hero h1 span { color:var(--primary); }\n.d2-hero p { color:var(--muted); font-size:15px; line-height:1.7; margin-bottom:20px; }\n.d2-base-url {\n  display:inline-flex; align-items:center; gap:0;\n  background:var(--navy); border-radius:10px; overflow:hidden;\n  font-family:var(--mono); font-size:12px;\n}\n.d2-base-url-label {\n  background:var(--primary); color:#fff; padding:8px 14px; font-weight:600; font-size:11px;\n}\n.d2-base-url-path { color:#94a3b8; padding:8px 16px; }\n.d2-base-url-path span { color:#86efac; }\n\n\/* \u2500\u2500 Section \u2500\u2500 *\/\n.d2-section { margin-bottom:28px; }\n.d2-section-head {\n  display:flex; align-items:center; gap:10px;\n  margin-bottom:16px;\n}\n.d2-section-icon {\n  width:32px; height:32px; border-radius:8px;\n  background:var(--primary); color:#fff;\n  display:flex; align-items:center; justify-content:center;\n  font-size:15px; flex-shrink:0;\n}\n.d2-section-title { font-size:15px; font-weight:700; color:var(--navy); }\n\n\/* \u2500\u2500 Tiers \u2500\u2500 *\/\n.d2-tiers { display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:12px; margin-bottom:6px; }\n.d2-tier {\n  border:1.5px solid var(--border); border-radius:12px;\n  padding:18px; background:var(--white); position:relative;\n  transition:all .2s;\n}\n.d2-tier:hover { border-color:var(--primary); transform:translateY(-1px); box-shadow:0 4px 16px rgba(229,62,62,.08); }\n.d2-tier.featured { border-color:var(--primary); }\n.d2-tier-badge {\n  position:absolute; top:-10px; left:16px;\n  background:var(--primary); color:#fff;\n  font-size:10px; font-weight:700; padding:2px 10px; border-radius:10px;\n}\n.d2-tier-name { font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.8px; color:var(--muted); margin-bottom:8px; }\n.d2-tier-price { font-size:24px; font-weight:800; color:var(--navy); margin-bottom:2px; }\n.d2-tier-price sub { font-size:12px; font-weight:400; color:var(--muted); vertical-align:baseline; }\n.d2-tier-req { font-size:11px; color:var(--muted); margin-bottom:10px; padding-bottom:10px; border-bottom:1px solid var(--border); }\n.d2-tier-features { list-style:none; }\n.d2-tier-features li { font-size:12px; color:var(--slate); padding:2px 0; display:flex; align-items:flex-start; gap:5px; }\n.d2-tier-features li::before { content:'\u2713'; color:var(--green); font-weight:700; flex-shrink:0; }\n\n\/* \u2500\u2500 Auth \u2500\u2500 *\/\n.d2-auth-box {\n  background:var(--navy); border-radius:12px; overflow:hidden;\n}\n.d2-code-header {\n  display:flex; justify-content:space-between; align-items:center;\n  padding:10px 16px; background:rgba(255,255,255,.05); border-bottom:1px solid rgba(255,255,255,.08);\n}\n.d2-code-lang { font-family:var(--mono); font-size:11px; color:#64748b; }\n.d2-code-copy { font-family:var(--mono); font-size:11px; color:#4ade80; background:none; border:none; cursor:pointer; }\n.d2-code-copy:hover { color:#fff; }\npre.d2-pre {\n  padding:16px 18px; font-family:var(--mono); font-size:12px;\n  color:#cbd5e1; overflow-x:auto; line-height:1.7;\n}\n.d2-pre .cm  { color:#475569; }\n.d2-pre .kw  { color:#f87171; }\n.d2-pre .str { color:#4ade80; }\n.d2-pre .hk  { color:#7dd3fc; }\n.d2-pre .hv  { color:#86efac; }\n.d2-pre .num { color:#fbbf24; }\n\n\/* \u2500\u2500 Endpoints \u2500\u2500 *\/\n.d2-endpoint {\n  border:1.5px solid var(--border); border-radius:12px;\n  margin-bottom:10px; background:var(--white); overflow:hidden;\n  transition:border-color .2s;\n}\n.d2-endpoint:hover { border-color:#cbd5e0; }\n.d2-endpoint-header {\n  display:flex; align-items:center; gap:12px;\n  padding:14px 18px; cursor:pointer; user-select:none;\n}\n.d2-endpoint-header:hover { background:#fafafa; }\n.d2-method {\n  font-family:var(--mono); font-size:11px; font-weight:700;\n  padding:3px 9px; border-radius:6px; min-width:44px; text-align:center; flex-shrink:0;\n}\n.d2-get  { background:#dbeafe; color:#1d4ed8; }\n.d2-post { background:#dcfce7; color:#15803d; }\n.d2-path {\n  font-family:var(--mono); font-size:13px; font-weight:600;\n  color:var(--navy); flex:1;\n}\n.d2-edesc { font-size:12px; color:var(--muted); }\n.d2-pro-tag {\n  background:#fef9c3; color:#854d0e; font-size:10px;\n  font-weight:700; padding:2px 8px; border-radius:6px;\n}\n.d2-exclusive-tag {\n  background:linear-gradient(135deg,#e53e3e,#c53030); color:#fff;\n  font-size:10px; font-weight:700; padding:2px 8px; border-radius:6px;\n}\n.d2-chevron { color:#cbd5e1; font-size:14px; transition:transform .2s; flex-shrink:0; }\n.d2-chevron.open { transform:rotate(180deg); }\n.d2-endpoint-body {\n  display:none; border-top:1.5px solid var(--border);\n  padding:18px;\n}\n.d2-endpoint-body.open { display:block; }\n\n\/* \u2500\u2500 Params \u2500\u2500 *\/\n.d2-params { width:100%; border-collapse:collapse; margin-bottom:14px; font-size:12px; }\n.d2-params th {\n  padding:7px 12px; text-align:left; background:var(--bg);\n  color:var(--muted); font-size:10px; font-weight:700;\n  text-transform:uppercase; letter-spacing:.5px; border-bottom:2px solid var(--border);\n}\n.d2-params td { padding:8px 12px; border-bottom:1px solid var(--border); vertical-align:top; }\n.d2-params tr:last-child td { border-bottom:none; }\n.d2-pname { font-family:var(--mono); font-weight:600; color:var(--navy); font-size:12px; }\n.d2-ptype { font-family:var(--mono); color:#7c3aed; font-size:11px; }\n.d2-preq  { color:var(--primary); font-weight:700; font-size:11px; }\n.d2-popt  { color:var(--muted); font-size:11px; }\n\n\/* \u2500\u2500 Status Codes \u2500\u2500 *\/\n.d2-status { width:100%; border-collapse:collapse; font-size:12px; background:var(--white); border:1.5px solid var(--border); border-radius:12px; overflow:hidden; }\n.d2-status th {\n  padding:8px 14px; text-align:left; background:var(--bg);\n  color:var(--muted); font-size:10px; font-weight:700;\n  text-transform:uppercase; letter-spacing:.5px; border-bottom:2px solid var(--border);\n}\n.d2-status td { padding:8px 14px; border-bottom:1px solid var(--border); vertical-align:top; }\n.d2-status tr:last-child td { border-bottom:none; }\n.d2-status-code { font-family:var(--mono); font-weight:700; color:var(--navy); text-align:center; width:48px; }\n.d2-note {\n  display:flex; align-items:flex-start; gap:10px;\n  background:#fffbeb; border:1.5px solid #fde68a;\n  border-radius:10px; padding:14px 16px; margin-top:14px;\n  font-size:13px; color:#78350f; line-height:1.55;\n}\n.d2-note::before { content:'\\26a0'; font-size:15px; flex-shrink:0; }\n\n\/* \u2500\u2500 HTTP Codes \u2500\u2500 *\/\n.d2-http-grid { display:flex; flex-wrap:wrap; gap:8px; }\n.d2-http-item {\n  display:flex; align-items:center; gap:8px;\n  padding:8px 14px; border:1.5px solid var(--border);\n  border-radius:8px; font-size:12px; background:var(--white);\n}\n.d2-http-code { font-family:var(--mono); font-weight:700; font-size:14px; }\n.d2-http-200 .d2-http-code { color:var(--green); }\n.d2-http-400 .d2-http-code { color:var(--amber); }\n.d2-http-401 .d2-http-code { color:var(--primary); }\n.d2-http-404 .d2-http-code { color:var(--primary); }\n.d2-http-429 .d2-http-code { color:var(--amber); }\n.d2-http-500 .d2-http-code { color:var(--primary); }\n\n\/* \u2500\u2500 CTA \u2500\u2500 *\/\n.d2-cta {\n  background:var(--navy); border-radius:16px;\n  padding:36px 40px; margin-top:28px;\n  display:flex; align-items:center; justify-content:space-between;\n  flex-wrap:wrap; gap:20px;\n}\n.d2-cta h3 { font-size:20px; font-weight:700; color:#fff; margin-bottom:4px; }\n.d2-cta p  { color:#64748b; font-size:13px; }\n.d2-cta-btn {\n  display:inline-block; background:var(--primary); color:#fff;\n  padding:12px 28px; border-radius:10px; font-weight:700;\n  font-size:14px; text-decoration:none; white-space:nowrap;\n  transition:background .2s;\n}\n.d2-cta-btn:hover { background:var(--primary-d); }\n\n\/* Divider *\/\n.d2-divider { height:1px; background:var(--border); margin:24px 0; }\n\n@media (max-width:768px) {\n  .d2-hero { padding:28px 20px; }\n  .d2-hero h1 { font-size:26px; }\n  .d2-hero::after { display:none; }\n  .d2-cta { flex-direction:column; padding:24px 20px; }\n}\n<\/style>\n\n<div id=\"apidoc2\">\n\n  <!-- Hero -->\n  <div class=\"d2-hero\">\n    <div class=\"d2-hero-content\">\n      <div class=\"d2-hero-eyebrow\">API v1 \u00b7 \u00f6ffentlich<\/div>\n      <h1>drugshortage.ch <span>API<\/span><\/h1>\n      <p>Direkter, strukturierter Zugriff auf alle Schweizer Arzneimittel-Lieferengp\u00e4sse. Echtdaten, t\u00e4glich aktualisiert, zweisprachig DE\/FR. Kein Scraping \u2013 saubere REST-API mit Rate Limiting.<\/p>\n      <div class=\"d2-base-url\">\n        <span class=\"d2-base-url-label\">BASE URL<\/span>\n        <span class=\"d2-base-url-path\">drugshortage.ch\/api\/v1\/drugshortage.php?<span>endpoint=<\/span><\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Authentifizierung -->\n  <div class=\"d2-section\">\n    <div class=\"d2-section-head\">\n      <div class=\"d2-section-icon\">&#x1f511;<\/div>\n      <span class=\"d2-section-title\">Authentifizierung<\/span>\n    <\/div>\n    <div class=\"d2-auth-box\">\n      <div class=\"d2-code-header\">\n        <span class=\"d2-code-lang\">bash<\/span>\n        <button class=\"d2-code-copy\" onclick=\"d2kopiere(this)\">kopieren<\/button>\n      <\/div>\n      <pre class=\"d2-pre\"><span class=\"cm\"># Mit API-Key (Bearer Token)<\/span>\ncurl -H <span class=\"str\">\"Authorization: Bearer IHR_API_KEY\"<\/span>   <span class=\"str\">\"https:\/\/www.drugshortage.ch\/api\/v1\/drugshortage.php?endpoint=shortages\"<\/span>\n\n<span class=\"cm\"># Alternativ als Parameter<\/span>\ncurl <span class=\"str\">\"https:\/\/www.drugshortage.ch\/api\/v1\/drugshortage.php?endpoint=shortages&amp;api_key=IHR_KEY\"<\/span>\n\n<span class=\"cm\"># Response-Header<\/span>\n<span class=\"hk\">X-RateLimit-Limit:<\/span>     <span class=\"hv\">5000<\/span>\n<span class=\"hk\">X-RateLimit-Remaining:<\/span> <span class=\"hv\">4847<\/span>\n<span class=\"hk\">X-Api-Tier:<\/span>           <span class=\"hv\">basic<\/span><\/pre>\n    <\/div>\n  <\/div>\n\n  <div class=\"d2-divider\"><\/div>\n\n  <!-- Endpoints -->\n  <div class=\"d2-section\">\n    <div class=\"d2-section-head\">\n      <div class=\"d2-section-icon\">&#x26a1;<\/div>\n      <span class=\"d2-section-title\">Endpoints<\/span>\n    <\/div>\n\n    <!-- shortages -->\n    <div class=\"d2-endpoint\">\n      <div class=\"d2-endpoint-header\" onclick=\"d2toggle(this)\">\n        <span class=\"d2-method d2-get\">GET<\/span>\n        <span class=\"d2-path\">shortages<\/span>\n        <span class=\"d2-edesc\">Paginierte Liste aller Lieferengp\u00e4sse<\/span>\n        <span class=\"d2-chevron\">\u25be<\/span>\n      <\/div>\n      <div class=\"d2-endpoint-body\">\n        <table class=\"d2-params\">\n          <thead><tr><th>Parameter<\/th><th>Typ<\/th><th>Pflicht<\/th><th>Beschreibung<\/th><th>Beispiel<\/th><\/tr><\/thead>\n          <tbody>\n            <tr><td class=\"d2-pname\">search<\/td><td class=\"d2-ptype\">string<\/td><td class=\"d2-popt\">\u2013<\/td><td>Volltextsuche<\/td><td>amoxicillin<\/td><\/tr>\n            <tr><td class=\"d2-pname\">firma<\/td><td class=\"d2-ptype\">string<\/td><td class=\"d2-popt\">\u2013<\/td><td>Exakter Firmenname<\/td><td>Sandoz Pharmaceuticals AG<\/td><\/tr>\n            <tr><td class=\"d2-pname\">atc<\/td><td class=\"d2-ptype\">string<\/td><td class=\"d2-popt\">\u2013<\/td><td>ATC-Code Pr\u00e4fix<\/td><td>C09<\/td><\/tr>\n            <tr><td class=\"d2-pname\">status<\/td><td class=\"d2-ptype\">string<\/td><td class=\"d2-popt\">\u2013<\/td><td>Status-Codes 1\u201311, kommagetrennt. <strong>Ohne Angabe wird der vollst\u00e4ndige Datenbestand geliefert<\/strong> \u2013 inklusive abgeschlossener (9), nicht mehr verkaufter (7) und ausser Handel befindlicher (8 bzw. <code>Trade = AH<\/code>) Eintr\u00e4ge. Mit Angabe wird auf exakt diese Codes gefiltert (<code>status=8<\/code> umfasst auch <code>Trade = AH<\/code>). Pro Eintrag zeigen die Felder <code>isActive<\/code> und <code>isAusserHandel<\/code> den tats\u00e4chlichen Zustand.<\/td><td>1,2<\/td><\/tr>\n            <tr><td class=\"d2-pname\">mutatedSince<\/td><td class=\"d2-ptype\">string<\/td><td class=\"d2-popt\">\u2013<\/td><td>Nur Eintr\u00e4ge, deren letzte Mutation &gt;= Datum ist (Format ISO YYYY-MM-DD). Ideal f\u00fcr inkrementelle Syncs.<\/td><td>2026-05-01<\/td><\/tr>\n            <tr><td class=\"d2-pname\">reportedSince<\/td><td class=\"d2-ptype\">string<\/td><td class=\"d2-popt\">\u2013<\/td><td>Nur Eintr\u00e4ge, deren Erstmeldung &gt;= Datum ist (Format ISO YYYY-MM-DD). F\u00fcr das Tracking von Neuzug\u00e4ngen.<\/td><td>2026-05-01<\/td><\/tr>\n            <tr><td class=\"d2-pname\">page<\/td><td class=\"d2-ptype\">integer<\/td><td class=\"d2-popt\">\u2013<\/td><td>Seitennummer (Standard: 1)<\/td><td>2<\/td><\/tr>\n            <tr><td class=\"d2-pname\">perPage<\/td><td class=\"d2-ptype\">integer<\/td><td class=\"d2-popt\">\u2013<\/td><td>Eintr\u00e4ge pro Seite (Standard: 200, max: 200)<\/td><td>200<\/td><\/tr>\n            <tr><td class=\"d2-pname\">sort<\/td><td class=\"d2-ptype\">string<\/td><td class=\"d2-popt\">\u2013<\/td><td>feld:asc oder feld:desc. Erlaubte Felder: bezeichnung, firma, atc, tage, lieferdatum, datumLetzteMutation<\/td><td>datumLetzteMutation:desc<\/td><\/tr>\n            <tr><td class=\"d2-pname\">lang<\/td><td class=\"d2-ptype\">string<\/td><td class=\"d2-popt\">Pro<\/td><td>Sprache (de\/fr)<\/td><td>fr<\/td><\/tr>\n          <\/tbody>\n        <\/table>\n        <div class=\"d2-auth-box\">\n          <div class=\"d2-code-header\"><span class=\"d2-code-lang\">bash<\/span><\/div>\n          <pre class=\"d2-pre\">curl <span class=\"str\">\"...?endpoint=shortages&amp;atc=C09&amp;perPage=3\"<\/span>\n\n<span class=\"cm\">{\n  \"data\": [{\n    \"id\": 4821, \"gtin\": \"7680654320016\",\n    \"bezeichnung\": \"Olmesartan Mepha Lactab 20 mg\",\n    \"firma\": \"Mepha Pharma AG\", \"atcCode\": \"C09CA08\",\n    \"statusCode\": 1, \"statusText\": \"1 aktuell keine Lieferungen\",\n    \"isActive\": true, \"isAusserHandel\": false, \"trade\": null,\n    \"lieferfaehigkeitDate\": \"15.07.2026\",\n    \"ersteMeldungDate\": \"20.04.2026\",\n    \"ersteInfoFirmaDate\": \"20.04.2026\",\n    \"dauer\": \"langer Engpass (&gt; 6 Wochen)\",\n    \"datumLetzteMutation\": \"05.05.2026\",\n    \"datumLetzteMutation2\": \"2026-05-05T00:00:00+02:00\",\n    \"isBwl\": true, \"bewertung\": 1\n  }],\n  \"total\": 1180, \"page\": 1, \"perPage\": 3, \"pages\": 394\n}<\/span><\/pre>\n        <\/div>\n        <div class=\"d2-note\">Der Grundreport (ohne <code>status=<\/code>) enth\u00e4lt jetzt <strong>alle<\/strong> Meldungen. Wenn Sie nur laufende Engp\u00e4sse wollen, filtern Sie clientseitig auf <code>isActive: true<\/code> oder fragen Sie gezielt aktive Status-Codes ab (z. B. <code>status=1,2,3,4,5,6,10,11<\/code>). Das Feld <code>datumLetzteMutation2<\/code> liefert das Mutationsdatum als ISO-8601 mit Zeitzonen-Offset (DateTimeOffset); <code>datumLetzteMutation<\/code> bleibt das gewohnte Klartextformat.<\/div>\n      <\/div>\n    <\/div>\n\n    <!-- shortages\/:gtin -->\n    <div class=\"d2-endpoint\">\n      <div class=\"d2-endpoint-header\" onclick=\"d2toggle(this)\">\n        <span class=\"d2-method d2-get\">GET<\/span>\n        <span class=\"d2-path\">shortages\/{gtin}<\/span>\n        <span class=\"d2-edesc\">Alle Meldungen zu einer GTIN<\/span>\n        <span class=\"d2-chevron\">\u25be<\/span>\n      <\/div>\n      <div class=\"d2-endpoint-body\">\n        <div class=\"d2-auth-box\">\n          <div class=\"d2-code-header\"><span class=\"d2-code-lang\">bash<\/span><\/div>\n          <pre class=\"d2-pre\">curl <span class=\"str\">\"...?endpoint=shortages\/7680654320016\"<\/span>\n\n<span class=\"cm\">{ \"data\": [ { ... }, { ... } ], \"count\": 2, \"meta\": { ... } }<\/span><\/pre>\n        <\/div>\n        <div class=\"d2-note\">Eine GTIN kann mehrere Meldungen (mit unterschiedlichen Status) haben. <code>data<\/code> ist daher ein <strong>Array<\/strong> aller Meldungen zur GTIN, sortiert nach letzter Mutation (neueste zuerst), und <code>count<\/code> nennt deren Anzahl. Es werden alle Meldungen geliefert, auch abgeschlossene\/ausser Handel.<\/div>\n      <\/div>\n    <\/div>\n\n    <!-- stats -->\n    <div class=\"d2-endpoint\">\n      <div class=\"d2-endpoint-header\" onclick=\"d2toggle(this)\">\n        <span class=\"d2-method d2-get\">GET<\/span>\n        <span class=\"d2-path\">stats<\/span>\n        <span class=\"d2-edesc\">Aggregierte Kennzahlen der Versorgungslage<\/span>\n        <span class=\"d2-chevron\">\u25be<\/span>\n      <\/div>\n      <div class=\"d2-endpoint-body\">\n        <p style=\"font-size:13px;color:var(--muted);margin-bottom:12px;\">Bezieht sich bewusst nur auf <strong>aktive<\/strong> Engp\u00e4sse (abgeschlossene\/nicht verkaufte\/ausser Handel werden ausgeschlossen), damit die Kennzahlen die aktuelle Versorgungslage abbilden.<\/p>\n        <div class=\"d2-auth-box\">\n          <div class=\"d2-code-header\"><span class=\"d2-code-lang\">bash<\/span><\/div>\n          <pre class=\"d2-pre\">curl <span class=\"str\">\"...?endpoint=stats\"<\/span>\n\n<span class=\"cm\">{ \"data\": { \"active\": 719, \"uniqueAtcGroups\": 294,\n  \"avgDaysSinceMeldung\": 178.8, \"regulatory\": { \"bwl\": 133, \"who\": 214 },\n  \"topAtcGroups\": [{ \"atc\": \"N05\", \"count\": 63 }, ...] } }<\/span><\/pre>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- timeline -->\n    <div class=\"d2-endpoint\">\n      <div class=\"d2-endpoint-header\" onclick=\"d2toggle(this)\">\n        <span class=\"d2-method d2-get\">GET<\/span>\n        <span class=\"d2-path\">timeline<\/span>\n        <span class=\"d2-edesc\">W\u00f6chentliche Zeitreihe neuer Meldungen<\/span>\n        <span class=\"d2-chevron\">\u25be<\/span>\n      <\/div>\n      <div class=\"d2-endpoint-body\">\n        <table class=\"d2-params\">\n          <thead><tr><th>Parameter<\/th><th>Typ<\/th><th>Pflicht<\/th><th>Beschreibung<\/th><\/tr><\/thead>\n          <tbody>\n            <tr><td class=\"d2-pname\">weeks<\/td><td class=\"d2-ptype\">integer<\/td><td class=\"d2-popt\">\u2013<\/td><td>Wochen zur\u00fcck (4\u2013260, Standard: 52)<\/td><\/tr>\n          <\/tbody>\n        <\/table>\n      <\/div>\n    <\/div>\n\n    <!-- supply -->\n    <div class=\"d2-endpoint\">\n      <div class=\"d2-endpoint-header\" onclick=\"d2toggle(this)\">\n        <span class=\"d2-method d2-get\">GET<\/span>\n        <span class=\"d2-path\">supply<\/span>\n        <span class=\"d2-edesc\">Versorgungsengp\u00e4sse nach Wirkstoff\/Dosierung<\/span>\n        <span class=\"d2-exclusive-tag\">exklusiv drugshortage.ch<\/span>\n        <span class=\"d2-chevron\">\u25be<\/span>\n      <\/div>\n      <div class=\"d2-endpoint-body\">\n        <p style=\"font-size:13px;color:var(--muted);margin-bottom:12px;\">Wirkstoffe\/Dosierungen bei denen 50\u2013100% aller Pr\u00e4parate nicht lieferbar sind. Dieser Endpoint ist exklusiv bei drugshortage.ch.<\/p>\n        <div class=\"d2-auth-box\">\n          <div class=\"d2-code-header\"><span class=\"d2-code-lang\">bash<\/span><\/div>\n          <pre class=\"d2-pre\">curl <span class=\"str\">\"...?endpoint=supply\"<\/span><\/pre>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- alternatives -->\n    <div class=\"d2-endpoint\">\n      <div class=\"d2-endpoint-header\" onclick=\"d2toggle(this)\">\n        <span class=\"d2-method d2-get\">GET<\/span>\n        <span class=\"d2-path\">alternatives?gtin=<\/span>\n        <span class=\"d2-edesc\">Verf\u00fcgbare Alternativen f\u00fcr ein Produkt<\/span>\n        <span class=\"d2-chevron\">\u25be<\/span>\n      <\/div>\n      <div class=\"d2-endpoint-body\">\n        <p style=\"font-size:13px;color:var(--muted);margin-bottom:12px;\">Zeigt nur <strong>tats\u00e4chlich verf\u00fcgbare<\/strong> Alternativen. Ausgeschlossen werden Pr\u00e4parate, die selbst im Engpass sind, abregistrierte\/nicht mehr verkaufte, ausser Handel befindliche (<code>Trade = AH<\/code>) sowie Spital-\/Importprodukte. Mit <code>lang=fr<\/code> werden die franz\u00f6sischen Bezeichnungen (NomF) geliefert.<\/p>\n        <div class=\"d2-auth-box\">\n          <div class=\"d2-code-header\"><span class=\"d2-code-lang\">bash<\/span><\/div>\n          <pre class=\"d2-pre\">curl <span class=\"str\">\"...?endpoint=alternatives&amp;gtin=7680654320016\"<\/span>\n\n<span class=\"cm\">{ \"gtin\": \"7680654320016\",\n  \"gleicheFirma\": [], \"coMarketing\": [...], \"alleAlternativen\": [...] }<\/span><\/pre>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- company -->\n    <div class=\"d2-endpoint\">\n      <div class=\"d2-endpoint-header\" onclick=\"d2toggle(this)\">\n        <span class=\"d2-method d2-get\">GET<\/span>\n        <span class=\"d2-path\">company\/{firma}<\/span>\n        <span class=\"d2-edesc\">Firmenprofil mit Bewertung<\/span>\n        <span class=\"d2-chevron\">\u25be<\/span>\n      <\/div>\n      <div class=\"d2-endpoint-body\">\n        <div class=\"d2-auth-box\">\n          <div class=\"d2-code-header\"><span class=\"d2-code-lang\">bash<\/span><\/div>\n          <pre class=\"d2-pre\">curl <span class=\"str\">\"...?endpoint=company\/Sandoz%20Pharmaceuticals%20AG\"<\/span><\/pre>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- export\/csv -->\n    <div class=\"d2-endpoint\">\n      <div class=\"d2-endpoint-header\" onclick=\"d2toggle(this)\">\n        <span class=\"d2-method d2-get\">GET<\/span>\n        <span class=\"d2-path\">export\/csv<\/span>\n        <span class=\"d2-edesc\">Gefilterter CSV-Export (aktive Engp\u00e4sse)<\/span>\n        <span class=\"d2-pro-tag\">Pro+<\/span>\n        <span class=\"d2-chevron\">\u25be<\/span>\n      <\/div>\n      <div class=\"d2-endpoint-body\">\n        <p style=\"font-size:13px;color:var(--muted);margin-bottom:12px;\">Der CSV-Export liefert die aktive Sicht (ohne abgeschlossene\/ausser Handel). F\u00fcr den vollst\u00e4ndigen Bestand nutzen Sie den <code>shortages<\/code>-Endpoint.<\/p>\n        <div class=\"d2-auth-box\">\n          <div class=\"d2-code-header\"><span class=\"d2-code-lang\">python<\/span><\/div>\n          <pre class=\"d2-pre\"><span class=\"kw\">import<\/span> pandas <span class=\"kw\">as<\/span> pd\ndf = pd.read_csv(<span class=\"str\">\"...?endpoint=export\/csv&amp;atc=N06\"<\/span>, encoding=<span class=\"str\">\"utf-8-sig\"<\/span>)<\/pre>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- health -->\n    <div class=\"d2-endpoint\">\n      <div class=\"d2-endpoint-header\" onclick=\"d2toggle(this)\">\n        <span class=\"d2-method d2-get\">GET<\/span>\n        <span class=\"d2-path\">health<\/span>\n        <span class=\"d2-edesc\">System-Health-Check<\/span>\n        <span class=\"d2-chevron\">\u25be<\/span>\n      <\/div>\n      <div class=\"d2-endpoint-body\">\n        <div class=\"d2-auth-box\">\n          <div class=\"d2-code-header\"><span class=\"d2-code-lang\">json<\/span><\/div>\n          <pre class=\"d2-pre\"><span class=\"cm\">{ \"status\": \"healthy\", \"database\": { \"healthy\": true, \"latencyMs\": 1.1 } }<\/span><\/pre>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"d2-divider\"><\/div>\n\n  <!-- Status Codes -->\n  <div class=\"d2-section\">\n    <div class=\"d2-section-head\">\n      <div class=\"d2-section-icon\">&#x1f3f7;&#xfe0f;<\/div>\n      <span class=\"d2-section-title\">Status-Codes<\/span>\n    <\/div>\n    <table class=\"d2-status\">\n      <thead><tr><th class=\"d2-status-code\">Code<\/th><th>Bedeutung<\/th><\/tr><\/thead>\n      <tbody>\n        <tr><td class=\"d2-status-code\">1<\/td><td>aktuell keine Lieferungen<\/td><\/tr>\n        <tr><td class=\"d2-status-code\">2<\/td><td>angek\u00fcndigter Engpass<\/td><\/tr>\n        <tr><td class=\"d2-status-code\">3<\/td><td>Lieferungen kontingentiert \/ eingeschr\u00e4nkt<\/td><\/tr>\n        <tr><td class=\"d2-status-code\">4<\/td><td>f\u00fcr Spit\u00e4ler verf\u00fcgbar; Retail nicht verf\u00fcgbar<\/td><\/tr>\n        <tr><td class=\"d2-status-code\">5<\/td><td>f\u00fcr Spit\u00e4ler verf\u00fcgbar; Retail eingeschr\u00e4nkt<\/td><\/tr>\n        <tr><td class=\"d2-status-code\">6<\/td><td>Spit\u00e4ler eingeschr\u00e4nkt; Retail nicht verf\u00fcgbar<\/td><\/tr>\n        <tr><td class=\"d2-status-code\">7<\/td><td>registriert \u2013 nicht mehr im Verkauf<\/td><\/tr>\n        <tr><td class=\"d2-status-code\">8<\/td><td>abregistriert \u2013 ausser Handel (auch via <code>Trade = AH<\/code> gekennzeichnet)<\/td><\/tr>\n        <tr><td class=\"d2-status-code\">9<\/td><td>abgeschlossen<\/td><\/tr>\n        <tr><td class=\"d2-status-code\">10<\/td><td>Versorgung erfolgt mit Pflichtlagerware<\/td><\/tr>\n        <tr><td class=\"d2-status-code\">11<\/td><td>Grossist eingeschr\u00e4nkt; Direktbezug bei Firma<\/td><\/tr>\n      <\/tbody>\n    <\/table>\n    <div class=\"d2-note\">Der <code>shortages<\/code>-Grundreport liefert standardm\u00e4ssig <strong>alle<\/strong> Status. M\u00f6chten Sie nur einen Teil, filtern Sie mit <code>status=<\/code>: abgeschlossene Engp\u00e4sse mit <code>status=9<\/code>, nicht mehr verkaufte Produkte mit <code>status=7<\/code>, ausser Handel befindliche mit <code>status=8<\/code> (liefert sowohl Status 8 als auch <code>Trade = AH<\/code>, die dauerhafte Kennzeichnung; Status 8 ist nur \u00dcbergangsl\u00f6sung). Den Zustand eines einzelnen Eintrags lesen Sie zuverl\u00e4ssig aus den Feldern <code>statusCode<\/code>, <code>isActive<\/code> und <code>isAusserHandel<\/code> ab.<\/div>\n  <\/div>\n\n  <div class=\"d2-divider\"><\/div>\n\n  <!-- HTTP Codes -->\n  <div class=\"d2-section\">\n    <div class=\"d2-section-head\">\n      <div class=\"d2-section-icon\">&#x1f4e1;<\/div>\n      <span class=\"d2-section-title\">HTTP Status Codes<\/span>\n    <\/div>\n    <div class=\"d2-http-grid\">\n      <div class=\"d2-http-item d2-http-200\"><span class=\"d2-http-code\">200<\/span> Erfolgreich<\/div>\n      <div class=\"d2-http-item d2-http-400\"><span class=\"d2-http-code\">400<\/span> Ung\u00fcltige Parameter<\/div>\n      <div class=\"d2-http-item d2-http-401\"><span class=\"d2-http-code\">401<\/span> Ung\u00fcltiger API-Key<\/div>\n      <div class=\"d2-http-item d2-http-404\"><span class=\"d2-http-code\">404<\/span> Nicht gefunden<\/div>\n      <div class=\"d2-http-item d2-http-429\"><span class=\"d2-http-code\">429<\/span> Rate Limit \u00fcberschritten<\/div>\n      <div class=\"d2-http-item d2-http-500\"><span class=\"d2-http-code\">500<\/span> Serverfehler<\/div>\n    <\/div>\n  <\/div>\n\n  <!-- CTA -->\n  <div class=\"d2-cta\">\n    <div>\n      <h3>Fragen zur API?<\/h3>\n      <p>Wir helfen gerne bei der Integration.<\/p>\n    <\/div>\n    <a href=\"https:\/\/www.drugshortage.ch\/index.php\/kontakt\/\" class=\"d2-cta-btn\">Kontakt aufnehmen \u2192<\/a>\n  <\/div>\n\n<\/div>\n\n<script>\nfunction d2toggle(header) {\n  const body    = header.nextElementSibling;\n  const chevron = header.querySelector('.d2-chevron');\n  body.classList.toggle('open');\n  chevron.classList.toggle('open');\n}\nfunction d2kopiere(btn) {\n  const pre = btn.closest('.d2-auth-box').querySelector('pre');\n  navigator.clipboard.writeText(pre.textContent).then(() => {\n    btn.textContent = '\u2713 kopiert';\n    setTimeout(() => btn.textContent = 'kopieren', 2000);\n  });\n}\n<\/script>\n\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>API v1 \u00b7 \u00f6ffentlich drugshortage.ch API Direkter, strukturierter Zugriff auf alle Schweizer Arzneimittel-Lieferengp\u00e4sse. Echtdaten, t\u00e4glich aktualisiert, zweisprachig DE\/FR. Kein Scraping \u2013 saubere REST-API mit Rate Limiting. BASE URL drugshortage.ch\/api\/v1\/drugshortage.php?endpoint= &#x1f511; Authentifizierung bash kopieren # Mit API-Key (Bearer Token) curl -H &#8222;Authorization: Bearer IHR_API_KEY&#8220; &#8222;https:\/\/www.drugshortage.ch\/api\/v1\/drugshortage.php?endpoint=shortages&#8220; # Alternativ als Parameter curl &#8222;https:\/\/www.drugshortage.ch\/api\/v1\/drugshortage.php?endpoint=shortages&amp;api_key=IHR_KEY&#8220; # Response-Header X-RateLimit-Limit: 5000 X-RateLimit-Remaining:&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":"","_members_access_role":[],"_members_access_error":""},"class_list":["post-21677","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21677","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/comments?post=21677"}],"version-history":[{"count":5,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21677\/revisions"}],"predecessor-version":[{"id":21808,"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/pages\/21677\/revisions\/21808"}],"wp:attachment":[{"href":"https:\/\/www.drugshortage.ch\/index.php\/wp-json\/wp\/v2\/media?parent=21677"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}