# TED EU Public Procurement Notice Search

> TED EU Public Procurement Notice Search is a paid API for AI agents from api.scrapeforagents.tech, paid per call via x402, $0.08/call, status unknown (last checked 2026-10-02).

Searches and retrieves structured European Union public procurement notices from the TED (Tenders Electronic Daily) database by keyword, CPV code, country, date range, and buyer.

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/v1/ted?utm_source=zero.xyz
- Price: $0.08/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/ted-eu-public-procurement-notice-search-90c739ca
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_E_Wm5Md3U9T7YBXhRXnuA

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-eu-public-procurement-notice-search-90c739ca -d '<json body>'
```

Example prompt: Find me EU public procurement notices from the last 30 days in Germany and France for IT consulting services — use CPV code 72000000, return up to 200 results in English.

## When to prefer this

Choose this endpoint when you need structured, machine-readable EU public procurement data from TED (Tenders Electronic Daily) — the official EU procurement journal. Ideal for monitoring new tender opportunities, competitive intelligence on government contracts, or filtering by CPV code, country, buyer, or date range. Prefer this over general web scraping when you need clean, schema-consistent procurement notice data across EU member states.

## Known failure modes

- Invalid or malformed CPV code (must be exactly 8 digits) returns validation error
- Unsupported country code returns error
- Query expression syntax errors cause failed search
- Empty result set returns count:0 with empty items array (not charged)
- Exceeding maxResults cap of 250 per page silently truncates results
- Unsupported language enum value causes error

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

Returns a JSON object with a count of matched notices and an array of notice items, each containing the notice title, buyer name(s), notice type, notice subtype, procedure type, publication date, and publication number. The product field confirms the data source as TED.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "query": {
   "type": "string",
   "default": "",
   "description": "Native notice search expression. When filled, overrides date and other filters. Example: publication-date>=20260101 AND buyer-country=DEU."
  },
  "cpvCodes": {
   "type": "array",
   "items": {
    "type": "string",
    "pattern": "^[0-9]{8}$"
   },
   "default": [],
   "description": "Exact eight-digit Common Procurement Vocabulary codes. Multiple codes are joined with OR. Subcodes are not implied."
  },
  "keywords": {
   "type": "string",
   "description": "Full-text term or phrase across notice content. Leave empty for any topic."
  },
  "language": {
   "enum": [
    "ENG",
    "DEU",
    "FRA",
    "ITA",
    "ESP",
    "POL",
    "NLD",
    "POR",
    "SWE",
    "DAN",
    "FIN",
    "CES",
    "ELL",
    "HUN",
    "RON",
    "SLK",
    "SLV",
    "BUL",
    "HRV",
    "EST",
    "LAV",
    "LIT",
    "GLE",
    "MLT"
   ],
   "type": "string",
   "default": "ENG",
   "description": "Preferred language for title, buyer and description. Falls back to English or an available language."
  },
  "pageSize": {
   "type": "integer",
   "default": 100,
   "maximum": 250,
   "minimum": 1,
   "description": "Notices fetched per request, from 1 to 250."
  },
  "buyerName": {
   "type": "string",
   "description": "Search the contracting authority name. Leave empty for any buyer."
  },
  "countries": {
   "type": "array",
   "items": {
    "enum": [
     "DEU",
     "FRA",
     "ITA",
     "ESP",
     "POL",
     "ROU",
     "NLD",
     "BEL",
     "CZE",
     "GRC",
     "PRT",
     "SWE",
     "HUN",
     "AUT",
     "BGR",
     "DNK",
     "FIN",
     "SVK",
     "IRL",
     "HRV",
     "LTU",
     "SVN",
     "LVA",
     "EST",
     "CYP",
     "LUX",
     "MLT",
     "NOR",
     "ISL",
     "LIE",
     "CHE"
    ],
    "type": "string"
   },
   "default": [],
   "description": "Three-letter buyer country codes. Select multiple or leave empty for all countries."
  },
  "datePreset": {
   "enum": [
    "last_24_hours",
    "last_7_days",
    "last_30_days",
    "last_90_days",
    "ytd",
    "custom"
   ],
   "type": "string",
   "default": "last_7_days",
   "description": "Choose a recent range, year to date, or custom dates. Recent ranges include today."
  },
  "maxResults": {
   "type": "integer",
   "default": 500,
   "minimum": 0,
   "description": "Hard cap on output rows. Set 0 for no cap; a search query without date slicing may still meet th
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "title": null,
    "buyerName": null,
    "buyerNames": null,
    "noticeType": null,
    "noticeSubtype": null,
    "procedureType": null,
    "publicationDate": null,
    "publicationNumber": null
   }
  ],
  "product": "ted"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/ted-eu-public-procurement-notice-search-90c739ca/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.scrapeforagents.tech](https://www.zero.xyz/host/api.scrapeforagents.tech/llms.txt)
