v2

latestOpenAPI 3.1.0Source-specific upstream terms; see response catalog metadata2026-07-26139203447.9 KB
Public Procurement

Search public procurement notices

Cursor-paginated PLACSP notice search over the materialized legal-first projection. The query contract is closed-world and scalar: unknown names, arrays and lexical type mismatches return 400; validly typed values outside documented ranges return 422. Full-text query indexes notice object and buyer only; it never indexes supplier names. Full-text plus structured filters returns 422 until a compound offline projection exists. CPV accepts an indexed 2-8 digit prefix, may combine only with published_from/published_to, and returns 503 rather than falling back when its CPV-date projection or exact index is unavailable. supplier_cif is resolved by the generation-bound offline 0062 projection and matches either the notice's top-level corporate adjudicatario or any materialized corporate coadjudicator. It may combine with phase, buyer_nif, province and publication dates; open_only and every monetary filter require a future compound projection and return 422. Because one notice can have several adjudicators, a search summary may display a different admitted top-level supplier; tender detail retains the complete materialized result set. Natural-person supplier names and identifiers are withheld together. Budget, estimated value and award are separate source-reported fields and none proves paid or executed spend. open_only freezes one UTC date for SQL filtering, row is_open semantics and cursor binding.

get/api/v1/tenders

Query parameters

qstring

Object/buyer terms only; supplier column is excluded.

cpvstring

Indexed PLACSP v1.1 CPV prefix matching primary or lot codes. It may combine only with published_from/published_to; q or another structured filter returns 422. Missing table or exact CPV-date index fails closed with 503; no request-path fallback is executed.

phase'PUB' | 'PRE' | 'EV' | 'ADJ' | 'RES' | 'ANUL'
provincestring

Partial coverage: rows not yet geocoded are excluded.

buyer_nifstring

Entity identifier only; DNI/NIE is rejected.

supplier_cifstring

Corporate CIF only; DNI/NIE is rejected. Matches the top-level adjudicatario or any materialized coadjudicator through the generation-bound offline 0062 projection. A summary item may display another supplier; detail retains all materialized results.

open_onlyboolean

Strict boolean. Canonical true/false and compatibility query lexemes 1/0 are accepted; every other value is rejected.

amount_kind'budget' | 'estimated' | 'award'

Required whenever min_amount_eur or max_amount_eur is used; prevents mixing monetary semantics.

min_amount_eurnumber

Minimum value for the explicit amount_kind; only EUR projections are currently filterable.

max_amount_eurnumber

Maximum value for the explicit amount_kind; only EUR projections are currently filterable.

published_fromstring date

Real UTC calendar date; impossible dates are rejected.

published_tostring date

Real UTC calendar date; impossible dates and a value before published_from are rejected.

limitinteger
cursorstring

Opaque cursor bound to the immutable PLACSP projection generation, current ordering mode and complete normalized filter set; a projection swap or filter change invalidates it. It is not an authentication credential and clients must never synthesize it.

Response

Sanitized notice page

schema_versionstring required
countinteger required
ordering'published_desc' | 'ingestion_desc' | 'cpv_prefix_published_desc' | 'deadline_asc' | 'budget_amount_desc' | 'estimated_amount_desc' | 'award_amount_desc' required
attributionstring required
disclaimerstring required
_attributionsobject