---
title: "Search live UK tenders as agent-ready briefs"
method: GET
path: "/v1/tenders/search"
tags: ["wing-2"]
---

# Search live UK tenders as agent-ready briefs

`GET /v1/tenders/search`

## Request

- Base URL: `https://api.ukintel.uk`
- URL: `https://api.ukintel.uk/v1/tenders/search`
- Auth: none declared

Live UK public-sector tenders from Find a Tender and Contracts Finder in one call. Returns the top 10 matching notices as one-paragraph plain-English briefs with buyer, value, deadline, CPV codes (honest null when the notice carries none) and the official notice link. Searches a 6-hourly refreshed index - no signup with either portal needed.

Returns: result = { total_matched, returned, notices[] of { ocid, title, buyer, value, stage, published, deadline, days_remaining, region, cpv, summary, source{name, notice_url} }, excluded{} } - excluded{} reports notices honest-nulled out by cpv/region/value/deadline filters.

## Query parameters

- `q` string
- `cpv` string
- `region` string
- `value_min` integer
- `value_max` integer
- `deadline_after` string, date
- `stage` 'tender' | 'planning'

## Response `200`

Success. The shared response envelope.

- Envelope
  - `query` object, required
  - `result` object, nullable, required
  - `verdict` Verdict, required
    - `score` integer, nullable, required
    - `band` 'low_risk' | 'caution' | 'high_risk' | 'null', nullable, required
    - `flags` Flag[], required
      - `code` string, required
      - `detail` string, required
    - `narrative` string, nullable, required: At most two sentences. Written by a language model, which never affects the score. Null if unavailable.
  - `confidence` 'high' | 'medium' | 'low', required
  - `as_of` string, date-time, required
  - `sources` Source[], required
    - `name` string, required
    - `fetched` string, date-time, nullable, required
    - `url` string, nullable, required
  - `attribution` string, required
  - `notice` 'Information, not advice.', required
  - `cost` object, required
    - `amount` string, required
    - `currency` 'USDC', required

## Other responses

- `400`: Malformed request (for example, an invalid company number).
- `402`: Payment required. The PAYMENT-REQUIRED response carries the accepted payment terms; pay and retry the identical request.
- `404`: Not found on the register.

---

[API](https://skmtc.dev/ukintel/apis/ukintel-uk.md) · [All operations](https://skmtc.dev/ukintel/apis/ukintel-uk/llms.txt) · [OpenAPI document](https://skmtc.dev/ukintel/apis/ukintel-uk/revisions/0eed96aea8af?raw)
