Schnittstelle für Programme (API)

ResearchRadar gibt sein ganzes Verzeichnis auch maschinenlesbar als JSON aus. Die Adressen unten liefern dieselben Einträge wie die Website, und die Filterwörter, die sie kennen, bedeuten genau dasselbe wie die Filterknöpfe dort. Welche Wörter eine Adresse kennt, steht bei ihr; eine Volltextsuche gibt es hier nicht.

Gedacht ist das für Programme, nicht für Leserinnen und Leser: etwa für die Seite eines Forschungsservice, die die nächsten Einreichfristen der Psychologie von selbst anzeigt.

Bedingungen

Basisadresse

https://researchradar.at/api/v1

Alle Adressen unten stehen unter dieser Basis. Geantwortet wird mit application/json in UTF-8.

Aufbau der Antwort

Jede Antwort besteht aus zwei Teilen: meta beschreibt die Antwort selbst, data ist die Liste der Einträge.

{
  "meta": {
    "generated_at": "2026-08-02T06:20:11+02:00",
    "count": 61,
    "version": "1.84",
    "source": "https://researchradar.at"
  },
  "data": [ … ]
}

Die Adressen

Mehrere Werte werden durch Komma getrennt. Ein Wert, der nicht in der Liste steht, wird stillschweigend übergangen — die Antwort bleibt gültig, der Filter greift dann nur nicht. Genauso wird ein Abfrageparameter übergangen, den die Adresse nicht kennt.

GET /api/v1/grants

Das Förderverzeichnis: jedes Programm mit Frist, Betrag, Zielgruppe, Fachrichtung und Quelle.

Ohne Parameter kommt das ganze Verzeichnis außer den eingestellten Programmen. Anders als die Website filtert die Schnittstelle nicht von sich aus auf Österreich.

Abfrageparameter

Felder je Eintrag

id, institution_id, name, name_en, description_de, description_en, website, application_url, amount_range, target_group_de, target_group_en, career_stages, deadline_info_de, deadline_info_en, deadline_dates, deadline_rolling, disciplines, eligibility_countries, discipline_note_de, discipline_note_en, tags, mobility, first_seen, source_checked, status, funding_category

Beispiel

curl 'https://researchradar.at/api/v1/grants?disciplines=psychology&status=open,rolling'

Antwort, gekürzt

{
  "meta": { … },
  "data": [
    {
      "id": "fwf-esprit",
      "institution_id": "fwf",
      "name": "ESPRIT-Programm",
      "name_en": "ESPRIT Programme",
      "website": "https://www.fwf.ac.at/foerdern/…/esprit",
      "career_stages": ["R2"],
      "deadline_rolling": true,
      "deadline_dates": [],
      "disciplines": ["all"],
      "eligibility_countries": ["AT"],
      "status": "active",
      "funding_category": "research",
      "source_checked": "2026-07-30",
      …
    }
  ]
}

GET /api/v1/conferences

Das Konferenzverzeichnis: Tagungen mit Ort, Terminen und Frist für Beiträge.

Ohne Parameter kommen alle Konferenzen, auch die bereits vergangenen — auf der Website sind die ausgeblendet. Sortiert wird nach dem Zustand der Einreichfrist in der Reihenfolge der Werte unten, dann nach diesem Datum, das früheste zuerst: der Frist, und wo keine steht, dem Beginn der Veranstaltung. In den abgelaufenen Gruppen heißt das die älteste zuerst.

Abfrageparameter

Felder je Eintrag

id, source_id, organiser_id, name, name_en, website, event_start, event_end, city, country, cfp_deadline, registration_deadline, submission_type_de, submission_type_en, disciplines, discipline_note_de, discipline_note_en, first_seen, source_checked

Beispiel

curl 'https://researchradar.at/api/v1/conferences?status=cfp_open'

Antwort, gekürzt

{
  "meta": { … },
  "data": [
    {
      "id": "boep-avm-tagung-2026",
      "organiser_id": "boep",
      "name": "28. wissenschaftliche Tagung der AVM",
      "website": "https://www.boep.or.at/veranstaltungen/…",
      "event_start": "2026-10-22",
      "event_end": "2026-10-25",
      "city": "St. Georgen am Längsee",
      "cfp_deadline": "2026-08-31",
      "disciplines": ["psychology"],
      …
    }
  ]
}

