UK Public Tenders – Find a Tender & Contracts Finder (OCDS) avatar

UK Public Tenders – Find a Tender & Contracts Finder (OCDS)

Pricing

from $2.00 / 1,000 ocds releases

Go to Apify Store
UK Public Tenders – Find a Tender & Contracts Finder (OCDS)

UK Public Tenders – Find a Tender & Contracts Finder (OCDS)

Unofficial. Pull UK public procurement notices from the Find a Tender and Contracts Finder OCDS APIs. Filter by CPV, keyword and stage; incremental mode for daily alerts. Export JSON/CSV/Excel. $2 per 1,000 releases.

Pricing

from $2.00 / 1,000 ocds releases

Rating

0.0

(0)

Developer

OSEKA Data

OSEKA Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Use from an AI agent (MCP): this unofficial Actor is available as an MCP tool via Apify's hosted MCP server: https://mcp.apify.com/?tools=elekezem/uk-tenders-ocds

  • Claude Desktop / claude.ai: Settings → Connectors → Add custom connector → Remote MCP server URL = the URL above → Continue → Add, then sign in to Apify (OAuth).
  • Cursor (~/.cursor/mcp.json, or run apify mcp install cursor):
    { "mcpServers": { "uk-tenders": { "url": "https://mcp.apify.com/?tools=elekezem/uk-tenders-ocds" } } }
    Using an API token instead of OAuth: add "headers": { "Authorization": "Bearer <APIFY_TOKEN>" }.
  • Try: "Find UK IT tenders published in the last 7 days, max 20."
  • Billing: per returned notice (see Pricing). Keep maxResults small while testing. Default sample output omits the large raw payload (includeRaw: false).

This Actor is not an official government API. It reads public OCDS feeds from Find a Tender and Contracts Finder.

Pull UK tenders and public procurement notices from Find a Tender and Contracts Finder as OCDS (Open Contracting Data Standard) JSON — one dataset item per release.

Unofficial. This Actor is not affiliated with, endorsed by, or connected to the UK Government, the Cabinet Office, Crown Commercial Service, Find a Tender Service, or Contracts Finder. It uses no government logos. Notices on the source websites remain the ones to rely on; this output can lag behind them.

Who it is for

  • Bid consultants building a UK tenders watch-list by CPV codes, keyword, or procurement stage
  • B2G sales looking for government contracts UK and B2G leads from published notices
  • Analysts doing tender monitoring and tracking contract awards
  • Researchers working with OCDS / Open Contracting data from Find a Tender and Contracts Finder

60-second quick start

The default input is already a small sample (mode: sample, maxResults: 10, both sources, last 7 days, includeRaw: false). You do not need to edit anything. Sample mode is capped at 10 notices.

  1. Open this Actor in Apify Console and click Start.
  2. Wait for the run to finish (a few requests, at least 2 seconds apart).
  3. Open the default dataset. Use the Overview view for normalised fields, or Raw OCDS for the source release.
  4. Export the dataset as JSON, CSV, or Excel from the dataset tab if you want a file.

If one source returns nothing in sample mode, the other source is used to fill up to maxResults, so the first run still shows the output shape.

Input examples

Only fields from this Actor's input schema are used. cpvCodes and keywords are applied locally after each fetch (the source APIs have no keyword parameter; CPV is a prefix match, so 72 matches 72000000). stages is passed through to each source. Filtered-out releases are not written and not charged.

Daily IT bid alerts (CPV 72 / 48)

{
"sources": ["fts", "contractsFinder"],
"mode": "incremental",
"maxResults": 2000,
"cpvCodes": ["72", "48"],
"watermarkStoreName": "uk-tenders-ocds-watermarks"
}

Awards only, for competitor tracking

{
"sources": ["fts", "contractsFinder"],
"mode": "incremental",
"maxResults": 2000,
"stages": ["award"],
"watermarkStoreName": "uk-tenders-ocds-watermarks"
}

award is accepted by both sources. (implementation is Contracts Finder only; Find a Tender is skipped if none of the selected stages apply to it.)

{
"sources": ["fts", "contractsFinder"],
"mode": "incremental",
"maxResults": 2000,
"keywords": "cloud hosting",
"watermarkStoreName": "uk-tenders-ocds-watermarks"
}

keywords is a case-insensitive substring match against title, description, buyer name, and ocid.

Output

One dataset item per OCDS release. Fields below match the dataset schema and the FTS fixture used in tests (tests/fixtures/fts_release_package_sample.json).

FieldMeaning
sourcefts or contractsFinder. Cross-source ocids are not comparable.
ocidOpen Contracting ID. FTS uses ocds-h6vhtk-; Contracts Finder uses ocds-b5fd17-.
releaseIdOCDS release id. Unique with ocid within a source.
dateRelease date from the source.
tagOCDS tags, e.g. tender, award.
titleTender title.
descriptionTender description (emails / obvious UK phones in free text are redacted).
statusTender status.
buyerName / buyerIdBuyer organisation name and id.
cpvCodesCPV codes collected from the release.
valueAmount / valueCurrencyFirst amount found on tender, award, or contract value.
noticeUrlNotice page URL when the source provides one (FTS can also be derived from the release id).
languageRelease language, when present.
ocdsPackageVersionValue of the release package version field.
licenseUpstream licence URL from the package, when present.
licenseUrlOGL v3.0 URL.
attributionOGL attribution sentence.
unofficialDisclaimerUnofficial-status notice stored on every item.
rawPresent only when includeRaw is true. Source release after personal contact fields are stripped and emails / obvious phones in free text are redacted. Default and sample output omit this field.

