Bidpoint Partner API – Tender-Suche

Diese Dokumentation beschreibt den Such-Endpoint der Bidpoint Partner API. Über diesen Endpoint durchsuchen Sie unseren aggregierten Bestand an deutschen und europäischen Ausschreibungen (Quellen: TED, service.bund.de und regionale Vergabeplattformen) per Stichwort.

Hinweis zum Umfang: Dies ist einer von rund 50 Endpoints der Partner API. Diese Seite deckt bewusst nur die Tender-Suche ab – den Endpoint, den die meisten Integrationen als Einstieg nutzen. Wenn Sie Zugriff auf weitere Funktionen (Detaildaten, Dokumente, Vergabestatus etc.) benötigen, melden Sie sich gerne bei uns.


Auf einen Blick

Methode & Pfad

GET /api/v1/partner/search

Base URL

https://api.bidpoint.ai

Authentifizierung

Authorization: Bearer <Ihr-API-Key> (bei jeder Anfrage)

Format

JSON

Suchart

Volltext-/Stichwortsuche über Titel, Beschreibung und Ausschreibungsdokumente


Authentifizierung

Jede Anfrage benötigt Ihren persönlichen API-Key im Authorization-Header:

Authorization: Bearer <Ihr-API-Key>

Ohne gültigen Key antwortet die API mit 401 Unauthorized. Behandeln Sie den Key wie ein Passwort – er gehört nicht in clientseitigen Code oder ein öffentliches Repository.


Anfrage

Endpoint

GET https://api.bidpoint.ai/api/v1/partner/search

Parameter

Alle Parameter werden als Query-Parameter übergeben. Alle sind optional – ohne search erhalten Sie einen reinen Filter-Modus (neueste Ausschreibungen, nach Filtern eingegrenzt).

Parameter

Typ

Beschreibung

search

string

Stichwortsuche. Die Treffer werden nach Relevanz sortiert. Beispiel: straßenbau, IT-Sicherheit, Reinigungsdienstleistung.

filter

string

open (nur laufende Ausschreibungen) oder awarded (bereits vergeben).

dates

string[]

Zeitraum [Start, Ende] im Format YYYY-MM-DD. Filtert nach Veröffentlichungsdatum. Wird als wiederholter Parameter gesendet.

page

number

Seitennummer, beginnend bei 1 (Standard: 1).

limit

number

Treffer pro Seite (Standard: 10, Maximum: 100).

radius

object

Geografischer Umkreisfilter (optional, siehe unten).

dates – Zeitraum wird als zwei wiederholte Schlüssel übergeben:

?dates=2026-01-01&dates=2026-06-30

radius – Umkreis wird in Bracket-Syntax übergeben. point ist [Längengrad, Breitengrad], distance der Radius in Metern:

?radius[point][]=13.405&radius[point][]=52.52&radius[distance]=50000

Beispiele

Stichwortsuche nach laufenden Ausschreibungen

curl -H "Authorization: Bearer $BIDPOINT_API_KEY" \

"https://api.bidpoint.ai/api/v1/partner/search?search=straßenbau&filter=open"

Stichwortsuche mit Zeitraum und Seitengröße

curl -H "Authorization: Bearer $BIDPOINT_API_KEY" \

"https://api.bidpoint.ai/api/v1/partner/search?search=IT-Sicherheit&dates=2026-01-01&dates=2026-06-30&limit=50"

Suche im Umkreis von 50 km um Berlin

curl -H "Authorization: Bearer $BIDPOINT_API_KEY" \

"https://api.bidpoint.ai/api/v1/partner/search?radius[point][]=13.405&radius[point][]=52.52&radius[distance]=50000"


Antwort

Die API liefert ein JSON-Objekt mit data (Trefferliste) und meta (Seiteninfo).

Such-Modus (mit search)

{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "title": "Straßenbauarbeiten Los 4 Nord",
      "publishedAt": "2026-03-01T00:00:00.000Z",
      "deadlineAt": "2026-04-15T00:00:00.000Z",
      "awardedAt": null,
      "updatedAt": "2026-03-02T09:12:00.000Z",
      "geolocation": [13.405, 52.52],
      "file": null,
      "score": 0.87
    }
  ],
  "meta": {
    "page": 1,
    "limit": 10,
    "hasNextPage": true,
    "hasPrevPage": false
  }
}

