# EU TED Open Tender Deadline Shortlist (`jpmarketdata/eu-ted-open-tender-deadline-shortlist`) Actor

Find recently published EU TED competition notices for one buyer country and CPV division with an upcoming lot deadline, source links and honest result caps.

- **URL**: https://apify.com/jpmarketdata/eu-ted-open-tender-deadline-shortlist.md
- **Developed by:** [h ichi](https://apify.com/jpmarketdata) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 open tender notice delivereds

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## EU TED Open Tender Deadline Shortlist

Find recent, still-deadline-open EU competition notices for one buyer country and primary CPV division. Bid teams can schedule a repeat query and compare publication numbers in their own pipeline. This is a source-linked shortlist, not bid eligibility advice or an exhaustive TED export. It is independent and not affiliated with TED or the EU.

### Input

`buyerCountry` is a three-letter TED country code (default `DEU`); `cpvDivision` is a two-digit primary CPV prefix (default `72` for software services). `publishedWithinDays` and `deadlineWithinDays` default to 30. Publication covers exactly 30 UTC dates including today (start=today−29); deadline covers 0–30 calendar days remaining inclusive; `maxItems` defaults to 20, maximum 100. The normal default returns current German software tenders; `FRA`/`33` supplies a separate medical-product profile.

### Output

One validated row per official TED `cn-standard` notice, with publication number, published title and language, contracting organisation, country, main CPV, publication date, earliest in-window published lot tender deadline, days remaining, official source link, source rank, TED raw total matching count, inspected page count, privacy-screened count and `outputLimited`. Earliest qualifying lot deadline can differ from other lots; expired or out-of-window lots are excluded. An in-window deadline does not guarantee the tender still accepts bids; verify the linked official notice before bidding. No contacts or descriptions. Rows with email, URL, social handle, phone-like numbers, contact/redaction markers or no official buyer legal-entity marker are skipped before billing; if all are screened, the run fails. `sourceReportedTotal` is the raw TED match count, while `screenedOutCount` concerns only the inspected page. Source title may be in a fallback language. A total zero or failed source is an error, not an empty success.

### Pricing

**Price**: $0.002 per delivered unique `tender-notice-delivered` row on FREE. No run start, query, dataset, summary, failed or duplicate event. Default 20 rows cost at most $0.04; maximum 100 rows cost at most $0.20.

### Limits and source

Official anonymous TED Search API only: one bounded POST/page, up to 100 notices, 256 MB, 120 seconds, no proxy, paid API, login, browser or attachments. Newest source notices are capped; `sourceReportedTotal` and `outputLimited` expose omitted older matches. TED notices may be reused commercially unless otherwise marked by the source; factual metadata is credited as TED / European Union with a source link. Upstream blocks, rate limits, timeouts, invalid response (including a matched notice with no parsed in-window deadline) or zero matching notices fail without output/charge.

### Privacy

Only source-marked public contracting organisations and factual notice metadata; both title and buyer organisation are screened for contact markers and contact-like text. No contact names, emails, phones, addresses, individual winners, prose or attachment content.

# Actor input Schema

## `buyerCountry` (type: `string`):

Three-letter TED buyer-country code such as DEU or FRA; one country per run.

## `cpvDivision` (type: `string`):

Two-digit primary CPV division prefix, e.g. 72 software services or 33 medical products; one division per run.

## `publishedWithinDays` (type: `integer`):

Exactly N UTC calendar publication dates including today: start=today-(N-1); allowed 1–90.

## `deadlineWithinDays` (type: `integer`):

Upcoming lot deadline with 0..N calendar days remaining, inclusive of today and day N; allowed 1–90.

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

Newest 1–100 official matching notices in one page; total count and outputLimited reveal truncation.

## Actor input object example

```json
{
  "buyerCountry": "DEU",
  "cpvDivision": "72",
  "publishedWithinDays": 30,
  "deadlineWithinDays": 30,
  "maxItems": 20
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "buyerCountry": "DEU",
    "cpvDivision": "72"
};

// Run the Actor and wait for it to finish
const run = await client.actor("jpmarketdata/eu-ted-open-tender-deadline-shortlist").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 = {
    "buyerCountry": "DEU",
    "cpvDivision": "72",
}

# Run the Actor and wait for it to finish
run = client.actor("jpmarketdata/eu-ted-open-tender-deadline-shortlist").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "buyerCountry": "DEU",
  "cpvDivision": "72"
}' |
apify call jpmarketdata/eu-ted-open-tender-deadline-shortlist --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jpmarketdata/eu-ted-open-tender-deadline-shortlist"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/R423CtJE41oYienSM/builds/YhQAYrkymrzwo6ftN/openapi.json
