GnistAI GnistAI
Log in

Getting Started with Global Tenders

EU public procurement notices — contract opportunities and award results.

All Tutorials   |   Overview   |   Playground   |   MCP   |   REST API   |   Home
Legal

Data source: TED (Tenders Electronic Daily)

Overview

Global Tenders wraps TED (Tenders Electronic Daily), handling authentication, pagination, and rate limits for you. This tutorial covers all 5 tools with working code examples you can copy and run.

Prerequisites

  1. Sign up at https://context.gnist.ai/signup for a free API key (100 calls/day).
  2. Choose your integration method: MCP protocol or REST API.

Connect via MCP

Add to your MCP client config (Claude Desktop, Cursor, etc.):

MCP Config
{
  "mcpServers": {
    "gnist-global-tenders": {
      "url": "https://context.gnist.ai/mcp/global-tenders/",
      "headers": {
        "Gnist-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Tools (5)

search_tenders

Search active public procurement notices (tenders) across EU, UK, and US sources. Args: query: Full-text search term (e.g. "software development", "road construction"). country: ISO 3166-1 alpha-2 country code to restrict search (e.g. "DE", "NO", "GB", "US"). Omit to search all EU countries via TED. sector_cpv: CPV code prefix to filter by sector (e.g. "72000000" for IT services). Only applied for EU/TED searches. date_from: ISO 8601 date (YYYY-MM-DD) — only return notices published on or after this date. value_min_eur: Minimum estimated contract value in EUR. limit: Maximum number of results to return (1-50, default 10). Returns: List of tender notices with title, contracting authority, country, deadline, estimated value, CPV codes, and source URL.

ParameterTypeRequiredDescription
querystringrequiredFull-text search term (e.g. "software development", "road construction").
countryanyoptionalISO 3166-1 alpha-2 country code to restrict search (e.g. "DE", "NO", "GB", "US"). Omit to search all EU countries via TED.
sector_cpvanyoptionalCPV code prefix to filter by sector (e.g. "72000000" for IT services). Only applied for EU/TED searches.
date_fromanyoptionalISO 8601 date (YYYY-MM-DD) — only return notices published on or after this date.
value_min_euranyoptionalMinimum estimated contract value in EUR.
limitintegeroptionalMaximum number of results to return (1-50, default 10). (default: 10)
curl -X POST "https://context.gnist.ai/mcp/global-tenders/" \
  -H "Content-Type: application/json" \
  -H "Gnist-API-Key: YOUR_API_KEY" \
  -d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "search_tenders", "arguments": {"query": "software development"}}}'
import httpx

resp = httpx.post(
    "https://context.gnist.ai/mcp/global-tenders/",
    headers={"Gnist-API-Key": "YOUR_API_KEY"},
    json={'id': 1,
 'jsonrpc': '2.0',
 'method': 'tools/call',
 'params': {'arguments': {'query': 'software development'},
            'name': 'search_tenders'}},
)
print(resp.json())

get_tender

Get full details for a specific EU TED procurement notice by document number. Args: notice_id: TED notice document number (e.g. "123456-2024"). Retrieve this from search_tenders results. Returns: Full notice details including title, contracting authority, country, published date, deadline, estimated value, CPV codes, and source URL.

ParameterTypeRequiredDescription
notice_idstringrequiredTED notice document number (e.g. "123456-2024"). Retrieve this from search_tenders results.
curl -X POST "https://context.gnist.ai/mcp/global-tenders/" \
  -H "Content-Type: application/json" \
  -H "Gnist-API-Key: YOUR_API_KEY" \
  -d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_tender", "arguments": {"notice_id": "123456-2024"}}}'
import httpx

resp = httpx.post(
    "https://context.gnist.ai/mcp/global-tenders/",
    headers={"Gnist-API-Key": "YOUR_API_KEY"},
    json={'id': 1,
 'jsonrpc': '2.0',
 'method': 'tools/call',
 'params': {'arguments': {'notice_id': '123456-2024'}, 'name': 'get_tender'}},
)
print(resp.json())

get_awarded_contracts

Get recently awarded public contracts from EU TED, UK Find a Tender, or US SAM.gov. Args: country: ISO 3166-1 alpha-2 country code (e.g. "DE", "NO", "GB", "US"). Omit for all EU countries. sector_cpv: CPV code prefix to filter by sector. Only applied for EU/TED searches. year: Calendar year to filter awards. Omit for most recent. limit: Maximum number of results to return (1-50, default 10). Returns: List of awarded contracts with contracting authority, winner (where available), value, award date, country, and CPV codes.

ParameterTypeRequiredDescription
countryanyoptionalISO 3166-1 alpha-2 country code (e.g. "DE", "NO", "GB", "US"). Omit for all EU countries.
sector_cpvanyoptionalCPV code prefix to filter by sector. Only applied for EU/TED searches.
yearanyoptionalCalendar year to filter awards. Omit for most recent.
limitintegeroptionalMaximum number of results to return (1-50, default 10). (default: 10)
curl -X POST "https://context.gnist.ai/mcp/global-tenders/" \
  -H "Content-Type: application/json" \
  -H "Gnist-API-Key: YOUR_API_KEY" \
  -d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "get_awarded_contracts", "arguments": {"country": "DE"}}}'
