Faceted full-text search over one collection (scope). Every filter is a property of this schema, the same params as REST GET /api/v1/search; values of a fixed list are matched in any case. A bad value or an unknown argument is an invalid-params error whose data lists every problem (errors[]). Tender hits carry lifecycle, deadline_at, accepts_bids and source_url when the source gives them. Returns {hits, found, page, per_page, facets}.
View input schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Free text, at most 120 characters."
},
"scope": {
"type": "string",
"enum": [
"suppliers",
"tenders",
"buyers",
"sectors",
"countries"
],
"description": "The collection to search. Default tenders."
},
"country": {
"type": "string",
"description": "Country slug, or comma-separated slugs (OR)."
},
"sector": {
"type": "array",
"items": {
"type": "string"
},
"description": "Sector slugs (OR), for example it-software."
},
"type": {
"type": "string",
"description": "Procurement type, for example works, goods or services. Only some countries have it."
},
"status": {
"type": "string",
"enum": [
"data",
"coming_soon"
],
"description": "Countries scope only: data (the country has data) or coming_soon."
},
"year_min": {
"type": "integer",
"description": "Earliest year (award year, else publication year)."
},
"year_max": {
"type": "integer",
"description": "Latest year (award year, else publication year)."
},
"amount_min": {
"type": "number",
"description": "Minimum amount."
},
"amount_max": {
"type": "number",
"description": "Maximum amount."
},
"lifecycle": {
"type": "array",
"items": {
"type": "string",
"enum": [
"open",
"awarded",
"cancelled",
"planned"
]
},
"description": "Tender lifecycle values (OR)."
},
"lifecycle_mode": {
"type": "string",
"enum": [
"is",
"is_not"
],
"description": "is (default) keeps the lifecycle values; is_not leaves them out."
},
"has_amount": {
"type": "boolean",
"description": "true: only rows with an amount. false: only rows without one."
},
"published_days": {
"type": "integer",
"enum": [
1,
7,
30,
90,
365
],
"description": "Published in the last N days (UTC days). 1 is the last day, for polling."
},
"awarded_days": {
"type": "integer",
"enum": [
1,
7,
30,
90,
365
],
"description": "Awarded in the last N days (UTC days)."
},
"date_days": {
"type": "integer",
"enum": [
1,
7,
30,
90,
365
],
"description": "Published or awarded in the last N days (UTC days)."
},
"accepts_bids": {
"type": "boolean",
"description": "true: only open tenders whose bid deadline is still ahead."
},
"sort": {
"type": "string",
"enum": [
"relevance",
"deadline",
"published_desc",
"added_desc"
],
"description": "relevance (default), deadline (the nearest bid deadline first), published_desc (the newest publish date first) or added_desc (the newest rows in Sell to State first). Tenders scope only."
},
"added_after": {
"type": "integer",
"minimum": 0,
"description": "Unix seconds. Only tenders added to Sell to State after this time. With sort=added_desc, a polling trigger keeps the time of its last run and asks for the rows after it."
},
"match": {
"type": "string",
"enum": [
"awards",
"name"
],
"description": "Text match mode for the suppliers and buyers scopes."
},
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number, from 1."
},
"per_page": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Results per page, 1 to 50. Default 25."
}
}
}