# EU Legal & Procurement Data API (`lentic_clockss/sip-eu-legal-procurement-search`) Actor

Search EU legal documents and public procurement notices across EUR-Lex regulations, EUR-Lex directives, and TED tenders. Returns CELEX-numbered legislation and procurement opportunities with buyer details, contract values, and award information from official EU databases.

- **URL**: https://apify.com/lentic\_clockss/sip-eu-legal-procurement-search.md
- **Developed by:** [kane liu](https://apify.com/lentic_clockss) (community)
- **Categories:** Lead generation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

## EU Legal & Procurement Search

Search **EU legal documents and public procurement notices** across official European Union databases — EUR-Lex regulations, EUR-Lex directives, and TED (Tenders Electronic Daily) tenders. Get CELEX-numbered legislation and procurement opportunities with buyer details, contract values, and award information.

### What is EU Legal & Procurement Search?

This Apify Actor searches the **SIP Public Data Gateway** to query four official EU data sources in a single request. Instead of navigating EUR-Lex and TED separately, you get normalized results from both legal and procurement databases in one dataset.

**No browser or scraping required.** This Actor uses direct HTTPS API calls, making it fast, reliable, and respectful of official EU data sources.

### ✨ Key features

- 📜 **EUR-Lex search** — Search 84,000+ EU regulations and directives by keyword
- 🏗️ **TED tenders** — Search EU public procurement notices across all member states
- 🏆 **Contract awards** — Find awarded contracts with winner names and values
- ⚡ **Fast API-based** — No browser needed; results in seconds
- 📊 **Normalized output** — Consistent format across all 4 data sources
- 🔄 **Apify integrations** — Schedule runs, access via API, connect with Google Sheets, Zapier, Make, and 100+ tools

### 📊 What data can you extract?

#### From EUR-Lex (Legal documents)

| Field | Description | Example |
|-------|-------------|---------|
| `case_id` | CELEX document number | 32024R1787 |
| `case_name` | Official title of regulation/directive | REGULATION on methane emissions... |
| `case_type` | Document type | regulation, directive |
| `source_url` | Link to EUR-Lex | https://eur-lex.europa.eu/... |

#### From TED (Procurement)

| Field | Description | Example |
|-------|-------------|---------|
| `opportunity_id` | TED publication number | 866069-2025 |
| `title` | Notice title | Germany-Stuttgart: Electrical machinery |
| `buyer` | Contracting authority | TransnetBW GmbH |
| `buyer_country` | Buyer's country (ISO) | DEU |
| `notice_type` | Notice type | cn-standard, can-standard |
| `published_date` | Publication date | 2025-12-30 |
| `winner` | Award winner (if awarded) | ENEA Spółka Akcyjna |
| `total_value` | Contract value | 3077185.20 |
| `currency` | Value currency | EUR |
| `source_url` | Link to TED notice | https://ted.europa.eu/en/notice/... |

### 🚀 How to use EU Legal & Procurement Search

1. Click **Try for free** to open the Actor in Apify Console.
2. **Enter search terms** — add keywords like `energy`, `digital services`, or `medical devices`.
3. **Choose sources** (optional) — enable or disable EUR-Lex legal documents and TED procurement notices.
4. Click **Start** and wait for results — typical searches complete in under 15 seconds.
5. **Download your data** in JSON, CSV, or Excel format, or connect via API.

### 💰 How much does it cost?

EU Legal & Procurement Search uses **pay-per-event** pricing:

| Event | Cost |
|-------|------|
| Per API search call | $0.005 |
| Per result returned | $0.0005 |

**Example**: Searching 3 keywords across all 4 sources, getting ~80 results, costs approximately **$0.10**.

On Apify's **Free plan**, you get monthly credits that cover dozens of searches at no extra cost.

### 📥 Input example

```json
{
    "searchTerms": ["energy", "digital services"],
    "includeLegal": true,
    "includeProcurement": true,
    "maxResultsPerSource": 20
}
````

| Parameter | Required | Default | Description |
|-----------|----------|---------|-------------|
| `searchTerms` | ✅ Yes | — | Keywords to search across EU databases |
| `includeLegal` | No | `true` | Include EUR-Lex regulations and directives |
| `includeProcurement` | No | `true` | Include TED procurement notices and awards |
| `maxResultsPerSource` | No | `20` | Max results per data source (up to 50) |

### 📤 Output example

#### EUR-Lex result

```json
{
    "case_id": "32024R1787",
    "case_name": "REGULATION OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL on methane emissions",
    "case_type": "regulation",
    "source_url": "https://eur-lex.europa.eu/legal-content/DE/TXT/?uri=CELEX:32024R1787",
    "_source": "EUR-Lex Regulations",
    "_product_id": "eu_eurlex_regulations",
    "_search_term": "energy",
    "_collected_at": "2026-04-08T12:00:00Z"
}
```

#### TED procurement result

```json
{
    "opportunity_id": "866069-2025",
    "title": "Poland: Electricity, heating, solar and nuclear energy",
    "buyer": "Wojewódzki Szpital Dziecięcy im. J. Brudzińskiego w Bydgoszczy",
    "buyer_city": "Bydgoszcz",
    "buyer_country": "POL",
    "notice_type": "can-standard",
    "total_value": 3077185.2,
    "winner": "ENEA Spółka Akcyjna",
    "currency": "PLN",
    "published_date": "2025-12-30+01:00",
    "source_url": "https://ted.europa.eu/en/notice/866069-2025",
    "_source": "TED Contract Awards",
    "_product_id": "eu_ted_contract_awards",
    "_search_term": "energy",
    "_collected_at": "2026-04-08T12:00:00Z"
}
```

### 📌 Data sources

| Source | Type | Coverage |
|--------|------|----------|
| **EUR-Lex Regulations** | Legal | 84,000+ EU regulations with CELEX numbers |
| **EUR-Lex Directives** | Legal | EU directives with CELEX numbers |
| **TED Procurement Search** | Procurement | Active procurement notices across all EU countries |
| **TED Contract Awards** | Procurement | Awarded contracts with winner and value details |

> All data comes from official EU databases via the SIP Public Data Gateway.

### ❓ FAQ

#### Is this a web scraper?

No. This Actor connects to the SIP Public Data Gateway via HTTPS API. No websites are scraped — all data comes from official EU database APIs (EUR-Lex CELLAR SPARQL and TED v3 API).

#### What languages are supported?

EUR-Lex results currently return German-language titles (CELEX identifiers are language-independent). TED results include multilingual titles, with English preferred when available.

#### Can I filter by country?

TED procurement notices cover all EU member states. Country filtering is available through the `buyer_country` field in results. For country-specific TED searches, check our other Actors.

#### Can I integrate results with other tools?

Yes. Apify provides integrations with Google Sheets, Slack, Zapier, Make, and 100+ other tools. Results are also available via the Apify API.

### 🔗 Related Actors

- [US Government Contracts Search](https://apify.com/lentic_clockss/us-government-contracts-search) — Search US federal procurement data
- [US Federal Law Search](https://apify.com/lentic_clockss/us-federal-law-search) — Search US federal legislation
- [US Business Entity Search](https://apify.com/lentic_clockss/us-business-entity-search) — Search US business registries

# Actor input Schema

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

Keywords to search across EU legal and procurement databases (e.g., 'energy', 'digital services', 'medical devices'). Each term is searched across all selected sources.

## `includeLegal` (type: `boolean`):

Search EU regulations and directives from EUR-Lex (CELLAR SPARQL). Returns CELEX-numbered legislation.

## `includeProcurement` (type: `boolean`):

Search EU public procurement notices and contract awards from TED (Tenders Electronic Daily).

## `maxResultsPerSource` (type: `integer`):

Maximum results to return per data source. Each of the 4 sources returns up to this many results.

## Actor input object example

```json
{
  "searchTerms": [
    "energy"
  ],
  "includeLegal": true,
  "includeProcurement": true,
  "maxResultsPerSource": 20
}
```

# Actor output Schema

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

Dataset containing EUR-Lex regulations, directives, and TED procurement notices.

# 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": [
        "energy"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lentic_clockss/sip-eu-legal-procurement-search").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": ["energy"] }

# Run the Actor and wait for it to finish
run = client.actor("lentic_clockss/sip-eu-legal-procurement-search").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": [
    "energy"
  ]
}' |
apify call lentic_clockss/sip-eu-legal-procurement-search --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "EU Legal & Procurement Data API",
        "description": "Search EU legal documents and public procurement notices across EUR-Lex regulations, EUR-Lex directives, and TED tenders. Returns CELEX-numbered legislation and procurement opportunities with buyer details, contract values, and award information from official EU databases.",
        "version": "0.1",
        "x-build-id": "rytvsBTkqxyNUv4Vu"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lentic_clockss~sip-eu-legal-procurement-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lentic_clockss-sip-eu-legal-procurement-search",
                "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/lentic_clockss~sip-eu-legal-procurement-search/runs": {
            "post": {
                "operationId": "runs-sync-lentic_clockss-sip-eu-legal-procurement-search",
                "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/lentic_clockss~sip-eu-legal-procurement-search/run-sync": {
            "post": {
                "operationId": "run-sync-lentic_clockss-sip-eu-legal-procurement-search",
                "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",
                        "type": "array",
                        "description": "Keywords to search across EU legal and procurement databases (e.g., 'energy', 'digital services', 'medical devices'). Each term is searched across all selected sources.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeLegal": {
                        "title": "Include EUR-Lex legal documents",
                        "type": "boolean",
                        "description": "Search EU regulations and directives from EUR-Lex (CELLAR SPARQL). Returns CELEX-numbered legislation.",
                        "default": true
                    },
                    "includeProcurement": {
                        "title": "Include TED procurement notices",
                        "type": "boolean",
                        "description": "Search EU public procurement notices and contract awards from TED (Tenders Electronic Daily).",
                        "default": true
                    },
                    "maxResultsPerSource": {
                        "title": "Max results per source",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum results to return per data source. Each of the 4 sources returns up to this many results.",
                        "default": 20
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