Short sample (FTS fixture; raw omitted, matching the default includeRaw: false):

{
"source": "fts",
"ocid": "ocds-h6vhtk-078a41",
"releaseId": "098250-2026",
"date": "2026-10-19T01:21:52+01:00",
"tag": ["award", "contract"],
"title": "Medical Insurance Services for British Embassy Doha",
"status": "complete",
"buyerName": "Foreign, Commonwealth and Development Office",
"buyerId": "GB-PPON-PXRR-8771-PHVX",
"cpvCodes": ["66512200"],
"valueAmount": 81347.09,
"valueCurrency": "GBP",
"noticeUrl": "https://www.find-tender.service.gov.uk/Notice/098250-2026",
"language": "en",
"ocdsPackageVersion": "1.1",
"licenseUrl": "https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/",
"attribution": "Contains public sector information licensed under the Open Government Licence v3.0."
}

Contracts Finder items use the same shape (source: contractsFinder). Some fields can be null when the source omitted them — the CF fixture, for example, has no amount, so valueAmount / valueCurrency are null.

Incremental mode and Apify schedules

Use this for daily bid alerts (or any other interval you set on the schedule).

  1. Set mode to incremental, keep a stable watermarkStoreName (default uk-tenders-ocds-watermarks), and raise maxResults so a day's new notices fit in one run.
  2. Save that input as a task, or use it directly.
  3. In Apify Console, create a Schedule that starts that task (daily is the usual choice for alerts).

How the watermark works:

  • Per-source timestamps are stored in the named key-value store (from, completedAt), plus a bounded list of recently seen ocid|releaseId keys.
  • The first incremental run with no watermark looks back 24 hours.
  • A 60-second overlap window is applied on completed runs; keys already seen in that window are not pushed or charged again.
  • If a run stops early (maxResults or the run max charge), the watermark is not advanced, so the next run retries the same window.
  • A Contracts Finder page that yields zero releases does not advance that source's watermark (an empty HTTP 200 can be throttling, not "no notices").

There is no cross-source de-duplication. The same procurement can appear once from Find a Tender and once from Contracts Finder.

Cost

Pay per event. Live prices are set in Apify Console.

Each OCDS release is charged once before it is written to the dataset:

  • ocds-release: $2.00 per 1,000 ($0.002 per release). Used for dateRange and incremental.
  • ocds-release-trial: pending Console pricing event. Used only in sample mode (max 10 notices). Until that event exists in Console, sample runs still save results: Apify SDK 4.1.0 does not call the platform charge API for an unknown event (it logs a warning) and still reports charged_count; this Actor then writes the item. The same helper already writes the item when charged_count is 0 (non-PPE runs).

Actor start (apify-actor-start) is $0.00005 per run (Apify default; not charged from Actor code).

Conversion only: $0.002 per release on ocds-release, so 500 releases a day is about $1 a day, or about $30 over 30 days.

Set a maximum cost per run in the run options. When that max charge is reached, the Actor stops and does not write further unbilled items.

Personal data and licence

OGL v3.0 does not cover personal data. This Actor minimises contact fields by default:

  • Removed from parties, buyer, and tender.procuringEntity: contact-point name, email, telephone, faxNumber, and similar keys (phone, mobile, givenName, familyName, contactName). Organisation-level email / telephone keys on those objects are also dropped.
  • Kept: organisation name, address, identifiers, and contactPoint.url.
  • In listed free-text fields (for example tender or award description), email addresses and obvious UK / +44 phone numbers are replaced with [REDACTED_EMAIL] / [REDACTED_PHONE]. Identifier fields are left intact. A value that is entirely one http(s) URL is not rewritten.

Free-text redaction is rule-based and can miss unusual formats. Check the data before you republish it.

Contains public sector information licensed under the Open Government Licence v3.0. Upstream packages also set license to the OGL URL and publicationPolicy to Open Contracting.

Limitations

  • No cross-source de-duplication. FTS (ocds-h6vhtk-…) and Contracts Finder (ocds-b5fd17-…) items are separate. Within one source, duplicates are dropped by ocid + release id.
  • Data may lag the source. Output is only as current as the Find a Tender and Contracts Finder OCDS endpoints, and can lag the websites.
  • Attachments and documents are not included. Notice page URLs may appear in noticeUrl and inside raw; files behind those links are not downloaded.
  • Rate limits. Requests are serial, at least 2 seconds apart, at most 100 items per page. FTS 429/503 responses are retried after Retry-After. Contracts Finder over-limit 403 waits about 5 minutes; two in a row abort the run.
  • OCDS versions. Contracts Finder packages say 1.1 but follow a 1.0 base with some 1.1 additions. Fields can be missing; both sources are parsed defensively.
  • Scope. Published notices from the two public OCDS endpoints only. No draft notices, no Contracts Finder OAuth endpoints.
  • Not legal advice. Check licence terms and personal-data obligations for your own use.

FAQ and contact

Is this a UK government product? No. It is unofficial. Find a Tender and Contracts Finder are named only as the data sources.

Does a dataset item include personal contact fields? No. Those keys are dropped or redacted as described above. Organisation names and addresses remain.

Can I filter by CPV, keyword, and stage? Yes. cpvCodes (prefix), keywords (local substring), and stages (planning, tender, award, and Contracts Finder implementation).

How do daily bid alerts work? Incremental mode plus an Apify Schedule, with maxResults high enough for the day's volume.

Will I pay for notices that fail the CPV or keyword filter? No. A release is charged only if it is accepted and about to be written.

Where should I report a problem? Use the Issues tab on this Actor's Apify Store page: apify.com/elekezem/uk-tenders-ocds/issues.