import httpx

resp = httpx.post(
    "https://context.gnist.ai/mcp/global-tenders/",
    headers={"Gnist-API-Key": "YOUR_API_KEY"},
    json={'id': 1,
 'jsonrpc': '2.0',
 'method': 'tools/call',
 'params': {'arguments': {'country': 'DE'}, 'name': 'get_awarded_contracts'}},
)
print(resp.json())

search_by_winner

Find public contracts won by a named company. Args: company_name: Company name to search for (e.g. "Accenture", "IBM"). country: ISO 3166-1 alpha-2 country code to restrict search. year_from: Start year for award date filter (inclusive). year_to: End year for award date filter (inclusive). limit: Maximum number of results to return (1-50, default 10). Returns: List of award notices where the winner name matches the query.

ParameterTypeRequiredDescription
company_namestringrequiredCompany name to search for (e.g. "Accenture", "IBM").
countryanyoptionalISO 3166-1 alpha-2 country code to restrict search.
year_fromanyoptionalStart year for award date filter (inclusive).
year_toanyoptionalEnd year for award date filter (inclusive).
limitintegeroptionalMaximum number of results to return (1-50, default 10). (default: 10)
curl -X POST "https://context.gnist.ai/mcp/global-tenders/" \
  -H "Content-Type: application/json" \
  -H "Gnist-API-Key: YOUR_API_KEY" \
  -d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "search_by_winner", "arguments": {"company_name": "Accenture"}}}'
import httpx

resp = httpx.post(
    "https://context.gnist.ai/mcp/global-tenders/",
    headers={"Gnist-API-Key": "YOUR_API_KEY"},
    json={'id': 1,
 'jsonrpc': '2.0',
 'method': 'tools/call',
 'params': {'arguments': {'company_name': 'Accenture'},
            'name': 'search_by_winner'}},
)
print(resp.json())

report_feedback

Report a bug, feature request, or general feedback for this data source. Use this when something doesn't work as expected, when you'd like a new feature, or when you have suggestions for improvement. Args: feedback: Describe the issue or suggestion. feedback_type: One of 'bug', 'feature_request', or 'general'.

ParameterTypeRequiredDescription
feedbackstringrequired
feedback_typestringoptional (default: general)
curl -X POST "https://context.gnist.ai/mcp/global-tenders/" \
  -H "Content-Type: application/json" \
  -H "Gnist-API-Key: YOUR_API_KEY" \
  -d '{"jsonrpc": "2.0", "method": "tools/call", "id": 1, "params": {"name": "report_feedback", "arguments": {"feedback": "example"}}}'
import httpx

resp = httpx.post(
    "https://context.gnist.ai/mcp/global-tenders/",
    headers={"Gnist-API-Key": "YOUR_API_KEY"},
    json={'id': 1,
 'jsonrpc': '2.0',
 'method': 'tools/call',
 'params': {'arguments': {'feedback': 'example'}, 'name': 'report_feedback'}},
)
print(resp.json())

Common Patterns

Search then retrieve
Use search_tenders to find items, then get_tender to get full details. This two-step pattern is common for exploring data before drilling down.
Pagination
Several tools support limit, offset, or page parameters. Start with small limits during development, then increase for production queries.

FAQ

What data does Global Tenders provide?

EU public procurement notices — contract opportunities and award results. It exposes 5 tools: search_tenders, get_tender, get_awarded_contracts, search_by_winner, report_feedback.

What do I need to get started?

A Gnist API key (free tier: 100 calls/day). Sign up at https://context.gnist.ai/signup.

What format does the Global Tenders API return?

JSON, via either MCP protocol (JSON-RPC 2.0) or REST API.

Next Steps

Related Tutorials