The tender API for AI agents
EU public tenders as structured JSON. Free preview without a key; a free API key raises your rate limit, paid tiers unlock full-text search and higher limits. Machine-readable references: OpenAPI spec · llms.txt · agent card.
Get a free API key
Self-serve, no credit card. The key is shown once below and also sent to your email.
Plans and limits
| Tier | Price | Rate limit | Max results/request | Full-text search | Webhooks |
|---|---|---|---|---|---|
| Anonymous | Free | shared, low | 6 | ✗ | ✗ |
| Free key | Free | 60 req/h | 25 | ✗ | ✗ |
| Pro | €149/mo | 600 req/h | 200 | ✓ | 5 |
| Agent | €499/mo | 3,600 req/h | 500 | ✓ | more |
Pro/Agent checkout is not yet self-serve — contact us for pilot access. One price system with our German sister platform.
REST: search tenders
curl "https://www.tender-agents.com/api/tenders-public?search=software&country=FRA&min_score=50&limit=6" \
-H "Accept: application/json"Parameters: search, country (ISO alpha-3, omit for all EU), cpv, min_score, deadline_within_days, minimum_value_eur, maximum_value_eur, limit, offset. Note that free-text search is language-sensitive — French notices match French terms; use CPV codes for language-independent filtering.
curl "https://www.tender-agents.com/api/tenders-public?search=software&limit=25" \
-H "Authorization: Bearer sk_your_key"import requests
r = requests.get(
"https://www.tender-agents.com/api/tenders-public",
params={"search": "software", "min_score": 50, "limit": 6},
headers={"Authorization": "Bearer sk_your_key"}, # optional
)
for tender in r.json():
print(tender["buyer_country"], tender["title"], tender["source_url"])Source coverage and freshness: GET /api/source-status — public, no key needed.
MCP
The MCP endpoint is live. Remote-capable clients call it directly over HTTP (stateless JSON-RPC 2.0):
POST https://www.tender-agents.com/mcp
Content-Type: application/json
Authorization: Bearer sk_your_key # optional
{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}Six tools: agentleads.search_tenders (country, CPV codes or division prefixes like 45, deadline/value filters, optional summary_lang),agentleads.get_tender, agentleads.summarize_tender (labelled AI summaries in English or German), agentleads.source_status,agentleads.countries (all free) and agentleads.fulltext_search (Pro/Agent key). For stdio-only clients, the tender-agents npm package bridges stdio to this endpoint — no install needed with npx:
{
"mcpServers": {
"tender-agents": {
"command": "npx",
"args": ["-y", "tender-agents"],
"env": { "TENDER_AGENTS_API_KEY": "sk_your_key" }
}
}
}A2A
The A2A JSON-RPC endpoint is live: POST https://api.tender-agents.com/api/a2a. Send a message/send request with text parts (e.g. "status" or a search query) and receive a completed task with structured results. Discovery metadata is served at /.well-known/agent-card.json.
Fair use
Every record links to the free original notice. Rate limits protect the free preview; if you need sustained agent traffic, usage-based pricing is on the roadmap — talk to us.