UK Tender Monitor (Find a Tender + Contracts Finder) avatar

UK Tender Monitor (Find a Tender + Contracts Finder)

Pricing

from $2.50 / 1,000 notices

Go to Apify Store
UK Tender Monitor (Find a Tender + Contracts Finder)

UK Tender Monitor (Find a Tender + Contracts Finder)

Monitor new UK public tenders from Find a Tender and Contracts Finder via official OCDS APIs. Clean, deduplicated notices with buyer, CPV, value, deadline and links. Optional AI English summaries. Pay only per notice.

Pricing

from $2.50 / 1,000 notices

Rating

0.0

(0)

Developer

yanpengluo

yanpengluo

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Categories

Security

Limited permissions

Share

UK Tender Monitor: Find a Tender + Contracts Finder (OCDS)

Monitors UK public procurement notices from two official Cabinet Office OCDS APIs. No API key is needed.

  • Find a Tender (FTS): GET /api/1.0/ocdsReleasePackages, using updatedFrom/updatedTo and a cursor (links.next).
  • Contracts Finder (CF): GET /Published/Notices/OCDS/Search, using publishedFrom/publishedTo and a cursor.

The output uses the same normalized schema as the TED and SAM actors. It adds ocid and releaseDate.

How it fetches

  • Each source runs on a single thread, with at most 1 request per second (≥1.1 s apart).
  • On 429 or 5xx it backs off and retries at most 3 times, and honours Retry-After.
  • It sends an honest User-Agent and uses no proxies. On 403 or a captcha it stops.

Deduplication

  • One record per OCDS ocid per run, across both sources. The newest release wins, because APIs return newest first.
  • Across runs, an ocid already output in the same dedupeScope is skipped.
  • RUN_SUMMARY reports crossSourceDuplicates and olderReleasesOfSameOcid.

Field rules

  • estimatedValue comes from tender.value. If that is missing, it is the sum of lot values, but only when every lot has a value and all lots share one currency. It is null for award/contract releases, because there tender.value may be the awarded value. No currency conversion is done.
  • Money fields are always {amount, currency} or null.
  • awardValue is the sum of awards[].value (net amount) in a single currency. If there are none, it is the sum of contracts[].value. Mixed currencies give null.
  • deadlineAt = tender.tenderPeriod.endDate, but only if it has a time and a UTC offset. Otherwise it is null.
  • cpv comes from tender, items and additional classifications (CPV scheme only).
  • titleEn is the original title (titleEnSource: "original"). Notices are published in English, but some may be in Welsh.
  • parties / contact points are not output, and contact blocks are stripped from the optional raw records. Emails and phones are scrubbed.
  • cpvPrefixes and keywords filter on the client side: every release in the time window is still fetched.

Licence and attribution

Contains public sector information licensed under the Open Government Licence v3.0 — https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/

  • FTS and CF data are published under the OGL v3.0. Every output record's licenseAttribution contains the statement above, the licence link, and the source service (Find a Tender or Contracts Finder).
  • If you republish, keep this attribution and do not suggest official endorsement.
  • AI summaries are optional (DeepSeek, budget-capped). They are derived content, not official text.

Sources and quota split

  • sources takes ["fts","cf"] (default), ["fts"] or ["cf"]. uk-fts/uk-cf are also accepted.
  • With both sources, maxItems is split half/half; the first listed source gets the odd item. Any share a source doesn't use rolls over to the other one, in either direction. The cursor resumes, so nothing is fetched twice.
  • RUN_SUMMARY reports quotaShares and outputBySource.

Pricing (pay-per-event)

EventPrice (USD)When
actor-start$0.005once per run
notice$0.0025 ($2.5 / 1,000)per record written to the dataset
notice-summary$0.01per newly generated AI summary (optional)

No charge for failed records, duplicates, or for cached, skipped or failed summaries. Config: .actor/pay_per_event.json; local simulation: scripts/ppe-local.sh.