ssh.autos

Catalog / Tenders & public contracts

TENDERS & PUBLIC CONTRACTS · UNITED KINGDOM

UK Tenders - Find a Tender & Contracts Finder

Scrape UK public procurement from Find a Tender (above threshold) and Contracts Finder (below threshold).

PER CALL · X402 / MPP From $0.02 per call 1 endpoint at api.ssh.autos. Pay in USDC, no account. See the endpoint
APIFY STORE Public actor Run it with your Apify account: bulk runs, schedules and exports. Open on Apify

About this data

Scrape UK public procurement from Find a Tender (above threshold) and Contracts Finder (below threshold). One row per procurement joins tender, award and contract notices - buyer, CPV codes, procedure, deadline, value, lots, suppliers, documents and notice link. Daily changes feed, JSON/CSV/Excel.

From the actor’s Apify Store listing. The per-call endpoint may return a bounded subset; its own description is below.

Buy per call over x402

One endpoint at api.ssh.autos. Each call is one JSON POST, paid in USDC with no account or API key, and answered in the same HTTP response.

POST /v1/uk/procurement/tenders

UK public procurement from Find a Tender or Contracts Finder: buyer, CPV codes, procedure, status, deadline and value.

PRICE$0.02 per call, in USDC
RESULTUp to 5 per call
PAYMENTx402 or MPP · no account

Input

Send a JSON body to POST https://api.ssh.autos/v1/uk/procurement/tenders.

FieldTypeRequiredNotes
sourcesarray of stringsoptionaleach one of fts, cf; exactly 1 item; default ["fts"]
keywordstringoptionalup to 200 characters
maxItemsintegeroptional1–5; default 3

Returned fields

The answer is JSON: records, a list of up to 5, and summary, the run status and counts. Each record has these 42 fields; a field the source does not publish comes back null.

42 fields per record
FieldTypeNotes
recordIdstringStable record id: the source label and OCID, for example FTS:ocds-h6vhtk-0323a9. Use it to identify a procurement across runs.
ocidstringOpen Contracting ID of the procurement, shared by its tender, award and contract notices on that source.
sourcestringFTS for Find a Tender (above threshold) or CF for Contracts Finder (below threshold).
one of FTS, CF
buyerNamestringBuyer (contracting authority) name as published, verbatim.
buyerIdstringBuyer identifier as published, for example GB-FTS-9129.
buyerIdentifierSchemestringScheme of the buyer identifier, for example GB-SRS or GB-COH, when published.
buyerIdentifierIdstringIdentifier of the buyer within its scheme, when published.
cpvCodesarray of objectsCPV codes the procurement is classified under.
procedurestringProcurement procedure as published, for example 'Open procedure'.
procedureCodestringProcedure code as published, for example open or selective.
statusstringProcurement status as published, for example active, complete, cancelled or unsuccessful.
isOpenbooleanWhether bids can still be submitted: the status is not a closed one and the submission deadline is still ahead at the run start.
tenderPeriodStartstringStart of the tender period, ISO 8601 with the source's zone, when published.
tenderPeriodEndstringSubmission deadline, ISO 8601 with the source's zone, when published.
valueAmountnumberProcurement value as published, in valueCurrency.
valueCurrencystringCurrency of valueAmount, for example GBP.
lotsarray of objectsLots the procurement is divided into.
awardsarray of objectsAwards published for the procurement, newest version of each award.
contractsarray of objectsContracts published for the procurement, newest version of each contract.
documentsarray of objectsDocuments published with the notices, one entry per document.
releasesarray of objectsEvery release of this procurement that the source published, in date order.
releaseIdsarray of stringsRelease ids in date order.
releaseDatesarray of stringsRelease dates in date order, ISO 8601 with the source's zone.
latestReleaseIdstringId of the latest release.
latestReleaseDatestringDate of the latest release, ISO 8601 with the source's zone.
latestReleaseTagstringPrimary tag of the latest release, for example tender, award or tenderAmendment.
latestReleaseTagsarray of stringsAll tags of the latest release.
releaseTagsarray of stringsEvery tag seen across the procurement's releases.
amendmentsarray of objectsAmendments the source itself records on the tender.
noticeUrlstringURL of the official notice page for the latest release.
joinedFromstringWhere the row's notices came from: the source's full record for this procurement (Find a Tender with awards on), only the notices this run read (Contracts Finder, or Find a Tender with awards off), o…
one of full record, scanned notices, earlier runs
historyCompletebooleanTrue when the row was joined from the source's full record. False means older notices of this procurement may be missing from the row.
recordIssuestringWhy this Find a Tender row has no full record, for example the record was not found, its body was empty, or record reads stopped after repeated failures. Null when the full record was read, and on Co…
fieldsNotInScanarray of stringsIn Changes mode, tracked fields the notices read this run did not carry. They never count as a change; single values show the value delivered earlier, lists show what this run read. Null in Full mode.
crossServiceCandidatesarray of objectsPossible matches on the other UK service: same buyer, similar title and plausible dates. A hint only; the procurements are never merged.
observedAtstringWhen the run read this procurement, ISO 8601 in UTC.
changeTypestringIn Changes mode: new, amended or closed. Null in Full mode.
one of new, amended, closed
changedFieldsarray of stringsIn Changes mode, the row fields that differ from the previous version.
previousobjectIn Changes mode, the earlier value of each changed single-value field. For a changed text or list field (description, CPV codes, lots, awards, contracts, documents, amendments) the earlier content is…
firstSeenAtstringIn Changes mode, when this procurement was first delivered for this state.
lastSeenAtstringIn Changes mode, when this procurement was last delivered for this state.
contentHashstringIn Changes mode, a hash of the tracked row values used to detect amendments.

Example call

TERMINAL · $0.02 PER RUN
npx agentcash@latest fetch https://api.ssh.autos/v1/uk/procurement/tenders -m POST -b '{"sources": ["fts"], "maxItems": 2}'

The example values come from the API spec or the actor’s own sample input. Running it is a paid call.

What is and isn’t charged

Free

  • Invalid input (422), busy (503), source failure (502), timeout (504) and calls whose client hung up are never charged.
  • Invalid input and source failures are not charged.

Prefer a subscription? Run it on Apify

This data source is a public actor on the Apify Store: UK Tenders Scraper - Find a Tender & Contracts Finder. Run it with your Apify account and plan for larger, scheduled or exported runs; it may offer more input options than the per-call endpoint.

Open on Apify

How x402 payment works

  1. Your client sends the request. The API answers 402 Payment Required with the price and where to pay.
  2. The client pays from its own wallet: USDC on Base or Solana over x402, or over MPP on Tempo. No account, sign-up or API key.
  3. The client retries with the payment attached and gets the JSON answer in the same call. You are only charged for answers.

The AgentCash CLI in the example does all three steps for you and pays from your AgentCash wallet. Any x402 or MPP client works the same way.

Machine-readable: openapi.json · llms.txt

Some links to Apify are affiliate links. We may earn a commission if you sign up and become a paying customer.