Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

Free EU tender alerts from the TED API (one Python file, no account)

Description and use

A single Python script with no external dependencies automates daily EU tender alerts via TED Search API, tracks state, and can email or output Atom/CSV/Markdown.

Problem

Commercial tender alert services are paid; need free alerts for specific CPV codes and countries.

Outcome

The script delivers 22 matching notices on 8 Oct 2026, with 22 new entries; subsequent runs report 0 new. State file keeps alerts small and only new items are shown.

Workflow

  • 1. Clone repo: git clone https://github.com/philippprimisser-max/ted-tender-alerts
  • 2. Run script: python ted_alerts.py --cpv 72 48 --country AUT --days 7 --lang de
  • 3. Script queries TED Search API v3 with expert-search query, pauses 0.5s between pages, limits to 20 pages.
  • 4. State file ted_state.json tracks seen publication numbers; removes entries older than 120 days.
  • 5. Output: prints matching and new notices, generates Atom feed, CSV, Markdown, or sends email via SMTP.
  • 6. Optional: set up GitHub Actions workflow (examples/daily-ted-alerts.yml) to run daily, commit state and feed, and email alerts.

Evidence

Free EU tender alerts from the TED API (one Python file, no account)

Source

I put that into one Python file with no dependencies beyond the standard library: ted-tender-alerts (MIT).

Source

python ted_alerts.py --cpv 72 48 --country AUT --days 7 --lang de

Source

22 matching notices, 22 new. - Commvault … | AUT | 21,000,000 EUR | deadline 2026-11-09 (32 d) https://ted.europa.eu/de/notice/-/detail/696492-2026

Source

TED Search API v3 is anonymous. One POST to https://api.ted.europa.eu/v3/notices/search with a query string in TED's expert-search language:

Source

The script is gentle with the API: it pauses 0.5 s between result pages and stops after 20 pages (100 notices each) by default.

Source

A state file (ted_state.json) remembers publication numbers already reported. Every run compares the current result to that set and prints only the difference.

Source

The repository includes an example workflow (examples/daily-ted-alerts.yml). Copy it to .github/workflows/ in your own copy of the repo and it runs every weekday morning, commits the state and the Atom feed back, and optionally e-mails you.

Source

  • Record date: 2026-10-09T02:40:51.838Z