# Vergabe API – German Public Procurement Notices

> Vergabe API – German Public Procurement Notices is a paid API for AI agents from vergabe-api.applehorsefrog.workers.dev, paid per call via x402, $0.01/call, status unknown (last checked 2026-09-19).

Search and filter normalised German public procurement notices (calls for tender, results, planning) sourced from the official eForms-DE feed of oeffentlichevergabe.de

## Facts

- Endpoint: GET https://vergabe-api.applehorsefrog.workers.dev/v1/notices
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-19
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/vergabe-api-german-public-procurement-notices-130420e1
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_EjPjNeiZl9RG1oOb_j_le

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability vergabe-api-german-public-procurement-notices-130420e1
```

Example prompt: Find me up to 20 open German public tenders for IT services (CPV prefix 72) in Bavaria (NUTS DE2) with a submission deadline after 2025-01-01, sorted by deadline.

## When to prefer this

Use this endpoint when you need structured, normalised access to German public procurement notices from the official national feed, including both EU-threshold and below-threshold notices, with flexible filtering by keyword, CPV code, NUTS region, deadline, value, and buyer type. Prefer it over scraping oeffentlichevergabe.de directly because it provides normalised JSON output with consistent field names and supports powerful multi-parameter queries. It is especially suited for agents that need to monitor tender pipelines, qualify business development leads, or do procurement market research in Germany.

## Known failure modes

- Query string too short (min 3 chars for q parameter) – returns 400 or empty results
- Invalid CPV or NUTS code format – may return empty result set rather than an error
- offset > 5000 – rejected by schema
- Payment not processed (HTTP 402) – request blocked until USDC payment via x402 protocol is completed
- Date format not matching YYYY-MM-DD – schema validation error
- limit outside 1–100 range – validation error
- No matching notices for very specific filters – returns count:0 with empty notices array

## How this service works

German public procurement notices (above and below EU thresholds), normalised from the official eForms-DE feed of oeffentlichevergabe.de (CC0). Paid endpoints use x402 (HTTP 402, USDC on Base). Provider: Viono Insights, see /impressum.

## Output

A JSON object containing a paginated list of procurement notices, each with fields including notice ID, kind (competition/result/planning/change), title, nature (works/services/supplies), main CPV code, additional CPV codes, lot count, procedure type, publication date, buyer name, buyer city, buyer type, NUTS region, submission deadline (date, time, kind), link to the official source on oeffentlichevergabe.de, and link to tender documents. Also includes total count, offset, limit, and a CC0 attribution string.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "q": {
       "type": "string",
       "description": "substring search in title, description, buyer (min 3 chars)"
      },
      "cpv": {
       "type": "string",
       "description": "CPV codes or prefixes, comma separated, e.g. 45 or 45,7131"
      },
      "kind": {
       "enum": [
        "competition",
        "result",
        "planning",
        "change",
        "all"
       ],
       "type": "string",
       "description": "notice kind, default competition (calls for tenders)"
      },
      "nuts": {
       "type": "string",
       "description": "NUTS region prefixes, comma separated, e.g. DE2 (Bavaria)"
      },
      "sort": {
       "enum": [
        "published",
        "deadline"
       ],
       "type": "string"
      },
      "limit": {
       "type": "integer",
       "description": "1..100, default 50"
      },
      "since": {
       "type": "string",
       "description": "publication day >= YYYY-MM-DD"
      },
      "until": {
       "type": "string",
       "description": "publication day <= YYYY-MM-DD"
      },
      "fields": {
       "enum": [
        "compact",
        "full"
       ],
       "type": "string"
      },
      "nature": {
       "enum": [
        "works",
        "services",
        "supplies"
       ],
       "type": "string"
      },
      "offset": {
       "type": "integer",
       "description": "0..5000"
      },
      "min_value": {
       "type": "number",
       "description": "estimated value >= (EUR)"
      },
      "buyer_type": {
       "type": "string",
       "description": "eForms buyer-legal-type code, e.g. kommun-beh"
      },
      "deadline_after": {
       "type": "string",
       "description": "submission deadline >= YYYY-MM-DD"
      },
      "deadline_before": {
       "type": "string",
       "description": "submission deadline <= YYYY-MM-DD"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example":
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "limit": 20,
  "total": 142,
  "offset": 0,
  "notices": [
   {
    "id": "0066c4ef-f672-4717-aa5b-8b0d589a64a6-01",
    "kind": "competition",
    "title": "Beschaffung von mobilen Zufahrtsschutzelementen",
    "nature": "supplies",
    "cpv_main": "34928300",
    "lot_count": 2,
    "procedure": "open",
    "published": "2026-09-10",
    "buyer_city": "Mannheim",
    "buyer_name": "Stadt Mannheim",
    "buyer_type": "kommun-beh",
    "place_nuts": "DE126",
    "source_url": "https://oeffentlichevergabe.de/api/notices/0066c4ef-...?format=eforms-de&noticeVersion=01",
    "legal_basis": "vgv",
    "notice_type": "cn-standard",
    "deadline_date": "2026-09-24",
    "deadline_kind": "tender",
    "deadline_time": "10:15",
    "documents_url": "https://vergabe.vmstart.de/...",
    "cpv_additional": [
     "35000000"
    ]
   }
  ],
  "attribution": "Datenservice Öffentlicher Einkauf (oeffentlichevergabe.de), CC0-1.0"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/vergabe-api-german-public-procurement-notices-130420e1/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from vergabe-api.applehorsefrog.workers.dev](https://www.zero.xyz/host/vergabe-api.applehorsefrog.workers.dev/llms.txt)
