EU Tender Change Intelligence avatar

EU Tender Change Intelligence

Pricing

Pay per usage

Go to Apify Store
EU Tender Change Intelligence

EU Tender Change Intelligence

Detect and track TED deadline, cancellation, procurement-document, criteria, and other eForms notice changes.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Atlas

Atlas

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

25 days ago

Last modified

Categories

Share

Turn official TED eForms change notices into a durable feed of deadline changes, cancellations, procurement-document updates, criteria changes, and other amendments.

Who it is for

The ideal customer is a bid team, supplier, capture manager, proposal consultancy, or procurement intelligence provider that already tracks opportunities on TED and loses time or revenue when an amendment is noticed late. The Actor is especially useful for teams monitoring many countries or CPV families where manual re-checking does not scale.

Why teams pay

A missed extension can waste a bid that could have been completed. A shortened deadline can remove the chance to bid entirely. A changed document or criterion can invalidate work already done. This Actor replaces repeated manual TED checks with normalized, explainable, replay-safe records that can feed alerts, CRM workflows, data warehouses, and client-facing monitoring products.

What it detects

TED eForms change notices retain the form type and notice type of the notice being changed. They are not queried as form-type=change. This Actor scans a bounded publication window and identifies a change only when official field BT-758 (change-notice-version-identifier) is non-empty.

It requests the official publication, notice, buyer, CPV, change, document, reason, and tender deadline fields. TED Search API arrays are flattened. The Actor therefore preserves values as sorted notice-level sets and never joins buyers, lots, dates, times, sections, or descriptions by array position.

Output

Every dataset row uses schema version 1.0.0 and includes:

  • stable changeId, derived only from the current publication number and referenced prior notice identifier set;
  • separate contentDigest for mutable normalized content;
  • publication, title, buyer, country, CPV, form, and notice type;
  • preserved BT-758 references, including classified TED publication numbers and opaque version IDs;
  • reason codes/descriptions, change descriptions, changed section identifiers, and document-change status/dates;
  • separate notice-level tender deadline date and time sets;
  • relevance score and signals, tracking state, changed fields, attribution, and explicit association warnings.

full emits snapshot rows. incremental emits only new or updated matched changes. diff also emits unchanged matched changes. maxItems counts matched change notices, never raw scanned rows.

Input example

{
"mode": "incremental",
"keywords": ["cybersecurity", "SOC"],
"reasonCodes": ["cor-buy"],
"buyerCountries": ["DEU", "CZE"],
"cpvPrefixes": ["72"],
"publicationFrom": "2026-07-01",
"publicationTo": "2026-07-27",
"deadlineFrom": "2026-08-01",
"includeDocumentChangesOnly": false,
"language": "eng",
"maxItems": 500
}

All user-controlled strings are normalized, validated, and filtered locally. The TED expert-search query contains only validated publication dates.

Reliability model

State is isolated by the canonical filter configuration. Each partial run stores the exact query window, inbound iteration token, row offset, and a source conflict ledger. Expired tokens replay from the window start under independent page and row ceilings. Identical source rows are skipped; a repeated identity with different requested-field content fails closed.

Forward pages and rows have independent caps. TED timeout envelopes, malformed payloads, oversized pages/tokens, repeated tokens, invalid stored state, state-capacity conflicts, and lease loss all fail closed. Transient network, rate-limit, and server errors use bounded retries.

Durable state uses immutable snapshots in named KVS eu-tender-change-intelligence-state-v1, serialized by a Request Queue lease in eu-tender-change-intelligence-lock-v1. State admission reserves worst-case progress capacity before any dataset write. Saved state is capped at 3.5 MB. Writes occur in the order dataset rows, default-store OUTPUT, then durable state, so a state-write failure leaves output replayable.

Costs and operation

The Actor defaults to 1024 MB memory and uses bounded, sequential TED requests. Cost is driven by the publication window and safety caps rather than the number of matches. Start with a narrow date window and use incremental mode for scheduled monitoring. No API key or other secret is required.

Attribution in each record identifies TED, the API endpoint, field reference, and reuse notice. Consumers remain responsible for verifying bid-critical details against the linked official notice.

Local development

Requires Node.js 22 or later.

npm ci
npm run lint
npm run typecheck
npm run build
npm test
npm run smoke:local
npm run smoke:live
npx apify validate-schema .actor/input_schema.json

The live smoke test is opt-in through the script, scans bounded recent pages, requires at least one real BT-758 row, normalizes it, and validates it against the dataset schema.