Find a Tender Scraper (UK Late Payers & Contract KPIs) avatar

Find a Tender Scraper (UK Late Payers & Contract KPIs)

Pricing

from $2.75 / 1,000 notices

Go to Apify Store
Find a Tender Scraper (UK Late Payers & Contract KPIs)

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

locaihost data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Security

Limited permissions

Share

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.

QuestionFields
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 measurepaidOnTermsPct (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
CorrectionscorrectsNoticeId (only the latest version of a report is returned)

Contract performance (UK9) and terminations (UK11), each with the contract and supplier named:

GroupFields
KPI ratingskpis[] (rating, period, notes), kpiCount, kpisMet, kpisBelowTarget, kpisNotRated, worstRating, kpiSummary, underperformanceReasons, performancePeriodStart, performancePeriodEnd, suppliersRemoved, suppliersRemovedKeys
TerminationsterminationReason, terminationDate, terminationNotes, finalValue, finalValueGross
ContractcontractTitle, contractId, contractValue (ex VAT), contractValueGross, currency, contractStart, contractEnd, contractMaxEnd, joinedFromEarlierNotice
SuppliersupplierNames, 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.

RowFree and StarterScaleBusiness
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 paymentTrend is 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 no paidWithin30DaysPct. Reports of only zeros are flagged emptyReport: true and 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.

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.