# Changelog of EU Public Tenders (TED) Scraper (`davidts/eu-tenders-ted-scraper`) Actor

- **URL**: https://apify.com/davidts/eu-tenders-ted-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/davidts/eu-tenders-ted-scraper.md

## Changelog

All notable changes to the EU Public Tenders (TED) Scraper are listed here. The version number is
the `version` field of `.actor/actor.json`.

### 0.1 - 2026-10-29

First release.

- Fetches procurement notices from the official TED Search API
  (`POST https://api.ted.europa.eu/v3/notices/search`, no API key) in iteration mode, so any
  number of notices can be retrieved.
- Structured filters (`countries`, `cpvCodes`, `keywords`, `noticeTypes`, `publishedAfter`,
  `publishedBefore`, `deadlineAfter`, `minValue`, `onlyOpenForSubmission`) are compiled into a TED
  expert query; a raw `query` can be given instead. The query is validated with TED's syntax
  check before any data is fetched, so typos produce a clear error. Without any filter the
  newest notices of the last 7 days are returned (TED rejects a query that matches everything).
- Output per notice: publication number, notice and form type, title (preferred language with
  fallback and `titleLanguage`), buyer (name, country, city, website, legal type), CPV codes,
  place of performance, estimated and awarded values, publication date, earliest submission
  deadline, procedure type, contract nature, lot count, HTML/PDF/XML/TED links, document URL,
  language, scrape timestamp. `fields: "full"` adds the description, identifiers, OJ S number,
  dispatch date, submission URL and the raw TED record.
- No personal data: only organisation-level fields are requested; contact, e-mail and phone
  fields are never requested and are stripped from `raw`.
- Options: `maxNotices` (0 = all), `sortBy`, `scope`, `preferredLanguage`, `includeDocumentLinks`.
- Politeness and reliability: 2 concurrent requests at most, 200-500 ms jitter, exponential
  backoff on 429/5xx (5 retries), automatic retry without a field TED rejects, de-duplication by
  publication number, state persisted across migrations.
- Pay-per-event pricing: dataset items charged automatically, optional `actor-start` event.
