Clearsource — EU public data APIs

Guide · last verified 2026-10-10

How to monitor EU and Romanian public tenders from TED by CPV code

Short answer: TED (Tenders Electronic Daily) is the EU's official journal of public tenders. You can search it for free on ted.europa.eu, or query its anonymous Search API. To get only the notices that are new since yesterday as JSON, schedule the Clearsource TED Tenders actor on Apify in incremental mode.

What you need to know first

  • CPV (Common Procurement Vocabulary) is the code system that classifies what is being bought, for example 72000000 for IT services and 45000000 for construction work.
  • TED carries notices above the EU thresholds. Romanian below-threshold procedures are published only in SEAP, not in TED.
  • A CPV filter on a parent code also returns notices that carry only child codes (live check by us on 2026-10-04: for 72000000, 66 of 100 returned notices had no exact 72000000 but all had a 72… code). Use the most specific code you want.

New to the codes? See CPV codes explained, with daily alerts for your sector.

Way 1: search TED yourself (free)

  1. Go to ted.europa.eu and open the notice search.
  2. Filter by CPV code, buyer country (for example Romania) and publication date. The search syntax is described in the TED developer documentation.
  3. Repeat daily, or save the search if the site offers it. Checking this by hand does not tell you which notices are new unless you keep your own list.

For automation, TED offers a Search API at https://api.ted.europa.eu/v3/notices/search; according to its documentation no API key is needed. You send a query in TED expert syntax, a list of fields, and paging parameters:

curl -s -X POST https://api.ted.europa.eu/v3/notices/search \
  -H 'Content-Type: application/json' \
  -d '{"query":"classification-cpv IN (72000000)
         AND buyer-country IN (ROU)
         AND publication-date >= 20260927
         SORT BY publication-date DESC",
       "fields":["publication-number","publication-date","notice-type"],
       "limit":3,"page":1,"scope":"ALL",
       "paginationMode":"PAGE_NUMBER"}'

We ran this request once on 2026-10-04 and it returned notices. In page mode TED limits retrievable notices to 15,000 and 250 per page; the ITERATION mode has no such limit. TED's rate limit is not documented, so keep requests slow. See the Search API documentation.

Way 2: run the Apify actor

  1. Open TED Tenders on the Apify Store.
  2. Set filters: cpvCodes, countries (ISO 3166-1 alpha-3, for example ROU), noticeTypes, keywords and publishedFrom (for example "7 days").
  3. Run it, then download JSON, CSV or Excel, or call it by API.

Input: Romanian IT tenders from the last 7 days

{
  "countries": ["ROU"],
  "cpvCodes": ["72000000"],
  "publishedFrom": "7 days",
  "language": "ron",
  "maxResults": 200
}

Output (one record, shortened; from a recorded TED response of 2026-10-03)

{
  "record_type": "ted-notice",
  "publication_number": "678144-2026",
  "notice_type": "cn-standard",
  "publication_date": "2026-10-02",
  "buyer_names": ["COMPANIA NATIONALA DE ADMINISTRARE A INFRASTRUCTURII RUTIERE S.A."],
  "buyer_country": ["ROU"],
  "cpv_codes": ["34992200"],
  "estimated_value": { "amount": 74811664, "currency": "RON", "level": "procedure" },
  "tender_deadlines": ["2026-11-02+02:00"],
  "notice_url": "https://ted.europa.eu/en/notice/-/detail/678144-2026",
  "provenance": {
    "source_url": "https://api.ted.europa.eu/v3/notices/search",
    "retrieved_at": "2026-10-03T23:48:49.847Z",
    "licence": { "id": "LicenseRef-EC-Decision-2011-833" },
    "record_hash": "sha256:..."
  }
}

Daily incremental schedule

  1. In Apify, save a task with incremental: true and a stateKey of your choice.
  2. Add a schedule, for example every day at 07:00 Europe/Bucharest.
  3. Connect an Apify integration (e-mail, Slack or webhook) to the task to receive the new notices.
{
  "countries": ["ROU"],
  "noticeTypes": ["cn-standard", "cn-social"],
  "publishedFrom": "3 days",
  "incremental": true,
  "stateKey": "daily-ted-ro",
  "language": "ron",
  "maxResults": 500
}

Each run returns only notices published since the previous complete run, marked is_new: true. The actor starts one day before its stored watermark and skips notices it already delivered. A run that stops early (your maxResults, your maximum charge or a time limit) does not move the watermark, so the next run re-scans the window and nothing is skipped. Do not run two incremental runs with the same state key at the same time. Incremental mode cannot be combined with expertQuery.

Price

Pay per event on Apify (README of 2026-10-10): $0.002 per notice pushed ($2 per 1,000). Dry runs, invalid input and TED errors are not charged. Apify also charges a start event, by default $0.00005 per run. A daily alert with about 20 new notices costs about $0.04 per day.

Frequently asked questions

Is this an official TED service?

No. The actor uses the official TED Search API but is not affiliated with or endorsed by the European Union or the Publications Office. The TED logo is not used. Check the official notice (notice_url) before acting.

Can I reuse TED notice data commercially?

According to the TED legal notice (opened 2026-10-04), notices may be reused under Commission Decision 2011/833/EU. Read it yourself and take advice for your case. Records carry the attribution "Source: TED — Tenders Electronic Daily, © European Union, https://ted.europa.eu".

Does the actor return contact persons?

No. Contact-person names, e-mails, phone and fax numbers and winner details are never requested from TED. A buyer name can occasionally be a natural person, as published by TED.

How many notices per run?

The actor makes one request at a time and at most 500 notices per rolling 6 minutes, about 80 notices per minute, so a 1,000-notice backfill takes about 12 minutes. A run stops after 4 hours.

Which Romanian tenders are missing?

Below-threshold Romanian procedures and direct purchases are published in SEAP, not in TED. A separate Clearsource actor for SEAP open data is not public yet.

Sources

Information only, not legal or procurement advice. Terms: terms of use.