---
title: "Öffentliche Auftragsvergabe deutschlandweit (oeffentlichevergabe.de, Tier A)"
method: GET
path: "/api/v1/tenders"
tags: ["cities"]
---

# Öffentliche Auftragsvergabe deutschlandweit (oeffentlichevergabe.de, Tier A)

`GET /api/v1/tenders`

Öffentliche Auftragsbekanntmachungen über ALLE Städte im Store aus dem Bekanntmachungsdienst des Bundes (oeffentlichevergabe.de, OCDS): sucht deutschlandweit, ohne jede Stadt einzeln abzufragen. Je Bekanntmachung Titel, Status, Auftraggeber, Wert und Quell-Link. status wird semantisch aus dem notice_type abgeleitet: active = laufendes Vergabeverfahren, complete = entschiedenes Verfahren inkl. aufgehobener Vergaben; der rohe Zuschlag-Status steht im Feld award_status. Entschiedene Verfahren tragen zusaetzlich Auftragnehmer (suppliers) und vergebenen Auftragswert (award_value/award_currency); Betraege <= 0 aus der Quelle werden als nicht angegeben (null) gewertet. Die Angebotsfrist (deadline) fehlt im Quell-Export fast immer und steht dann nur in der Original-Bekanntmachung über source_url. Read-only aus dem deduplizierten Store (kein Live-Pull im Request-Pfad). Filter q (Titel-Stichwort), status (active/complete) und since (ab ISO-Datum), mit Pagination (limit/offset). Keine Bekanntmachungen -> 200 source_status="no_data", data=null (ehrlich). CC0 (Tier A). Deaktiviert -> 200 source_status="disabled".

## Query parameters

- `q` string
- `status` 'active' | 'complete'
- `since` string, date
- `limit` integer
- `offset` integer

## Response `200`

Auftragsvergabe-Envelope (aggregierte notices-Liste + count, oder null bei no_data/disabled)

- object
  - `data` object, nullable, required
    - `notices` object[]
    - `count` integer
    - `license_id` string — Lizenz des Datensatzes (CC0 = Tier A).
    - `license_tier` string
    - `attribution` object
      - `text` string
      - `license_url` string
  - `meta` Meta, required
    - `correlation_id` string, nullable
    - `source_status` 'ok' | 'no_data' | 'disabled' | 'not_ingested' | 'not_covered' — Ehrlicher Quellen-Status der Antwort. "ok" (Daten vorhanden), "no_data" (Quelle erreichbar/abgedeckt, aber gerade keine Daten), "disabled" (Quelle per Toggle aus), "not_ingested" (kein Snapshot), "not_covered" (Stadt ist für diesen teilabgedeckten Endpunkt strukturell nicht abgedeckt; data=null, siehe covered_cities). Klar unterscheidbar vom 404 (Stadt unbekannt).
    - `cache_status` string, nullable — Cache-Herkunft (hit/miss/stale), sofern die Route cacht.
    - `covered_cities` string[] — Nur bei source_status="not_covered": die Stadt-Slugs, die dieser teilabgedeckte Endpunkt tatsächlich bedient (z. B. flood, webcams, traffic, road-events).
    - `pagination` object — Bei paginierbaren Datenart-Listen (charging, energy, events, transit, OSM-Feature-Endpunkte): der EHRLICH ausgewiesene Ausschnitt (keine stille Kappung). KANAL-ABHÄNGIGER Default für gleiche URL: direktes REST liefert die volle Liste (limit=null, returned==total, truncated=false); GPT-Actions (erkannt am OpenAI-Header) bekommen ein serverseitig gebundenes Default-Limit; MCP-Aufrufe sind gebunden, weil der MCP-Client selbst ein Default-Limit setzt. Kanalunabhängige Overrides: limit=all (oder ?all=1) erzwingt die volle Liste, limit + offset blättern gezielt. meta.pagination ist bei ALLEN Kanälen gesetzt.
      - `total` integer — Gesamtzahl der Einträge (voller Bestand).
      - `returned` integer — Zahl der auf dieser Seite ausgelieferten Einträge.
      - `limit` integer, nullable — Angewandtes Seiten-Limit; null bei Vollausgabe (REST-Default oder limit=all).
      - `offset` integer — Start-Offset der Seite.
      - `truncated` boolean — true, wenn hinter dieser Seite noch Einträge liegen (offset + returned < total); bei Vollausgabe false.

## Other responses

- `422` — Ungültiger Query-Parameter (status/q/since/limit/offset)

---

[API](https://skmtc.net/infranode/apis/infranode-api.md) · [All operations](https://skmtc.net/infranode/apis/infranode-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/infranode/infranode-api/versions/8fee8b095f31/schema)
