UK public tenders as JSON Paid pilot

UK tender notices.
One API call.

Search Find a Tender by keyword, status and delivery region. Get up to 25 structured results with original source links.

For developers building apps, automations and AI agents.

Build a daily shortlist of cleaning tenders for your team.

Coverage from 5 Oct 2026 · Check status for current counts

Find a Tender only, within our ingested update window. Not all UK contracts or a complete historical archive.

Inspect coverage

0.01 USDC per successful request. No subscription.
Paid calls need a wallet-enabled x402 client on Base. Free checks need no wallet.

REAL NOTICE · SAVED 12 OCT 2026
{
  "ocid": "ocds-h6vhtk-06d9a9",
  "title": "Printer Paper, Envelopes & Associated Products Framework",
  "buyer": {
    "id": "GB-PPON-PRVY-7813-WLPG",
    "name": "Liverpool City Council"
  },
  "cpv_codes": [
    {
      "code": "30197630",
      "description": "Printing paper"
    }
  ],
  "source_url": "https://www.find-tender.service.gov.uk/Notice/096221-2026"
}
Real saved response · Abbreviated fields

View the original notice

A dated example, not a live search or a promise that this opportunity is still open.

Connect your AI assistant

Try live tender data through MCP. No wallet or API key needed.

Add the server

In a client that supports remote MCP, choose Add custom server and paste this URL:

https://api.alexstokes.com/mcp

Ask for a search

“Check your tender coverage, then find open cleaning contracts. Include deadlines and source links.”

3 free calls a day

Searches and detail lookups share the allowance per network address. Up to 5 results per search. Resets at midnight UTC. Continue through the same tools with an authorized x402 payment.

MCP setup instructions and limits

Shared service cap: 1,000 data calls/day. Coverage checks do not use the allowance. Paid MCP calls cost 0.01 USDC on Base, with up to 25 search results. Requires an x402-enabled client and an owner-approved spending budget.

Try it in 30 seconds

Two free calls. Check coverage, then inspect payment terms before connecting a wallet.

Run it here

Both calls are free and need no wallet. These checks do not connect a wallet or send a payment.

Prefer your own terminal? Use curl or the Node.js example below.

FREE CHECK · NO WALLET
# 1. Check available data (free)
curl https://api.alexstokes.com/status

# 2. Inspect payment terms (free)
curl -i "https://api.alexstokes.com/v1/tenders?q=cleaning&status=open&limit=5"
Paste into a terminal with curl. In Windows PowerShell, use curl.exe. HTTP 402 means payment is required for the data; this unsigned request does not charge you.

Prefer Node.js? Run this free check
const base = 'https://api.alexstokes.com';
console.log(await (await fetch(base + '/status')).json());
const res = await fetch(base +
  '/v1/tenders?q=cleaning&status=open&limit=5');
console.log('HTTP', res.status);
const header = res.headers.get('payment-required');
if (header) console.log(JSON.parse(
  Buffer.from(header, 'base64').toString()
));

Node.js 24+. Save as check.mjs and run node check.mjs. No purchase is made.

What the free call returns

HTTP 402 · Payment required

Decoded PAYMENT-REQUIRED header, abbreviated. Captured 14 Oct 2026; check current terms before paying.

{
  "x402Version": 2,
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "amount": "10000",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "payTo": "0x6180a2F87C9Ac53A3CA527c15c1A81A951B95073",
      "maxTimeoutSeconds": 300,
      "extra": {
        "name": "USD Coin",
        "version": "2"
      }
    }
  ]
}

10000 units = 0.01 USDC. Network eip155:8453 is Base. If data is unavailable, the service may return a readiness error instead.

Why not use
the official feed?

You can. The source data is public. You pay us for the maintained search service, not exclusive access.

Skip building the index

Search by keyword, status, CPV and delivery region. Get up to 25 matching records per request.

Skip the ingestion work

We import updates and map notices into consistent fields for buyers, dates, values and categories. Missing fields stay explicit.

Keep the evidence

Every record includes its original source link. Your users can check the notice before taking action.

The official API already provides OCDS JSON. Our service adds an indexed search and a simpler response structure. Additional result pages remain separate paid requests.

Coverage limit: the ingested update window starts 5 Oct 2026. This is not a complete historical archive; no backfill date is promised.

Pricing

No subscription.
100 successful requests = 1 USDC.

This is a paid pilot. No uptime or indefinite purchase-retention guarantee is offered.

Run by Alex Stokes.
alex@alexstokes.com

0.01USDC

per successful request

  • Up to 25 results per search
  • Original source links
  • Recover a recorded purchase without paying again

Chargeable: successful empty searches and each additional page. Uses real USDC on Base, not test tokens.

For paid calls, fund your buyer wallet with USDC on Base through a provider that supports that network. 1 USDC covers 100 successful requests; provider fees and minimums may add to your starting cost.

Run the free check

Questions?

alex@alexstokes.com
Does this cover every UK tender?

No. We ingest Find a Tender notices within the update window starting 5 Oct 2026. We do not separately ingest Contracts Finder or other procurement portals. Notices published on Find a Tender may also appear elsewhere. Search returns the latest ingested notice per procurement, not a merged history. Check current coverage and freshness before paying.

Can I use it in an app without AI?

Yes. It is a JSON API for apps, scheduled workflows and agents. You build the interface or automation; we supply the data. A free remote MCP trial is available: 3 searches/detail lookups per network address per UTC day, up to 5 results per search. Setup: https://api.alexstokes.com/mcp-guide.

What if I don’t have a wallet?

You can use the free checks and inspect this example. Paid requests require a buyer wallet funded with USDC on Base and an x402-compatible client. Card billing and API-key subscriptions are not currently offered. Follow the integration guide for the payment requirements.

How do the filters work?

Keywords use literal, case-insensitive AND matching. Delivery regions describe the work location, not the buyer’s office. Missing or national-only locations can be excluded by regional filters. “Open” does not establish supplier eligibility. Value filters require a currency and do not convert currencies.

What if I’m not a developer?

This service requires developer integration. Email Alex Stokes to discuss whether it fits your project.

Pilot terms

0.01 USDC per successful request, including empty searches and each additional page. Verify the current payment terms before signing. Data coverage is limited and source records can be incomplete. No uptime or indefinite purchase-retention guarantee is offered.

For lost responses, recover the exact saved request; do not sign a new payment while settlement is uncertain. Contact alex@alexstokes.com for payment investigation or refund enquiries. Refunds are not automatic.

Privacy information

The landing page has no advertising trackers or analytics scripts. It requests public coverage data when loaded. Hosting and network providers process requests to deliver the service. Application logs record request IDs, routes, status codes and response times; IP-derived information is used for rate limiting. Daily MCP tool and outcome totals are retained for 90 days to measure usage; these totals contain no search text or visitor identifiers. Existing purchase records are used to count paid and repeat usage.

Paid requests create purchase and recovery records, including payment proofs, responses and receipts. Database backups are stored separately. Blockchain payments are public. Never send private keys or recovery phrases. For privacy questions or requests, contact alex@alexstokes.com.