Find a Tender Scraper (UK Late Payers & Contract KPIs)
Pricing
from $2.75 / 1,000 notices
Find a Tender Scraper (UK Late Payers & Contract KPIs)
Scrape UK late payers from Find a Tender: Procurement Act payment compliance reports with % of invoices paid within 30 days, average days to pay and trend, plus contract performance ratings and terminations with the supplier named. Official open data, no login. $5 per 1,000 notices.
Pricing
from $2.75 / 1,000 notices
Rating
0.0
(0)
Developer
locaihost data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Security
Limited permissionsShare
See which UK public bodies pay their suppliers late. You get every Procurement Act 2023 payments compliance notice from the UK Find a Tender service: % of invoices paid within 30 days, average days to pay and the change since the authority's last report. Contract performance ratings and contract terminations come too, with the supplier named.
One row per notice, from Find a Tender's open APIs. No login, no API key.
Who uses it:
- Suppliers and their advisers, to check how quickly a council, NHS trust or university pays before bidding for its work.
- Bid teams, to spot incumbents rated below target on their KPIs, or contracts ended early, before a re-tender.
- Journalists and researchers, to rank public bodies by late payment and follow whether they improve.
- Finance and credit teams, to add a public customer's payment record to credit and cash-flow decisions.
- Procurement data products, which get stable authority and supplier keys (Companies House number first) for joining notices.
Quick start
Paste this into the JSON tab of the input and click Start:
{"noticeTypes": ["payments-compliance"], "daysBack": 365, "maxResults": 10}
You get the 10 worst payers among the payments compliance reports published in the last year, usually in under 20 seconds. Remove maxResults to get all of them (675 reports on 2026-10-14, in about 10 seconds).
What you get
Late payers (payments compliance notices, UK17). Under the Procurement Act 2023 (s.69), an authority publishes one for each six-month reporting period, within 30 days of the period's end.
| Question | Fields |
|---|---|
| How much is paid within 30 days? | paidWithin30DaysPct (of payments made, counted from the invoice day) |
| How late is the rest? | paid31To60DaysPct, paid61PlusDaysPct, paidAfter30DaysPct |
| How long on average? | averageDaysToPay |
| How much due wasn't paid? | duePaymentsNotMadePct (includes invalid or disputed invoices) |
| The statutory measure | paidOnTermsPct (paid within the 30-day term of s.68(2); see Limits) |
| Better or worse than last time? | paymentTrend (better, worse, unchanged), paidWithin30DaysChange, averageDaysToPayChange, paidOnTermsChange, previousNoticeId, previousPeriodStart, previousPeriodEnd, previousPaidWithin30DaysPct, previousAverageDaysToPay |
| Which period and contracts? | paymentPeriodStart, paymentPeriodEnd, contractsCovered, emptyReport |
| Corrections | correctsNoticeId (only the latest version of a report is returned) |
Contract performance (UK9) and terminations (UK11), each with the contract and supplier named:
| Group | Fields |
|---|---|
| KPI ratings | kpis[] (rating, period, notes), kpiCount, kpisMet, kpisBelowTarget, kpisNotRated, worstRating, kpiSummary, underperformanceReasons, performancePeriodStart, performancePeriodEnd, suppliersRemoved, suppliersRemovedKeys |
| Terminations | terminationReason, terminationDate, terminationNotes, finalValue, finalValueGross |
| Contract | contractTitle, contractId, contractValue (ex VAT), contractValueGross, currency, contractStart, contractEnd, contractMaxEnd, joinedFromEarlierNotice |
| Supplier | supplierNames, supplierCompaniesHouseNumbers, supplierIds, supplierKeys |
Every row: noticeType, noticeCode, noticeId, ocid, publishedAt, noticeUrl, authorityName, authorityNameAsPublished, authorityType, authorityId, authorityIdentifiers, authorityKey, licence. Contract details (UK7) and contract award (UK6) notices are opt-in.
One real row (a payments compliance notice, run on 2026-10-14; empty contract and KPI fields left out):
{"noticeType": "payments-compliance","noticeCode": "UK17","noticeId": "092165-2026","publishedAt": "2026-09-30","noticeUrl": "https://www.find-tender.service.gov.uk/Notice/092165-2026","authorityName": "NEWLON HOUSING TRUST","authorityType": "Public authority - sub-central government","authorityIdentifiers": "GB-PPON-PBDJ-9838-DQRQ; GB-COH-IP18449R","authorityKey": "GB-COH-IP18449R","paymentPeriodStart": "2026-04-01","paymentPeriodEnd": "2026-09-30","paidWithin30DaysPct": 20,"paid31To60DaysPct": 35,"paid61PlusDaysPct": 45,"paidAfter30DaysPct": 80,"averageDaysToPay": 63,"paidOnTermsPct": 20,"duePaymentsNotMadePct": 0,"contractsCovered": "All contracts, including those signed under earlier legislation","emptyReport": false,"previousNoticeId": "092150-2026","previousPeriodStart": "2026-01-01","previousPeriodEnd": "2026-03-31","previousPaidWithin30DaysPct": 35,"previousAverageDaysToPay": 49,"paidWithin30DaysChange": -15,"averageDaysToPayChange": 14,"paymentTrend": "worse","licence": "Contains public sector information licensed under the Open Government Licence v3.0. Source: Find a Tender service (UK Cabinet Office).","scrapedAt": "2026-10-14T03:43:44.205Z"}
Worst payers first. Rows are stored with payments compliance notices first, ranked by paidWithin30DaysPct lowest first (ties: slower average first), then short-form and empty reports, then the other notice types, newest first. So maxResults keeps the worst payers. The dataset has three views (Notices, Worst payers (payments compliance), Contract terminations) and exports to JSON, CSV, Excel or HTML, and each run writes a SUMMARY record.
Change since the previous report. For each report the Actor finds the same authority's most recent earlier period (one that ended before this one began). "Same authority" means the same key or any shared identifier (PPON, Companies House, NHS, charity). A change under 1 point or 1 day is unchanged.
Keys for joining. authorityKey and supplierKeys are GB-COH-<Companies House number> when the organisation has one, otherwise Find a Tender's identifier (usually GB-PPON-…), otherwise name:<normalised name>. Identifiers published together are remembered between runs in your account, so a supplier's key can change once, from its PPON to its Companies House key, the first time a notice links the two.
Price
You pay per notice returned. Apify platform usage is included.
| Row | Free and Starter | Scale | Business |
|---|---|---|---|
| Notice | $5.00 per 1,000 | $3.75 per 1,000 | $2.75 per 1,000 |
Plus $0.00005 per run start. Apify's free $5 monthly credit covers about 1,000 notices. Free-plan runs stop at 100 notices each; any paid Apify plan removes the cap. maxResults (default 5,000) sets your own ceiling.
What's free: notices removed by your filters, notices already returned with onlyNew on, reports replaced by a later correction, and notices not stored before the run's time limit. Bad input, or Find a Tender being down, ends the run with a message and no charges. To cap a run's spend, set Maximum cost per run in the run options.
Limits, stated up front
- Run time depends on the notice types. Payments compliance comes from a small separate API and takes about 10 seconds for the whole history. Every other type comes from Find a Tender's full notice feed, which allows only about 20 requests per three minutes: a 7-day run takes about 5 to 10 minutes, and a 30-day run took about 20 minutes. Give long runs a long timeout. A run that reaches its time limit returns what it has and says so.
- Waves. Payments compliance notices arrive mostly in the 30 days after 31 March and 30 September. On 2026-10-14 Find a Tender held 714 of them from 620 authorities (675 after corrections), and the April to September 2026 reports were due by about 30 October 2026. Most authorities had reported only once, so
paymentTrendis often empty until their second report. - The on-terms figure is unreliable. Some notices give 0% paid on terms while their own day counts show invoices paid within 30 days, so the ranking uses
paidWithin30DaysPct. Short-form reports (on-terms and unpaid figures only) have nopaidWithin30DaysPct. Reports of only zeros are flaggedemptyReport: trueand never ranked or compared. - Names. When an authority typed a notice title into its name ("… Payment Notice April - Sept 2026"), the Actor uses the name it publishes elsewhere, or cuts the title off. The original is always in
authorityNameAsPublished. - Filters for authorities and suppliers match whole words ("Mace" never matches "Pharmaceuticals"). Payments compliance notices name no supplier, so a supplier filter never matches them.
- Up to 400 extra look-ups per run name the contract and supplier behind performance and termination notices whose contract is older than the window.
- Not in the data: individual payments over £30,000 (s.70) are in neither API, and Scottish devolved authorities follow their own rules. The authority's free-text narrative and the approving officer's name are left out (both are on
noticeUrl). - Organisations only. No contact names, emails or phone numbers. A supplier that looks like a private individual is removed from the row.
Only new since last run, and schedules
Turn on onlyNew, save the input as a task and add a schedule under Schedules in Apify Console. A weekly run with daysBack: 14 catches up a missed week, and onlyNew stops anything being sent twice. A correction is a new notice, so it is sent even when the original went out before. Each set of notice types and filters keeps its own memory. onlyNew is off by default.
Integrations: API, n8n, Make and AI agents
API. Run it and get the rows back in one call:
curl -X POST "https://api.apify.com/v2/acts/locaihost~uk-procurement-act/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"noticeTypes": ["payments-compliance"], "daysBack": 365, "authorities": ["NHS"]}'
Apify's API clients for Python and JavaScript work the same way. Synchronous calls wait up to 5 minutes, which suits payments compliance runs. Use the asynchronous run endpoint for the other notice types.
n8n, Make, Zapier, Google Sheets, Slack, webhooks. Apify's built-in integrations send each run's dataset wherever you need it.
AI agents (MCP). Add this Actor to Claude, Cursor or any MCP client with https://mcp.apify.com/?tools=locaihost/uk-procurement-act, then ask something like "Which NHS trusts paid the smallest share of invoices within 30 days in their latest report, and did they get worse?"
FAQ
How much does it cost to get UK late payment data?
$5.00 per 1,000 notices on the Free and Starter plans, less on Scale and Business. The full payments compliance history is about 700 notices. Apify's free $5 monthly credit covers about 1,000 notices.
Can I use it through the API or from Python?
Yes. Use the run-sync-get-dataset-items call above, or Apify's Python and JavaScript clients. Every run's data is also available as JSON, CSV or Excel from its dataset.
Can I use it from an AI agent?
Yes. Through the Apify MCP server (https://mcp.apify.com/?tools=locaihost/uk-procurement-act) any MCP client can call it and read the notices back. Payments compliance runs finish quickly, which suits agents.
Is it legal to use Find a Tender data?
The Actor reads Find a Tender's two open APIs, never its web pages. The data contains public sector information licensed under the Open Government Licence v3.0 (source: Find a Tender service, UK Cabinet Office), which allows commercial reuse with that attribution; every row carries it in licence. Only organisations are returned. You are responsible for how you use the results.
Why are some fields empty?
Each notice type fills its own fields: payment figures on payments compliance rows, KPIs on performance rows, termination fields on termination rows. paymentTrend is empty when the authority has no earlier report, and paidWithin30DaysPct is empty on short-form reports.
More from locaihost data
- Government Tenders Scraper: open tenders and contract awards from UK Find a Tender, Contracts Finder, EU TED, the US, Canada and Australia.
- KYB Company Check: Companies House status, LEI records and sanctions screening for any supplier or authority.
- Company Enrichment by Domain: name, description, logo, socials and role contact addresses from an organisation's own site.
Did it help?
If this saved you time, a quick rating on the Store helps other people find it.
Support
Something not working, or a notice type you need? Open an issue on the Issues tab: we answer issues within 24 hours.