UK tenders and public procurement search for apps, automations and AI agents
UK tenders and public procurement search for apps, automations and AI agents. Search UK government contract notices from Find a Tender by keyword, CPV, delivery region, deadline and value. Returns up to 25 structured notices with buyers, deadlines, values and official source links where available. Bounded ingestion window, not all UK contracts; check free /status. Successful empty searches are chargeable.
Answeringour last check, 2026-10-18
1 of 1checks answered this week
849 msmedian answer time
$0.01listed price per call
$0.01price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
GET https://api.alexstokes.com/v1/tenders
| Category | Search and research |
|---|---|
| Provider host | api.alexstokes.com |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 6 from 4 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-10-18 | valid payment request | 402 | $0.01 | 849 ms |
Example input (from the provider)
{
"method": "GET",
"queryParams": {
"limit": 10,
"q": "cleaning",
"status": "open"
},
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"additionalProperties": false,
"properties": {
"cpv": {
"description": "CPV code prefix.",
"pattern": "^\\d{2,8}$",
"type": "string"
},
"currency": {
"description": "Required with value filters; no currency conversion.",
"pattern": "^[A-Z]{3}$",
"type": "string"
},
"deadline_from": {
"type": "string"
},
"deadline_to": {
"type": "string"
},
"limit": {
"default": 10,
"maximum": 25,
"minimum": 1,
"type": "integer"
},
"max_value": {
"minimum": 0,
"type": "number"
},
"min_value": {
"minimum": 0,
"type": "number"
},
"offset": {
"default": 0,
"maximum": 1000,
"minimum": 0,
"type": "integer"
},
"q": {
"description": "Literal case-insensitive AND keyword terms across title, description, buyer and CPV descriptions.",
"maxLength": 200,
"type": "string"
},
"region": {
"description": "Published delivery region code prefix, e.g. UKG for West Midlands. Not buyer office location; national-only and missing locations may be omitted.",
"maxLength": 12,
"type": "string"
},
"snapshot": {
"description": "Copy meta.snapshot from page one when offset > 0; changed dataset returns 409.",
"maxLength": 80,
"type": "string"
},
"status": {
"default": "open",
"description": "Derived from the latest ingested notice. Open does not establish supplier eligibility.",
"enum": [
"open",
"closed",
"cancelled",
"planned",
"unknown",
"all"
],
"type": "string"
}
},
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}