# TenderSignal EU Tender Shortlist API

> TenderSignal EU Tender Shortlist API is a paid API for AI agents from ubuntu-4gb-fsn1-3.tail9df5c0.ts.net:8443, paid per call via x402, $0.15/call, status unknown (last checked 2026-09-15).

Returns a machine-readable shortlist of active EU procurement notices from TED, ranked by fit score with risk flags and match reasons.

## Facts

- Endpoint: GET https://ubuntu-4gb-fsn1-3.tail9df5c0.ts.net:8443/v1/tender-shortlist
- Price: $0.15/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tendersignal-eu-tender-shortlist-api-41e80db6
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_JbmxOW8pgvZv2Dtcjf9Tt

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 tendersignal-eu-tender-shortlist-api-41e80db6
```

Example prompt: Pull me the latest EU procurement shortlist from TenderSignal — I want to see the active TED notices ranked by fit score, including their deadlines, estimated values, and any risk flags.

## When to prefer this

Use this endpoint when you need a pre-filtered, scored shortlist of EU procurement notices rather than raw TED data — it saves the work of querying, deduplicating, and ranking TED yourself. Prefer it over direct TED API access when you want fit scores and risk flags already computed, and over general web search when you need structured, machine-readable procurement data at $0.15 per call.

## Known failure modes

- Payment failure (402) if x402 USDC payment of $0.15 is not included or invalid
- TED API unavailability causing empty or stale results
- Network timeout due to self-hosted endpoint on non-standard port
- Empty tender list if no notices currently pass the shortlisting criteria
- SSL/TLS errors from self-signed certificate on port 8443

## How this service works

Paid machine-readable shortlist of active EU procurement notices sourced from the official TED API.

## Output

A JSON object containing a list of ranked EU tender notices (each with notice ID, title, buyer name, buyer country, estimated value, currency, deadline, fit score 0–100, fit reasons, risk flags, and source URL to TED), plus metadata including generation timestamp, total count, and scan statistics (pages scanned, notices dropped, duplicates removed).

## 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": {},
     "additionalProperties": false
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "generatedAt",
      "query",
      "count",
      "tenders",
      "stats"
     ],
     "properties": {
      "count": {
       "type": "integer",
       "minimum": 0
      },
      "query": {
       "type": "string"
      },
      "stats": {
       "type": "object",
       "required": [
        "pages",
        "scanned",
        "dropped",
        "duplicates"
       ],
       "properties": {
        "pages": {
         "type": "integer",
         "minimum": 0
        },
        "dropped": {
         "type": "integer",
         "minimum": 0
        },
        "scanned": {
         "type": "integer",
         "minimum": 0
        },
        "duplicates": {
         "type": "integer",
         "minimum": 0
        }
       },
       "additionalProperties": false
      },
      "tenders": {
       "type": "array",
       "items": {
        "type": "object",
        "required": [
         "noticeId",
         "title",
         "fitScore",
         "fitReasons",
         "risks",
         "sourceUrl"
        ],
        "properties": {
         "risks": {
          "type": "array",
          "items": {
           "type": "string"
          }
         },
         "title": {
          "type": "string"
         },
         "currency": {
          "type": [
           "string",
           "null"
          ]
         },
         "deadline": {
          "type": [
           "string",
           "null"
          ],
          "format": "date-time"
         },
         "fitScore": {
          "type": "number",
          "maximum": 100,
          "minimum": 0
         },
         "noticeId": {
          "type": "string"
         },
         "buyerName": {
          "type": [
           "string",
           "null"
          ]
         },
         "sourceUrl": {
 
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "tenders": [
   {
    "risks": [
     "Deadline is less than 30 days away"
    ],
    "title": "Cloud data platform",
    "currency": "EUR",
    "deadline": "2026-08-10T12:00:00.000Z",
    "fitScore": 82,
    "noticeId": "444028-2026",
    "buyerName": "Example public buyer",
    "sourceUrl": "https://ted.europa.eu/en/notice/444028-2026/html",
    "fitReasons": [
     "Keyword match: cloud",
     "Buyer country match: DEU"
    ],
    "buyerCountry": "DEU",
    "estimatedValue": 500000
   }
  ],
  "generatedAt": "2026-07-20T12:00:00.000Z"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tendersignal-eu-tender-shortlist-api-41e80db6/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from ubuntu-4gb-fsn1-3.tail9df5c0.ts.net:8443](https://www.zero.xyz/host/ubuntu-4gb-fsn1-3.tail9df5c0.ts.net%3A8443/llms.txt)
