# TED Tender Monitor

> TED Tender Monitor is a paid API for AI agents from 4yearcycle.com, paid per call via x402, $0.01/call, status unknown (last checked 2026-10-13).

Fetches EU public procurement tender notices from the official TED (Tenders Electronic Daily) v3 API, filtered by CPV code, country, and keywords over a configurable look-back window.

## Facts

- Endpoint: GET https://4yearcycle.com/x402/tenders?utm_source=zero.xyz
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/ted-tender-monitor-f116fa2c
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_NkuT52c5tdyfHjsmVYnii

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 ted-tender-monitor-f116fa2c
```

Example prompt: Find me EU public procurement tenders for steel and metal construction work (CPV codes 45262670 and 44316000) published in Germany and Austria over the last 30 days — filter for anything mentioning Stahlbau or Fräsen and return up to 200 results.

## When to prefer this

Choose this endpoint when you need structured, filterable EU public procurement data from the authoritative TED database — especially when you need to combine CPV code filtering, geographic scoping, keyword search, and a publication date window in a single call. Prefer this over generic web search for tenders when you need machine-readable structured output (deadlines, buyer names, CPV codes, PDF links) rather than unstructured HTML. Ideal for procurement monitoring workflows, competitive intelligence pipelines, and bid opportunity alerts for specific trade categories across EU member states.

## Known failure modes

- Invalid CPV code format (non-8-digit or wrong separator) returns a validation error
- Country code not in ISO 3166-1 alpha-3 format causes filtering to fail or return no results
- days parameter above 90 is silently capped at 90, potentially returning fewer results than expected
- max parameter above 500 is capped at 500
- No matching tenders returns count:0 and an empty tenders array
- TED upstream API downtime or rate limiting may cause request failure
- Keyword filter too narrow may return 0 results even when base CPV/country matches exist

## How this service works

EU public procurement tender notices from the official TED (Tenders Electronic Daily) v3 API, filtered by CPV product/service code, country of performance and free-text keywords over a recent publication window; returns structured JSON per notice with title, buyer, deadline, publication date, CPV codes, notice URL and German PDF link.

## Output

A JSON object with a count of matched tenders and an array of structured notice objects, each containing: publication number, title, buyer name, submission deadline (ISO 8601), publication date, CPV code list, notice type, short description, canonical TED notice URL, and a direct link to the German-language PDF of the notice.

## 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",
     "required": [],
     "properties": {
      "cpv": {
       "type": "string",
       "default": "45262670",
       "pattern": "^\\d{8}(,\\d{8})*$",
       "examples": [
        "45262670",
        "45262670,44316000"
       ],
       "description": "Comma-separated CPV codes (8-digit EU Common Procurement Vocabulary) to filter notices by, e.g. 45262670 = metal structures. Default: 45262670."
      },
      "max": {
       "type": "string",
       "default": "100",
       "pattern": "^\\d{1,3}$",
       "examples": [
        "100",
        "500"
       ],
       "description": "Maximum number of tenders to return. Integer 1-500; values above 500 are capped. Default: 100."
      },
      "days": {
       "type": "string",
       "default": "14",
       "pattern": "^\\d{1,2}$",
       "examples": [
        "14",
        "30"
       ],
       "description": "Look-back window in days over the notice publication date. Integer 1-90; values above 90 are capped. Default: 14."
      },
      "country": {
       "type": "string",
       "default": "DEU",
       "pattern": "^[A-Z]{3}(,[A-Z]{3})*$",
       "examples": [
        "DEU",
        "DEU,AUT"
       ],
       "description": "Comma-separated ISO 3166-1 alpha-3 country codes for the place of performance, e.g. DEU, AUT, FRA. Default: DEU."
      },
      "keywords": {
       "type": "string",
       "examples": [
        "CNC,Fräsen",
        "Stahlbau"
       ],
       "description": "Optional comma-separated free-text keywords; a notice is kept if its title or description contains at least one (case-insensitive). Empty = no keyword filter."
      }
     },
     "additionalProperties": false
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "count",
      "tenders"
     ],
     "properties": {
      "count": {
       "type": "integer",
       "description": "Number of tenders returned (after keyword filter
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "tenders": [
   {
    "cpv": [
     "45262670",
     "44316000"
    ],
    "url": "https://ted.europa.eu/en/notice/-/detail/00512345-2026",
    "buyer": "Stadt Musterstadt, Amt für Gebäudemanagement",
    "pdfDe": "https://ted.europa.eu/de/notice/00512345-2026/pdf",
    "title": "Neubau einer Produktionshalle — Stahlbau- und Metallbauarbeiten",
    "deadline": "2026-09-15T10:00:00+02:00",
    "noticeType": "cn-standard",
    "description": "Stahlbauarbeiten für den Neubau einer Produktionshalle, ca. 2.400 m² Grundfläche, inkl. Metallbau- und Schlosserarbeiten.",
    "publicationDate": "2026-08-12+02:00",
    "publicationNumber": "00512345-2026"
   }
  ]
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/ted-tender-monitor-f116fa2c/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from 4yearcycle.com](https://www.zero.xyz/host/4yearcycle.com/llms.txt)
