EU/UK Procurement Buyer & Award Signals
Pricing
from $2.00 / 1,000 procurement signals
EU/UK Procurement Buyer & Award Signals
Normalize recent opportunities and contract awards from TED, Find a Tender, and Contracts Finder into privacy-safe, deduplicated buyer and supplier signals.
Pricing
from $2.00 / 1,000 procurement signals
Rating
0.0
(0)
Developer
Ilya Kalesnichenka
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Turn recent public procurement notices into a normalized stream of buyer demand and verified award signals. The Actor queries the official TED, Find a Tender, and Contracts Finder APIs, applies the same local filters across sources, deduplicates overlapping records, explains its ranking, and exports attribution with every row.
Why use this Actor?
- Monitor opportunities and awards across one EU source and two UK sources in one schema.
- Find demand by keyword, buyer country, CPV prefix, date window, and published value.
- Rank by best fit, newest publication, nearest opportunity deadline, or highest value.
- Merge semantically equivalent notices while preserving every official source reference.
- Continue when one source fails and disclose the failure in the run
OUTPUTrecord. - Use public APIs only: no credentials, browser, or proxy required.
Quick start
{"sources": ["ted", "find_tender", "contracts_finder"],"signalTypes": ["opportunity", "award"],"keywords": ["cyber security", "software"],"buyerCountries": ["GB", "DEU"],"cpvCodes": ["72"],"publishedAfter": "2026-07-01","minValue": 100000,"rankingMode": "bestFit","maxResults": 100}
If publishedAfter is omitted, the Actor uses the UTC date two calendar days before the run starts. Date windows are inclusive. Deadline filters apply only to opportunities; award rows are not discarded because they have no tender deadline.
Input
| Field | Type | Default | Meaning |
|---|---|---|---|
sources | string[] | all three | Any of ted, find_tender, contracts_finder. |
signalTypes | string[] | both | opportunity, award, or both. |
keywords | string[] | [] | Up to 10 normalized terms matched against title and organization names. |
buyerCountries | string[] | [] | Up to 30 ISO alpha-2 or alpha-3 codes. GBR is normalized to GB. |
cpvCodes | string[] | [] | Up to 20 CPV codes or prefixes, 2–8 digits each. |
publishedAfter | YYYY-MM-DD | run date minus 2 days | Earliest publication date. |
publishedBefore | YYYY-MM-DD | not set | Latest publication date. |
deadlineAfter | YYYY-MM-DD | not set | Earliest opportunity deadline. |
deadlineBefore | YYYY-MM-DD | not set | Latest opportunity deadline. |
minValue | nonnegative number | not set | Minimum published value in the record's native currency. Missing values are excluded. |
maxResults | integer | 100 | Maximum eligible rows, from 1 to 1,000, before a spending limit is applied. |
rankingMode | string | bestFit | bestFit, newest, deadlineSoonest, or highestValue. |
Currency values are not converted. Comparing or filtering values from different currencies is therefore not economically normalized.
Output
Each Dataset row contains:
- a deterministic
signalIdandsignalType; - title, buyer organization reference, and machine-identified awardees when safely available;
- country, CPV, published value and currency, publication/deadline/award/contract dates;
- deterministic
fitScoreandfitReasons; - one or more
sourceReferenceswith official notice ID, public URL, license, and retrieval time.
The key-value store OUTPUT record summarizes selected/successful/failed sources, scanned and normalized counts, filtering and deduplication counts, free and charged rows, and whether the charge limit stopped delivery.
Privacy boundary
This is an organization-level market signal, not a contact database. Source payloads can contain personal or direct-contact data such as contactPoint, postal details, email, or telephone values. The Actor uses those fields neither for output nor ranking, never stores the raw upstream payload, and exposes only the explicit Dataset schema. Awardees are emitted only when the source provides both a name and a machine identifier; otherwise the incomplete award signal is dropped.
Pricing
The published Actor uses Apify pay per event:
- Actor start event
apify-actor-start: $0.00005. - Dataset event
procurement-signal: $0.002 per accepted paid signal. - The first 10 free sample rows are written without a paid event.
- After the sample, the Actor checks the run event limit before every row and stops cleanly when the limit is reached.
- The implicit default Dataset-item event must remain disabled to prevent double charging.
These event names and exact prices are validated at runtime. The active Store configuration contains no priced apify-default-dataset-item event, preventing a second charge for the same Dataset row. Use maxTotalChargeUsd when starting a run to set a hard event-charge ceiling; the Actor preserves rows already delivered and reports when the limit stops additional paid signals.
Data licenses and attribution
- TED material is linked and attributed under the applicable EU reuse policy. Consult the official TED legal notice and the source notice for the current terms.
- Find a Tender and Contracts Finder OCDS data are used under the Open Government Licence v3.0 (
OGL-3.0).
Every row retains its official source URL, notice ID, license label, and retrievedAt timestamp. Do not remove attribution when redistributing the output.
Limitations
Upstream public APIs differ in coverage, update timing, classification detail, and organization identifiers. Cross-source deduplication is deliberately conservative and may retain near-duplicates rather than incorrectly merge separate procedures. A best-fit score is a prioritization aid, not a legal, eligibility, sanctions, or supplier due-diligence decision. Always verify the linked official record before acting.
Local development
npm cinpm run checknpm run smoke:livedocker build -t eu-uk-procurement-buyer-award-signals .
npm run smoke:live is a bounded read-only check against the public source APIs. It writes no Apify Dataset rows and performs no publication.