Search Tender Awards
Search awarded public-procurement contracts (migration 010's tender_awards).
Every filter is optional and AND-ed together. Results are ordered by award_published_date desc, id desc (newest first, id as a stable tiebreaker for rows sharing a date) -- the same ordering the cursor's keyset comparison is built on, so pages never skip or repeat a row even if new data lands between requests (the one thing an OFFSET-based page number cannot promise).
supplier= is the one exception to "fully open" -- see _require_tender_supplier_scope. Independently of that filter, awarded_supplier itself is redacted (null) on every row unless the caller is authorized -- security-privacy-auditor, 2026-08-28: an unfiltered listing, paged with cursor, returned the field in full regardless, so the whole supplier-name list was harvestable without ever using supplier= at all. See _tender_supplier_redaction_reason.
Request
- Base URL: https://statsmapped.com
- URL: https://statsmapped.com/api/v1/tender_awards
- Auth: one of:
- HTTP bearer
- none
Query parameters
Matches any main_cpv_code starting with this value (CPV codes are hierarchical — e.g. '45' matches every construction-work code).
Case-insensitive substring match on contracting_authority (free text, e.g. 'Health Service Executive').
Exact geographies.id match (e.g. 'la:kerry-county-council') — populated for the ~31 city/county councils only; most rows have no single honest county home and are NULL, so this filter narrows to a strict subset of the table, never all of it.
Case-insensitive substring match on awarded_supplier. Requires a registered, manually-approved API key (Authorization: Bearer <key>) — see POST /api/v1/tender_awards/access-requests. Every other filter here is open without one.
award_published_date >= this.
award_published_date <= this.
awarded_value_eur >= this.
awarded_value_eur <= this.
Only rows where bids_received = 1. journalist-workflow: the filter that makes 'single-bid contracts by council' answerable (combine with local_authority_id).
From a previous response's next_cursor; omit for page 1.
Response
Successful Response
Changes
No recorded changes to this operation across all 1 revision of this API.