# TED EU Procurement Lead Finder (`noetic_quahog/ted-eu-procurement-lead-finder`) Actor

Find recent EU public procurement leads from TED by keyword, country, and publication date. Clean JSON output for tender monitoring, CRM enrichment, market research, and procurement workflows.

- **URL**: https://apify.com/noetic\_quahog/ted-eu-procurement-lead-finder.md
- **Developed by:** [Noetic Data](https://apify.com/noetic_quahog) (community)
- **Categories:** Business, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 tender leads

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## TED EU Procurement Lead Finder

Find recent EU public procurement notices from Tenders Electronic Daily (TED) and export clean, automation-ready tender leads.

This Actor uses the official TED Search API instead of browser scraping. It searches published procurement notices by keyword, country, and publication date, then normalizes multilingual notice data into a consistent dataset for CRM workflows, market research, lead generation, and scheduled tender monitoring.

### What You Get

- TED publication number and direct source links
- Tender title and description
- Buyer name
- Publication date and tender deadline when available
- Country/place of performance
- CPV procurement category codes
- Estimated value and currency when published
- Raw TED payload optionally included for debugging

### Input

```json
{
  "searchTerms": ["software", "cybersecurity"],
  "regions": ["PT", "ES"],
  "maxItems": 25,
  "includeRaw": false
}
````

#### Fields

- `searchTerms` - Required. One or more keywords or phrases to search in TED full text.
- `regions` - Optional. ISO-2 country codes like `PT`, `ES`, `FR` or TED ISO-3 codes like `PRT`, `ESP`, `FRA`.
- `dateFrom` - Optional. Published-from date in `YYYY-MM-DD`. Defaults to 30 days before the run.
- `dateTo` - Optional. Published-to date in `YYYY-MM-DD`.
- `maxItems` - Optional. Defaults to `100`; capped at `1000`.
- `includeRaw` - Optional. Include the raw TED notice object in `extra.raw`.
- `proxyConfiguration` - Accepted for Apify UI compatibility; not used because this Actor calls TED's public API.

### Output

Each dataset item includes stable top-level fields:

```json
{
  "id": "449218-2026",
  "title": "Spain - Software development services",
  "description": "Application development services.",
  "sourceName": "TED",
  "sourceUrl": "https://ted.europa.eu/en/notice/-/detail/449218-2026",
  "publishedAt": "2026-06-30T22:00:00.000Z",
  "location": "ESP",
  "category": "72000000",
  "value": "4217136 EUR",
  "contactUrl": "https://ted.europa.eu/en/notice/-/detail/449218-2026",
  "scrapedAt": "2026-07-06T08:30:00.000Z",
  "buyerName": "Junta de Contratacion del Ministerio de Sanidad",
  "deadlineAt": "2026-08-31T00:00:00.000Z",
  "extra": {
    "publicationNumber": "449218-2026",
    "cpvCodes": ["72000000"],
    "estimatedValues": ["4217136"],
    "estimatedCurrencies": ["EUR"],
    "contractNature": "services",
    "noticeLegalBasis": "32014L0024",
    "pdfUrl": "https://ted.europa.eu/en/notice/449218-2026/pdf",
    "xmlUrl": "https://ted.europa.eu/en/notice/449218-2026/xml",
    "matchedSearchTerms": ["software"]
  }
}
```

### Good Use Cases

- Monitor new EU tenders matching your sales keywords.
- Feed tender leads into Google Sheets, Airtable, HubSpot, or a CRM.
- Track public-sector demand for software, cybersecurity, AI, audit, construction, facilities, or other services.
- Build scheduled alerts from a specific country or region.

### Notes

TED's API accepts expert-search dates as `YYYYMMDD`; this Actor keeps the user-facing input as ISO dates and converts them internally. The default date window is intentionally recent to avoid returning old historical notices unless you ask for them.

### Monetization

Recommended launch pricing: pay per result using `apify-default-dataset-item`, initially USD 3.00 per 1,000 results. This Actor is designed for low platform cost because it uses a public JSON API and does not launch browsers or proxies.

# Actor input Schema

## `searchTerms` (type: `array`):

Keywords or exact phrases to search across TED notice text. Use narrow buyer-intent terms such as software, cybersecurity, audit, construction, or waste management.

## `regions` (type: `array`):

Optional country filters. Use ISO-2 codes like PT, ES, FR or TED ISO-3 codes like PRT, ESP, FRA.

## `dateFrom` (type: `string`):

Optional ISO date in YYYY-MM-DD format. Defaults to 30 days before the run date.

## `dateTo` (type: `string`):

Optional ISO date in YYYY-MM-DD format.

## `maxItems` (type: `integer`):

Maximum number of normalized tender notices to save.

## `includeRaw` (type: `boolean`):

Include the source TED notice object under extra.raw. Useful for debugging, but larger and noisier.

## `proxyConfiguration` (type: `object`):

Accepted for interface compatibility. This Actor uses TED's public API and does not need a proxy.

## Actor input object example

```json
{
  "searchTerms": [
    "software"
  ],
  "regions": [
    "PT",
    "ES"
  ],
  "maxItems": 100,
  "includeRaw": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `tenderLeads` (type: `string`):

Normalized TED procurement notices saved to the default dataset.

## `runSummary` (type: `string`):

Summary metadata for the completed run.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchTerms": [
        "software"
    ],
    "regions": [
        "PT",
        "ES"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("noetic_quahog/ted-eu-procurement-lead-finder").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchTerms": ["software"],
    "regions": [
        "PT",
        "ES",
    ],
}

# Run the Actor and wait for it to finish
run = client.actor("noetic_quahog/ted-eu-procurement-lead-finder").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "software"
  ],
  "regions": [
    "PT",
    "ES"
  ]
}' |
apify call noetic_quahog/ted-eu-procurement-lead-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=noetic_quahog/ted-eu-procurement-lead-finder",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TED EU Procurement Lead Finder",
        "description": "Find recent EU public procurement leads from TED by keyword, country, and publication date. Clean JSON output for tender monitoring, CRM enrichment, market research, and procurement workflows.",
        "version": "0.1",
        "x-build-id": "3CjaoBwfcwJ6iYGMf"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/noetic_quahog~ted-eu-procurement-lead-finder/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-noetic_quahog-ted-eu-procurement-lead-finder",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/noetic_quahog~ted-eu-procurement-lead-finder/runs": {
            "post": {
                "operationId": "runs-sync-noetic_quahog-ted-eu-procurement-lead-finder",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/noetic_quahog~ted-eu-procurement-lead-finder/run-sync": {
            "post": {
                "operationId": "run-sync-noetic_quahog-ted-eu-procurement-lead-finder",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "searchTerms"
                ],
                "properties": {
                    "searchTerms": {
                        "title": "Search terms",
                        "minItems": 1,
                        "type": "array",
                        "description": "Keywords or exact phrases to search across TED notice text. Use narrow buyer-intent terms such as software, cybersecurity, audit, construction, or waste management.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "regions": {
                        "title": "Countries",
                        "type": "array",
                        "description": "Optional country filters. Use ISO-2 codes like PT, ES, FR or TED ISO-3 codes like PRT, ESP, FRA.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "dateFrom": {
                        "title": "Published from",
                        "type": "string",
                        "description": "Optional ISO date in YYYY-MM-DD format. Defaults to 30 days before the run date."
                    },
                    "dateTo": {
                        "title": "Published to",
                        "type": "string",
                        "description": "Optional ISO date in YYYY-MM-DD format."
                    },
                    "maxItems": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of normalized tender notices to save.",
                        "default": 100
                    },
                    "includeRaw": {
                        "title": "Include raw TED payload",
                        "type": "boolean",
                        "description": "Include the source TED notice object under extra.raw. Useful for debugging, but larger and noisier.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Accepted for interface compatibility. This Actor uses TED's public API and does not need a proxy.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