Felder

Feld

Typ

Bedeutung

id

string (UUID)

Eindeutige Kennung der Ausschreibung. Damit rufen Sie später Detaildaten ab.

title

string

Titel der Ausschreibung.

publishedAt

string (ISO 8601)

Veröffentlichungsdatum.

deadlineAt

string | null

Angebotsfrist. Kann auch bei laufenden Ausschreibungen null sein.

awardedAt

string | null

Zuschlagsdatum, falls bereits vergeben.

geolocation

[lon, lat] | null

Koordinaten des Erfüllungsorts.

file

string | null

Nur im Such-Modus: UUID des Quelldokuments, wenn der Treffer aus einem Ausschreibungsdokument stammt. null bedeutet, der Treffer kam aus dem Ausschreibungstext selbst.

score

number

Nur im Such-Modus: Relevanz-Score von 0 bis 1. Dient der Sortierung. Nicht als harter Filterwert geeignet (siehe Hinweise).

Im reinen Filter-Modus (ohne search) entfallen die Felder file und score.


Paginierung

Die Suche liefert die Treffer seitenweise. Statt einer Gesamtzahl gibt es ein hasNextPage-Flag – Sie blättern so lange weiter, bis hasNextPage auf false steht:

page=1 while : ; do resp=$(curl -s -H "Authorization: Bearer $BIDPOINT_API_KEY" "https://api.bidpoint.ai/api/v1/partner/search?search=straßenbau&limit=100&page=$page") echo "$resp" | jq '.data[].title' [ "$(echo "$resp" | jq '.meta.hasNextPage')" = "true" ] || break page=$((page + 1)) done

Bitte fair nutzen: Es gibt kein hartes Rate-Limit, aber bei großen Durchläufen bauen Sie bitte eine kurze Pause (z. B. 100 ms) zwischen den Anfragen ein.


Fehler

Fehler kommen mit passendem HTTP-Statuscode und einem JSON-Body mit error-Feld:

{ "error": "unauthorized" } { "error": "invalid_request", "fields": { "filter": "invalid value" } }

Status

Error

Bedeutung

400

invalid_request

Ungültige Parameter (z. B. unbekannter filter-Wert oder fehlerhaftes dates/radius).

401

unauthorized

API-Key fehlt oder ist ungültig.

404

not_found

Ressource existiert nicht.


Gut zu wissen

Diese Punkte helfen Ihnen, saubere Ergebnisse zu erhalten:

  1. score ist eine Sortierhilfe, kein Filter. Auch ein hoher Score kann einen Treffer enthalten, in dem Ihr Stichwort nur als Teilzeichenkette in einem unpassenden Kontext vorkommt. Wenn Sie exakte Treffer brauchen, prüfen Sie Titel/Beschreibung zusätzlich auf Ihrer Seite (z. B. mit Wortgrenzen).

  2. Dieselbe Ausschreibung kann mehrfach erscheinen – etwa pro Los oder Version. Wenn Sie eine eindeutige Liste brauchen, deduplizieren Sie am besten über (Titel, Auftraggeber) und nicht allein über die id.

  3. deadlineAt: null heißt nicht „abgelaufen". Viele aktive Ausschreibungen haben keine Frist hinterlegt. Schließen Sie nicht allein anhand der Frist auf den Status.

  4. file zeigt die Treffer-Herkunft an. Ist file gesetzt, stammt der Treffer aus einem Ausschreibungsdokument; bei null aus dem Ausschreibungstext selbst.

  5. Texte können HTML-Entities enthalten (z. B. &quot;). Wandeln Sie diese vor der Anzeige um.


Nächste Schritte

  • Über die id aus den Suchergebnissen rufen Sie die vollständigen Detaildaten einer Ausschreibung ab (eigener Endpoint).

  • Brauchen Sie weitere Funktionen der Partner API? Sprechen Sie uns an.