GET /api/v1/organizations

Fördergeber und Konferenzveranstalter in einem Verzeichnis, jeweils mit dem ganzen Datensatz der Organisation.

Ohne Parameter und immer vollständig. Jeder Datensatz trägt mindestens die Felder unten — bis auf name_en, das nur dort steht, wo die Organisation einen englischen Namen hat. Manche Datensätze tragen zusätzlich Felder, deren Name mit einem Unterstrich beginnt; das sind interne Notizen zur Herkunft einer Angabe.

Abfrageparameter

Diese Adresse nimmt keine Abfrageparameter.

Felder je Eintrag

id, name, name_en, short_name, type, country, website, description_de, description_en

Beispiel

curl 'https://researchradar.at/api/v1/organizations'

Antwort, gekürzt

{
  "meta": { … },
  "data": [
    {
      "id": "fwf",
      "name": "FWF – Fonds zur Förderung der wissenschaftlichen Forschung",
      "short_name": "FWF",
      "type": "federal",
      "country": "AT",
      "website": "https://www.fwf.ac.at",
      …
    }
  ]
}

GET /api/v1/findings

Was der tägliche Abgleich neu auf den Seiten der Fördergeber gefunden hat, das Neueste zuerst.

Ein Fund ist ein Titel mit einer Adresse, kein Verzeichniseintrag — das Verzeichnis selbst steht unter /grants.

Abfrageparameter

Höchstzahl der Funde je Antwort: 100

Felder je Eintrag

source, source_name, id, title, url, found_at

Beispiel

curl 'https://researchradar.at/api/v1/findings?sources=fwf'

Antwort, gekürzt

{
  "meta": { … },
  "data": [
    {
      "source": "fwf",
      "source_name": "FWF",
      "id": "esprit-2026",
      "title": "ESPRIT – Ausschreibung 2026",
      "url": "https://www.fwf.ac.at/…/esprit",
      "found_at": "2026-07-31T06:17:04+02:00"
    }
  ]
}

Ein durchgerechnetes Beispiel

Die nächsten Einreichfristen der Psychologie für eine eigene Seite: Programme der Fachrichtung Psychologie, fachübergreifende inbegriffen, deren Frist noch bevorsteht.

curl 'https://researchradar.at/api/v1/grants?disciplines=psychology&status=open'

/grants sortiert nicht — die Antwort kommt in der Reihenfolge des Verzeichnisses. Die nächsten fünf holt sich das aufrufende Programm, indem es je Eintrag das früheste noch nicht vergangene Datum aus deadline_dates nimmt und danach sortiert.

Zwischenspeichern und Einbinden

Begrenzung

Gezählt wird je aufrufender Adresse in einem gleitenden Zeitfenster, über alle Adressen der Schnittstelle zusammen. Wer darüber kommt, bekommt 429 und im Kopf Retry-After die Sekunden bis zum nächsten Versuch.

Fehler

HTTP/1.1 404 Not Found
Content-Type: application/json; charset=utf-8

{"error": "not found"}

Ersetzte Adressen

Zwei Adressen sind durch eine neuere ersetzt worden und antworten trotzdem weiter — eine einmal veröffentlichte Adresse wird hier nicht abgeschaltet. Ihr meta-Block trägt zusätzlich das Feld deprecated mit einem Satz, der die neue Adresse nennt.

Woher die Daten kommen

Jedes Feld jedes Verzeichniseintrags stammt von der abgerufenen Seite der Quelle — beim Förderprogramm die des Fördergebers, bei einer Konferenz die des Veranstalters. Steht dort nichts, bleibt das Feld leer. Förderungen und Konferenzen tragen zusätzlich source_checked, wann die Felder zuletzt mit dieser Seite verglichen wurden, und first_seen, wann der Eintrag ins Verzeichnis gekommen ist.

Was dieses Verzeichnis ist