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 buyer and a CPV prefix (cpv=45 is construction, 45233 road 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_received per 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_eur against amount_estimated_eur, where the buyer publishes an estimate.
  • Is the incumbent healthy? company_id links 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

CountrySourceWhat to expect
SpainPlataforma de Contratación del Sector Público (PLACSP)Open tenders and minor contracts; bids received, estimate and SME flag on almost every award
FranceDECP, consolidatedBids received on most awards; no estimate
United KingdomContracts Finder and Find a TenderMany awards published without a value or a bid count
Ireland, Poland, NorwayTED eFormsAbove 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.

Start your 14-day free trial Read the docs