USE CASE · BID
See who wins the contracts you bid for
Public-contract awards from Spain, France, the UK, Ireland, Poland and Norway in one schema: who won, which buyer, what was paid against the estimate and how many bids came in. Use it to choose which tenders to bid for, price against the incumbent and follow competitors.
The questions a bid team asks
- Who has won this buyer's contracts in our category, and for how much? Filter by
buyerand a CPV prefix (cpv=45is construction,45233road works). - What did a competitor win this year? Filter by its tax id (
nif: NIF, SIRET, Companies House, CRO, NIP or KRS, organisasjonsnummer) or by name (supplier). - Is it worth bidding?
bids_receivedper award: a buyer whose contracts draw one bid is either an opening or a closed field, and the history tells you which. - How far below the estimate do winners price?
amount_euragainstamount_estimated_eur, where the buyer publishes an estimate. - Is the incumbent healthy?
company_idlinks the award to the supplier's company record: status, accounts where filed and published insolvency procedures. - Which buyers depend on one supplier? In Spain and France, the beta buyer profile lists a buyer's largest suppliers and their share: public-buyer risk.
What each country publishes
| Country | Source | What to expect |
|---|---|---|
| Spain | Plataforma de Contratación del Sector Público (PLACSP) | Open tenders and minor contracts; bids received, estimate and SME flag on almost every award |
| France | DECP, consolidated | Bids received on most awards; no estimate |
| United Kingdom | Contracts Finder and Find a Tender | Many awards published without a value or a bid count |
| Ireland, Poland, Norway | TED eForms | Above the EU thresholds only |
One row is one award to one supplier: amount_eur is that supplier's share as published, before VAT where the source distinguishes it, and amount_contract_eur the whole contract. A framework or dynamic-purchasing ceiling is flagged amount_is_ceiling and a form-default figure amount_suspect; leave both out of price analysis. Pounds, złoty and krone are converted at the ECB annual average of the award year. Awards to natural persons are never returned.
Competition and price, in a few lines
import requests
BASE = "https://api.prometiam.com/functions/v1/risk-api"
H = {"Authorization": "Bearer rk_live_your_api_key"}
def awards(**params):
"""Every award matching the filters, following the cursor (2 credits a page of up to 100)."""
cursor = None
while True:
p = {**params, "limit": 100, **({"cursor": cursor} if cursor else {})}
r = requests.get(f"{BASE}/procurement/awards", headers=H, params=p)
r.raise_for_status()
body = r.json()
yield from body["data"]
cursor = (body.get("pagination") or {}).get("next_cursor")
if not cursor:
break
# How contested is road work (CPV 45233) at Spanish buyers this year, and how far below the estimate do winners go?
rows = [a for a in awards(country="ES", cpv="45233", date_from="2026-01-01")
if not a["amount_is_ceiling"] and not a["amount_suspect"]]
single_bid = sum(1 for a in rows if a["bids_received"] == 1)
cuts = [1 - a["amount_eur"] / a["amount_estimated_eur"] for a in rows
if a["amount_eur"] and a["amount_estimated_eur"]]
print(f"{len(rows)} awards, {single_bid} with a single bid, median cut "
f"{sorted(cuts)[len(cuts) // 2]:.1%}" if cuts else "no priced awards")
# A competitor's wins, by its tax id (here Acciona Construcción)
for a in awards(country="ES", nif="A81638108", date_from="2025-01-01"):
print(a["award_date"], a["buyer"], a["amount_eur"], a["cpv"])What this is not
- Not a tender alert service. Awards are results: open calls for tender and their deadlines are not served.
- Not every contract. Ireland, Poland and Norway start at the EU thresholds; below them, those buyers publish elsewhere.
- No score for a supplier. The beta buyer scores (Spain and France) describe the contracting body, never a bidder.
For screening suppliers and buyers rather than bidding, the same endpoint is described on the public procurement screening page.
What it costs
A procurement call is 2 credits and returns up to 100 awards; errors cost nothing. A year of one buyer's awards in a category is usually a few calls. Starter is €9.99 a month for 1,000 credits, Professional €29.99 for 10,000 and Scale €99.99 for 50,000. The free trial is 500 credits over 14 days, card required and nothing charged during the trial. See pricing.
Questions
Does the API list open tenders I can bid for?
No. It serves awards, the results of tenders: who won, which buyer, the amount and the number of bids. Open calls for tender and their deadlines are not served.
Which countries are covered?
Spain (PLACSP, open tenders and minor contracts), France (DECP), the UK (Contracts Finder and Find a Tender), and Ireland, Poland and Norway from TED eForms, above the EU thresholds only.
Can I compare the price with the estimate?
Where the buyer publishes an estimated value: on almost every Spanish award and on most Irish ones. French awards carry no estimate, and many UK awards are published without a value.
What does a call cost?
Each procurement call costs 2 credits and returns up to 100 awards. Errors cost nothing.