Lead generation
UK Contracts Finder Tenders Scraper
Turn UK Contracts Finder's raw OCDS feed into flat, buyer-ready leads: buyer, value, CPV code, deadline, and award/supplier info — no API key needed.
Free Apify credit covers a first run. No credit card to try.
What this Actor scrapes
UK Contracts Finder is the central portal where every UK public body — councils, NHS trusts, central government departments — posts contract notices. The raw feed is Open Contracting Data Standard (OCDS) JSON: deeply nested tender/award/parties objects that are a pain to parse by hand. This Actor queries Contracts Finder's public OCDS search API and flattens every release into one buyer-ready row — buyer name, title, value, CPV classification, publish/closing dates, status, and award/supplier info when a contract has already been won. No API key, no login, no OCDS-schema puzzle.
What we handle for you
- 🔁 Retries with exponential backoff on
429/503/network errors — up to 5 attempts,Retry-Afterhonoured. - 🧱 Per-release fault isolation — one malformed OCDS release is skipped and logged, never crashes the whole run.
- 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, never the raw 300+ KB OCDS blob.
- 💰 Pay-Per-Event pricing — you only pay for rows that land in your dataset. No data, no charge.
Use cases
- Bid-team pipeline — pull new tenders matching a keyword or CPV area every day.
- Market intelligence — track which UK public bodies are buying what, and at what value.
- Award tracking — monitor closed notices for supplier names and award values on contracts you bid on.
- Lead generation — build a prospect list of buyers issuing contracts in your sector.
Input
Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.
| Field | Type | Required | What it does |
|---|---|---|---|
keyword | string | no | Free-text keyword sent to Contracts Finder's search (e.g. grounds maintenance). Leave blank to match all notices of the selected type(s). |
noticeTypes | array | no | Notice types to search for, e.g. Contract, Tender, Award. Only Contract is confirmed-working; other values are sent through as-is. |
publishedFrom | string | no | Only include notices published on or after this date, e.g. 2026-01-01. |
publishedTo | string | no | Only include notices published on or before this date, e.g. 2026-08-01. Must be on/after publishedFrom when both are set. |
minValue | number | no | Discard notices whose contract value is below this amount. Applied client-side after fetching (never sent to the API). |
maxValue | number | no | Discard notices whose contract value is above this amount. Applied client-side after fetching (never sent to the API). Must be on/above minValue when both are set. |
maxResults | integer | no | Hard cap on the number of contract notice rows returned by this run. |
useProxy | boolean | no | Route requests through Apify Proxy. Contracts Finder is UK government infrastructure with no observed anti-bot, so this defaults off — enable only if you see rate-limiting. |
{
"noticeTypes": [
"Contract"
],
"maxResults": 5,
"useProxy": true
} Output
One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.
buyer_nametitlevalue_amountvalue_currencycpv_codesclosing_datenotice_typestatusaward_statussupplier_names
{} Pricing
| Event | Price | When |
|---|---|---|
| Actor start | $0.20 | Once per run, covers warm-up and proxy session setup. |
| Result row emitted | $0.0040 | Per result written to the dataset. |
You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.
Limitations
- Contracts Finder only — Sell2Wales, Public Contracts Scotland, and eTendersNI are out of scope.
- No tender-document (PDF) downloads, only the structured notice metadata.
- Real-time per-query only — no historical bulk CSV/XML export and no cross-run deduplication.
FAQ
Do I need a Contracts Finder account or API key?
Which notice types are supported?
notice_types defaults to ["Contract"], the confirmed-working value. Other OCDS notice types (e.g. Tender, Award) are passed through as-is; an unsupported value surfaces the API's own rejection rather than failing silently.Why is `maxResults` capped at 300?
Can I filter by contract value?
minValue/maxValue filter on the parsed value_amount client-side (Contracts Finder's API doesn't expose a value filter server-side).Ready to run it?
Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.
Related Actors