EU Tenders Procurement & Opportunity Notification
Pricing
Pay per usage
EU Tenders Procurement & Opportunity Notification
Query TED EU procurement database in 24 languages, save configurable fields as flat JSON to Apify, optionally email results as HTML table with PDF/HTML links.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Fabio Borsotti
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
8 days ago
Last modified
Categories
Share
TED Search API Actor
Apify Actor that queries the public TED (Tenders Electronic Daily) Search API v3 and saves results to the dataset.
Description
This Actor performs a single search on the TED Search API using the provided input parameters and saves the results to the Apify dataset.
Endpoint used: POST https://api.ted.europa.eu/v3/notices/search
What Is TED? Tenders Electronic Daily (TED) is the official online journal for European public procurement. Operated by the Publications Office of the European Union, TED is where all above-threshold procurement notices from EU and EEA member states are published. With approximately 700,000 notices per year representing hundreds of billions of euros in contract value, TED is the single most important starting point for any business seeking government contracts in Europe.
Input Parameters
The Actor accepts the following input parameters (defined in .actor/input_schema.json):
Required Parameters
query (string)
-
Description: Expert search query for TED notice search
-
Editor type: Textarea
-
Requirements: Non-empty string
-
Example values:
"STATUS = \"ACTIVE\"""place-of-performance=ITC49""publication_date >= 2025-06-01""buyer-name LIKE \"Municipality\"- Complex queries combining multiple conditions with
AND,OR,NOT
To build complex query please:
- Use official query builder: https://ted.europa.eu/en/expert-search.
- Cut & Paste query into parameter "query"
returned-fields (array[string])
-
Description: List of TED fields to include in the response
-
Editor type: Select (multiple choice)
-
Requirements: Non-empty array of valid field names
-
Default value:
["buyer-name", "publication-date"] -
Available fields (1,855+ options including):
- Core fields:
publication-number,publication-date,buyer-name,buyer-profile,buyer-category,buyer-country,sme-part - Contact fields:
buyer-person,tendering-party-name,buyer-touchpoint-contact-point - Contract details:
contract-value-amount,contract-nature,contract-title,contract-duration-start-date,contract-duration-end-date - Procedure fields:
procedure-identifier,procurement-document-id-part,legal-basis - Tender data:
deadline-receipt-tender-date-lot,tender-validity-deadline-lot,award-criterion-* - Organisation fields:
organisation-*patterns for various organization types (buyer, tenderer, subcontractor, etc.) - Touchpoint fields:
touchpoint-*patterns for contact information - Location fields:
place-of-performance,place-of-performance-country-*,place-performance-street* - And many more specific procurement-related fields
See below table:
- Core fields:
| field | area | meaning | type | example / notes |
|---|---|---|---|---|
| publication-date | Identification | Date when the notice was published on TED. | date | Publication date of the notice. |
| BT-01-notice | Identification | Main identifier or title of the notice, depending on notice type and representation. | string | Standard eForms/TED identifier. |
| BT-05(a)-notice | Identification | Standardized notice classification field. | string | Used in the eForms model. |
| BT-803(d)-notice | Identification | Standardized notice field for a specific section or attribute. | string | Meaning depends on notice type. |
| BT-127-notice | Identification | Standardized notice attribute. | string | Procedural or content-related attribute. |
| BT-140-notice | Identification | General notice content attribute. | string | Standardized TED/eForms field. |
| BT-758-notice | Identification | Standardized field associated with a specific notice characteristic. | string | Exact meaning depends on the schema context. |
| BT-13716-notice | Identification | Standardized field identifying a notice result/content element. | string | Schema-specific field. |
| description-glo | Subject matter | General description of the contract, available in multilingual form. | string | Global description. |
| OPP-021-Contract | Subject matter | Contract object description. | string | Multilingual text field. |
| OPP-034-Tender | Subject matter | Tender description. | string | Multilingual text field. |
| OPP-080-Tender | Subject matter | Detailed tender information. | string | Structured or multilingual field. |
| OPP-130-Business | Subject matter | Business opportunity description. | string | Multilingual text field. |
| buyer-profile | Buyer / organization | Buyer profile reference or link. | string / url | Procurement profile page. |
| buyer-category | Buyer / organization | Type or category of the contracting authority. | string | Public authority, utility, etc. |
| buyer-touchpoint-gateway | Buyer / organization | TED communication gateway or contact channel for the buyer. | string | Technical contact route. |
| organisation-name-serv-prov | Buyer / organization | Service provider name. | string | Multilingual field. |
| organisation-name-tender-receip-lot | Buyer / organization | Name of the entity receiving tenders for a lot. | string | Multilingual field. |
| organisation-country-buyer | Buyer / organization | Country of the buyer. | string | ISO-like country value. |
| organisation-city-signatory | Buyer / organization | City of the signatory or organization contact. | string | Location field. |
| organisation-identifier-signatory | Buyer / organization | Signatory identifier. | string | Organizational identifier. |
| contract-nature-main-proc | Procedure | Main nature of the contract, such as works, supplies, or services. | string | High-level procedure classification. |
| BT-5121-Procedure | Procedure | Standardized procedure attribute. | string | Schema-defined field. |
| BT-1252-Procedure | Procedure | Standardized procedure detail. | string / number | Depends on context. |
| BT-271-Procedure | Procedure | Numerical or coded procedure attribute. | number / string | Schema-defined value. |
| BT-88-Procedure | Procedure | Procedure title or description. | string | Multilingual text field. |
| BT-21-Procedure | Procedure | Procedure description field. | string | Multilingual text field. |
| BT-11-Procedure-Buyer | Procedure | Procedure information related to the buyer. | string | Buyer-specific procedure attribute. |
| deadline-receipt-tender-date-lot | Dates / deadlines | Deadline for receipt of tenders for a lot. | date | Offer submission deadline. |
| deadline-receipt-request | Dates / deadlines | Deadline for receipt of requests. | date | Request submission deadline. |
| deadline-receipt-expressions-date-lot | Dates / deadlines | Deadline for expressions of interest or related requests for a lot. | date | Lot-specific deadline. |
| deadline-receipt-expressions-time-lot | Dates / deadlines | Time limit for expressions of interest or related requests for a lot. | time | Lot-specific cutoff time. |
| deadline-time-part | Dates / deadlines | Deadline time for a specific part. | time | Section-level deadline. |
| public-opening-date-lot | Dates / deadlines | Public opening date for a lot. | date | Opening session date. |
| contract-duration-start-date-part | Dates / deadlines | Start date of contract duration for a part. | date | Contract start date. |
| contract-duration-end-date-part | Dates / deadlines | End date of contract duration for a part. | date | Contract end date. |
| framework-maximum-value-lot | Values / amounts | Maximum framework agreement value for a lot. | number | Monetary value. |
| framework-estimated-value-glo | Values / amounts | Estimated total value of the procedure or notice. | number | Monetary value. |
| tender-value-cur-highest | Values / amounts | Currency of the highest tender value. | string | Currency code or currency label. |
| subcontracting-value-cur | Values / amounts | Currency for subcontracting value. | string | Monetary currency. |
| concession-revenue-buyer | Values / amounts | Buyer revenue in a concession context. | number | Monetary value. |
| BT-64-Lot | Values / amounts | Monetary amount associated with a lot. | number | Financial field. |
| BT-98-Lot | Values / amounts | Value/unit pair for a quantitative lot parameter. | number / object | Quantity-related field. |
| BT-1561-NoticeResult | Values / amounts | Numerical value of the notice result. | number | Result amount. |
| BT-156-NoticeResult-Currency | Values / amounts | Currency associated with the notice result value. | string | Currency code or label. |
| BT-711-LotResult-Currency | Values / amounts | Currency of the lot result value. | string | Currency field. |
| BT-635-LotResult | Values / amounts | Numerical lot result value. | number | Result amount. |
| BT-793-Review | Review / appeals | Monetary amount related to a review or appeal. | number | Review-related financial field. |
| review-request-fee | Review / appeals | Fee for submitting a review request. | number | Administrative fee. |
| review-remedy-value | Review / appeals | Value of the requested or granted remedy in a review. | number | Remedy amount. |
| framework-agreement-lot | Lot / subdivision | Indicates whether the lot is part of a framework agreement. | boolean | True/false flag. |
| framework-maximum-participants-number-lot | Lot / subdivision | Maximum number of participants allowed in the framework/lot. | integer | Participant limit. |
| renewal-maximum-lot | Lot / subdivision | Maximum number of renewals for the lot. | integer | Renewal count. |
| variant-allowed-lot | Lot / subdivision | Indicates whether variants are allowed. | boolean | True/false flag. |
| lots-max-allowed-proc | Lot / subdivision | Maximum number of lots allowed in the procedure. | integer | Procedure-level limit. |
| significance-lot | Lot / subdivision | Relevance or classification of the lot. | string | Schema-defined classification. |
| requirement-stage-lot | Lot / subdivision | Requirement stage associated with the lot. | string | Stage indicator. |
| place-of-performance | Performance location | Place where the contract will be performed. | string | General location field. |
| place-of-performance-country-part | Performance location | Country of performance for a part. | string | Country-level location. |
| place-of-performance-city-part | Performance location | City of performance for a part. | string | City-level location. |
| place-of-performance-post-code-part | Performance location | Postal code of the performance location for a part. | string | ZIP / CAP value. |
| place-performance-street-proc | Performance location | Street address of the performance location for the procedure. | string | Address field. |
| place-performance-street-lot | Performance location | Street address of the performance location for the lot. | string | Address field. |
| touchpoint-contact-point-buyer | Contacts / touchpoints | Buyer contact point. | string | Technical or administrative contact. |
| touchpoint-contact-point-tenderer | Contacts / touchpoints | Tenderer contact point. | string | Offerer contact data. |
| touchpoint-contact-point-docprovider-part | Contacts / touchpoints | Document provider contact point for a part. | string | Document-related contact. |
| touchpoint-email-docprovider-lot | Contacts / touchpoints | Email address of the lot document provider. | string | Email field. |
| touchpoint-tel-buyer | Contacts / touchpoints | Buyer phone number. | string | Telephone field. |
| touchpoint-fax-buyer | Contacts / touchpoints | Buyer fax number. | string | Fax field. |
| touchpoint-internet-address-buyer | Contacts / touchpoints | Buyer website or internet address. | string | URL field. |
| touchpoint-gateway-ted-esen | Contacts / touchpoints | TED/eSender gateway for the organization or flow. | string | Integration channel. |
| review-id | Review / appeals | Review or appeal identifier. | string | Unique appeal ID. |
| review-title | Review / appeals | Title of the review. | string | Multilingual title. |
| review-previous-id | Review / appeals | Reference to a previous review. | string | Prior appeal link. |
| review-applicant-id | Review / appeals | Identifier of the applicant filing the review. | string | Party identifier. |
| review-irregularity-type | Review / appeals | Type of irregularity being challenged. | string | Complaint category. |
| winner-country | Award / winners | Country of the winner. | string | Winner location. |
| winner-post-code | Award / winners | Postal code of the winner. | string | Postal code value. |
| winner-touchpoint-post-code | Award / winners | Postal code of the winner’s touchpoint. | string | Contact location field. |
| BT-688-LotResult | Award / winners | Multilingual description of the lot result. | string | Result description. |
| BT-13713-LotResult | Award / winners | Standardized lot result field. | string | Schema-defined field. |
| BT-1118-NoticeResult-Currency | Award / winners | Currency of the notice result value. | string | Currency field. |
- Example values:
["buyer-name", "publication-date"]["publication-number", "buyer-name", "publication-date", "buyer-profile"]["buyer-category", "sme-part", "contract-value-amount", "buyer-country"]
limit (integer)
- Description: Maximum number of notices to return from the API
- Type: Integer
- Range: 1 - 250
- Default value: 10
- Example values:
1- retrieve just one notice50- retrieve up to 50 notices100- retrieve up to 100 notices250- retrieve maximum notices per request
lang (string)
- Description: Language code to filter multilingual output fields to the specified language
- Editor type: Select (single choice)
- Type: Single language code string
- Default value:
"ENG" - Available language codes (24 EU languages):
BUL- Bulgarian / българскиSPA- Spanish / EspañolCES- Czech / ČeštinaDAN- Danish / DanskDEU- German / DeutschEST- Estonian / EestiELL- Greek / ΕλληνικάENG- EnglishFRA- French / FrançaisGLE- Irish / GaeilgeHRV- Croatian / HrvatskiITA- Italian / ItalianoLAV- Latvian / LatviešuLIT- Lithuanian / LietuviųHUN- Hungarian / MagyarMLT- Maltese / MaltiNLD- Dutch / NederlandsPOL- Polish / PolskiPOR- Portuguese / PortuguêsRON- Romanian / RomânăSLK- Slovak / SlovenčinaSLV- Slovenian / SlovenščinaFIN- Finnish / SuomiSWE- Swedish / Svenska
- Behavior: All multilingual fields are extracted in the specified language; PDF and HTML links are extracted for this language with fallback to ENG if unavailable
- Example values:
"ITA"- Italian"DEU"- German"FRA"- French"ENG"- English (default)
Optional Parameters
send-mail (boolean)
- Description: Enable email notification of search results
- Editor type: Checkbox
- Type: Boolean
- Default value:
false - Behavior: When enabled, sends email with results table to the specified email address
- Example values:
false- No email notification (default)true- Send email notification with results
alert-mail (string)
- Description: Email address to receive search results notification
- Editor type: Text input
- Type: String (email address)
- Required: Only when
send-mailistrue - Validation: Must be a valid email address format
- Email Details:
- From:
TED Scraper <noreply@ttalbuzzano.it> - Subject:
[TED Scraper] Search Results: {query} - Body: HTML table containing all requested fields plus
notice-title,pdf, andhtml - Columns: All fields from
returned-fields+notice-title,pdf,htmllinks
- From:
- Example values:
"user@example.com"- Valid email"alerts@company.com"- Company email list
Email Notification Feature
When send-mail is enabled and a valid alert-mail is provided:
- Results are sent as an HTML-formatted email
- Table includes all requested fields plus:
- notice-title: Title of the procurement notice
- pdf: Direct link to PDF document in specified language
- html: Direct link to HTML portal view in specified language
- Email includes:
- Search query used
- Number of results found
- Professional HTML table with all data rows
- API Requirement: Requires
RESEND_API_KEYenvironment variable to be set with valid Resend API credentials
Input Example
Minimal input (English, default):
{"query": "STATUS = \"ACTIVE\"","returned-fields": ["buyer-name", "publication-date"],"limit": 10}
Complete input with Italian language:
{"query": "place-of-performance=ITC49 SORT BY publication-number DESC","returned-fields": ["publication-number", "buyer-name", "publication-date", "buyer-profile", "buyer-category"],"lang": "ITA","limit": 50}
Input with email notification:
{"query": "buyer-category = \"PUBLIC\" AND place-of-performance=ITC49","returned-fields": ["publication-number", "buyer-name", "publication-date", "contract-value-amount"],"lang": "ITA","limit": 25,"send-mail": true,"alert-mail": "procurement@company.com"}
Complex query example with German language:
{"query": "publication_date >= 2025-06-01 AND buyer-category = \"PUBLIC\" NOT sme-part = \"true\"","returned-fields": ["publication-number", "buyer-name", "buyer-country", "contract-value-amount"],"lang": "DEU","limit": 100}
Output
The Actor saves results to the Apify dataset as flattened key-value pairs with no nested structures.
Output format
Each notice is saved as a flat object with only simple string values:
Example:
{"publication-number": "343654-2026","buyer-name": "Provincia di Monza e della Brianza","publication-date": "2026-05-20+02:00","buyer-profile": "https://www.monzabrianza.it/","sme-part": null,"pdf": "https://ted.europa.eu/it/notice/343654-2026/pdf","html": "https://ted.europa.eu/it/notice/-/detail/343654-2026"}
Output characteristics
- Flat structure: All values are simple strings or null (no nested objects)
- Language-filtered: All multilingual fields are extracted for the specified language only
- Array handling: Arrays are reduced to their first element
- Missing fields: Fields in
returned-fieldsthat are not present in the notice are included withnullvalue - PDF & HTML links: Always included if available for the specified language
- No summary: No metadata summary item is included in the output
Important notes
- The Actor performs a single call to the TED Search API. Pagination is not implemented.
- The
returned-fieldsinput field is mapped to thefieldsfield in the TED API request payload. - No authentication is required: the search endpoint is public.
- The TED response can contain up to
limitnotices (maximum 250). - The
langparameter filters all multilingual fields to the specified single language with automatic fallback to English (ENG) if a field is not available in the requested language. - notice-title is automatically added to
returned-fieldsif not already present (required field in output). - Email notifications: When
send-mailis enabled, results are sent to the specified email address in HTML table format with all requested fields plus notice details and direct links to PDF and HTML documents. - Email sender: Emails are sent from
noreply@ttalbuzzano.itusing the Resend service.
Input validation
The Actor validates the following constraints:
- query: Non-empty string (required)
- returned-fields: Non-empty array of valid TED field names (required); automatically adds
notice-titleif not present - lang: Valid ISO 639-2 single language code (required) - must be one of: BUL, CES, DAN, DEU, ELL, ENG, EST, FIN, FRA, GLE, HRV, HUN, ITA, LAV, LIT, MLT, NLD, POL, POR, RON, SLK, SLV, SPA, SWE
- limit: Integer between 1 and 250 (required)
- send-mail: Boolean value (optional, default: false)
- alert-mail: Valid email address (required if
send-mailistrue); ignored ifsend-mailisfalse
If input is invalid, the Actor terminates with a clear error message.
Email Notification Setup
To use email notifications, ensure:
send-mailis set totruealert-mailis set to a valid email address- The
RESEND_API_KEYenvironment variable is set with a valid Resend API key
Error handling
In case of errors during execution:
- Input validation error: Clear error message
- Timeout (30s): Request takes too long
- HTTP error from TED API: API response details are logged
- Invalid JSON response: Parsing error
All errors are logged in detail via Actor.log.
Usage example
- Create the Actor on Apify (optional)
- Prepare the input:
{"query": "publication_date >= 2025-06-01","returned-fields": ["publication-date", "buyer-name", "contract-value-amount"],"lang": "ITA","limit": 100}
- Run the Actor (locally or on Apify Platform)
- Download the dataset with the results
References
Limitations
- Single request only: This Actor does not implement pagination
- 250 notices per request limit: TED API limitation
- Specific search fields: Query fields must be valid according to TED documentation
- Language availability: Not all fields are available in all languages; missing values return null