GET /api/v1/tenders
Public procurement notices nationwide (oeffentlichevergabe.de, Tier A)
Public procurement notices across ALL cities in the store from the German federal procurement publication service (oeffentlichevergabe.de, OCDS): searches nationwide without querying each city individually. Each notice with title, status, buyer, value and a source link. status is derived semantically from the notice_type: active = running procedure, complete = decided procedure incl. cancelled awards; the raw award status is in the award_status field. Decided procedures additionally carry contractors (suppliers) and the awarded value (award_value/award_currency); amounts of 0 or less from the source are treated as not stated (null). The submission deadline is almost always missing in the source export and then only found in the original notice via source_url. Read-only from the deduplicated store (no live pull in the request path). Filter by q (title keyword), status (active/complete) and since (from ISO date), with pagination (limit/offset). No notices -> 200 source_status="no_data", data=null (honest). CC0 (Tier A). Disabled -> 200 source_status="disabled".
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
q | query | no | string | Titel-Stichwort (Teilstring, parametrisierter LIKE-Filter). |
status | query | no | string | Verfahrens-Status (active = laufendes Vergabeverfahren, complete = entschiedenes Verfahren inkl. aufgehobener Vergaben; Detail im Feld award_status). |
since | query | no | string | Nur Bekanntmachungen ab diesem ISO-Datum YYYY-MM-DD; ungültiges Datum -> 422. |
limit | query | no | integer | Seitengröße (Default 50, Cap 200). |
offset | query | no | integer | Seiten-Offset (>= 0); Overflow -> leere Seite, no_data. |
Code samples
curl "https://infranode.dev/api/v1/tenders"const res = await fetch("https://infranode.dev/api/v1/tenders");
const data = await res.json();
console.log(data);import httpx
res = httpx.get("https://infranode.dev/api/v1/tenders")
res.raise_for_status()
print(res.json()) Try it
No live console is available for this endpoint. It is an operational or demo operation (for example a forced error) and is only documented here. Use the code samples above to call it directly.