Öffentliche API

API-Dokumentation

Freier Zugang zu aggregierten, anonymisierten Ergebnissen des Abwanderungsmonitors Deutschland. Keine Registrierung erforderlich.

Übersicht

Die API liefert aggregierte Statistiken aus der anonymen Online-Befragung. Individuelle Antworten sind nicht zugänglich.

Base-URL: https://backend-production-00697.up.railway.app

Format: JSON · Caching: 1 Stunde (Cache-Control: public, max-age=3600) · Auth: Keine

Endpoints

GET/api/v1/results

Aktuelle aggregierte Ergebnisse der letzten Erhebungsversion.

Response (gekürzt)

{
  "version": 5,
  "last_updated": "2026-02-15T02:00:00.000Z",
  "total_submissions": 1250,
  "approved_submissions": 1180,
  "data": {
    "awi": {
      "score": 47,
      "sub_indicators": {
        "abwanderungsneigung": 38.2,
        "handlungsdruck": 42.1,
        "wahrnehmungsdruck": 55.8,
        "konkretisierungsgrad": 28.4,
        "bleibe_resilienz": 35.6
      },
      "sample_size": 1180
    },
    "age_distribution": [
      { "value": "25-34", "count": 380, "percentage": "32.2", "reliable": true },
      ...
    ],
    "emigration_likelihood": [...],
    "future_perspective": [...],
    "emigration_by_age": {
      "25-34": {
        "sehr wahrscheinlich": { "count": 85, "percentage": "22.4", "reliable": true },
        ...
      }
    },
    "changes_since_last": {
      "sample_size_change": 120,
      "days_since_last": 7,
      "emigration_likelihood_trend": { ... }
    }
  }
}
GET/api/v1/results/trend

Historischer Verlauf über alle Aggregationsversionen.

Response

{
  "versions": [
    {
      "version": 1,
      "date": "2026-01-15T02:00:00.000Z",
      "awi": 42,
      "sample_size": 500,
      "key_metrics": {
        "emigration_likely_pct": 35.2,
        "negative_future_pct": 48.1,
        "would_stay_pct": 52.0,
        "concrete_plans_pct": 8.5
      }
    },
    ...
  ]
}

Datentypen

AggregationItem

{
  "value": string,      // Kategorie-Name
  "count": number,      // Anzahl
  "percentage": string,  // z.B. "42.3"
  "reliable": boolean   // true wenn count >= 30
}

CrossTabItem

{
  "count": number,
  "percentage": string,  // Zeilen-Prozent
  "reliable": boolean
}

Code-Beispiele

curl

curl -s https://api.abwanderungsmonitor.org/api/v1/results | jq '.data.awi'

Python

import requests

response = requests.get("https://api.abwanderungsmonitor.org/api/v1/results")
data = response.json()

awi = data["data"]["awi"]
print(f"AWI Score: {awi['score']}/100")
print(f"Stichprobe: {awi['sample_size']} Teilnehmende")

JavaScript

const res = await fetch("https://api.abwanderungsmonitor.org/api/v1/results");
const { data } = await res.json();

console.log(`AWI: ${data.awi.score}/100`);
console.log(`Emigration likely: ${
  data.emigration_likelihood
    .filter(i => i.value.includes("wahrscheinlich"))
    .reduce((s, i) => s + parseFloat(i.percentage), 0)
    .toFixed(1)
}%`);

Nutzungsbedingungen

  • Freie Nutzung für nicht-kommerzielle Zwecke mit Quellenangabe
  • Quellenangabe: „Abwanderungsmonitor Deutschland, abwanderungsmonitor.org“
  • Hinweis auf Nicht-Repräsentativität bei jeder Veröffentlichung erforderlich
  • Kommerzielle Nutzung und API-Zugang auf Anfrage: B2B-Kontakt
  • Keine Gewähr auf Verfügbarkeit oder Vollständigkeit

AWI-Berechnungsmethodik

Der Abwanderungs-Index (AWI) ist ein gewichteter Composite-Score (0–100) aus 5 Sub-Indikatoren:

AWI = 0.30 × Abwanderungsneigung
    + 0.25 × Handlungsdruck
    + 0.20 × Wahrnehmungsdruck
    + 0.15 × Konkretisierungsgrad
    + 0.10 × Bleibe-Resilienz (invertiert)

Abwanderungsneigung:  % "eher/sehr wahrscheinlich" (emigration_likelihood)
Handlungsdruck:       % "stark/sehr stark" (life_planning_influence)
Wahrnehmungsdruck:    Ø neg. Anteil (4 Likert-Dimensionen)
Konkretisierungsgrad: √(% Zeithorizont × % Zielregion)
Bleibe-Resilienz:     100 − % "ja/eher ja" (would_stay_if_improved)