Hvem vinner kontraktene du byr på?

Tildelinger i norske offentlige anskaffelser som JSON: hvem som vant, hvilken oppdragsgiver, hvor mange tilbud som kom inn, og hva kontrakten ble verdt sammenlignet med estimatet. Til å velge hvilke konkurranser du byr på, prissette tilbudet mot den som har kontrakten i dag og følge konkurrentene. Kontrakter over EØS-terskelverdiene, fra TED.

Spørsmålene et anbudsteam stiller

  • Hvem har vunnet denne oppdragsgiverens kontrakter i kategorien min, og til hvilken pris? Filtrer på buyer og et CPV-prefiks (cpv=45 er bygg og anlegg, 45233 er veibygging).
  • Hva har en konkurrent vunnet i år? Filtrer på organisasjonsnummeret (nif) eller på navnet (supplier).
  • Er det verdt å by? bids_received på hver tildeling: en oppdragsgiver der kontraktene får ett tilbud er enten en åpning eller en lukket dør, og historikken viser hvilken.
  • Hvor langt under estimatet legger vinnerne seg? amount_eur mot amount_estimated_eur, der oppdragsgiveren har publisert et estimat.
  • Når kan kontrakten lyses ut på nytt? Der varigheten er oppgitt (duration_months), gir tildelingsdato pluss varighet et anslag. Opsjoner på forlengelse står ikke i feltene.
  • Er den som har kontrakten i dag solid? company_id knytter tildelingen til leverandørens selskapsprofil: status, roller og kunngjorte konkursåpninger.

Hva Norge publiserer, og hva som mangler

Tildelingene kommer fra TED eForms og gjelder kontrakter over EØS-terskelverdiene. Doffin er den nasjonale kunngjøringsdatabasen, og ifølge Direktoratet for forvaltning og økonomistyring (DFØ) er Doffin den eneste tillatte eSenderen i Norge og sender kunngjøringer over terskelverdi videre til TED (DFØ om de nye kunngjøringsskjemaene).

Det setter grensene for hva du kan se. Oppdragsgivere har plikt til å kunngjøre inngåtte kontrakter over EØS-terskelverdi (anskaffelsesforskriften § 21-6), men under terskelverdien er det ikke pålagt, og slike kontrakter er ikke med her. DFØ skriver dessuten at det for mange av konkurransene over EØS-terskelverdi som ble lyst ut i 2024, ikke er kunngjort noe resultat (DFØ om kunngjøring av kontrakt). At en tildeling mangler i API-et, betyr derfor ikke at ingen fikk kontrakten.

Tidsserien er også kort. Per oktober 2026 er tildelingene fra før 2024 få, og tettheten øker fram til i dag. Sjekk dekningen for perioden din med date_from og date_to før du bygger en tidsserie.

Konkurranse og pris i noen få linjer

Eksempel: hvor mange av Statens vegvesens bygge- og anleggskontrakter siden 1. januar 2025 fikk bare ett tilbud, og hvor langt under estimatet ligger vinnerne? Rader flagget som tak i en rammeavtale (amount_is_ceiling) eller som mistenkelige (amount_suspect) holdes utenfor. Det samme kallet henter en konkurrents tildelinger på organisasjonsnummer.

import requests

BASE = 'https://api.prometiam.com/functions/v1/risk-api'
H = {'Authorization': 'Bearer rk_live_...'}

def tildelinger(**filter):
    """Alle tildelinger som passer filteret, nyeste først (2 kreditter per side på opptil 100)."""
    cursor = None
    while True:
        p = {**filter, '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

# Bygg og anlegg (CPV 45) hos Statens vegvesen: hvor mange fikk bare ett tilbud, og hvor langt under estimatet ligger vinnerne?
rader = [a for a in tildelinger(country='NO', buyer='Statens vegvesen', cpv='45', date_from='2025-01-01')
         if not a['amount_is_ceiling'] and not a['amount_suspect']]
ett_tilbud = sum(1 for a in rader if a['bids_received'] == 1)
under = sorted(1 - a['amount_eur'] / a['amount_estimated_eur'] for a in rader
               if a['amount_eur'] and a['amount_estimated_eur'])
print(len(rader), 'tildelinger,', ett_tilbud, 'med ett tilbud;',
      f'median {under[len(under) // 2]:.1%} under estimatet' if under else 'ingen priser å sammenligne')

# En konkurrents tildelinger, på organisasjonsnummer (her Skanska Norge AS)
for a in tildelinger(country='NO', nif='943049467', date_from='2025-01-01'):
    pris = None if a['amount_is_ceiling'] or a['amount_suspect'] else a['amount_eur']
    print(a['award_date'], a['buyer'], pris, a['cpv'])

Hva hver tildeling inneholder

En rad er én tildeling til én leverandør. amount_eur er leverandørens andel slik den er publisert, uten mva der kilden skiller mellom beløp med og uten mva, og amount_contract_eur er hele kontrakten.

FeltHva det betyr
supplier_name, supplier_tax_idLeverandørens navn og organisasjonsnummer slik kunngjøringen oppgir dem. supplier_id_scheme sier om det er et norsk organisasjonsnummer (ORGNR)
buyer, buyer_id, buyer_cityOppdragsgiver, oppdragsgiverens organisasjonsnummer og sted
subject, cpv, contract_typeHva som ble kjøpt: beskrivelse, CPV-kode og type (supplies varer, services tjenester, works bygg og anlegg)
procedure, bids_receivedProsedyren (for eksempel open, restricted eller negotiated_with_publicity) og antall mottatte tilbud, der kunngjøringen oppgir det
amount_eur, amount_contract_eur, amount_estimated_eurVerdien leverandøren fikk, hele kontraktens verdi og oppdragsgiverens estimerte verdi, i euro. currency viser valutaen i kunngjøringen
amount_is_ceiling, amount_suspectTak i en rammeavtale, og tall som ikke er en pris
sme, duration_monthsOm leverandøren er en liten eller mellomstor bedrift, og kontraktens varighet, der de er oppgitt
award_date, source_url, file_referenceTildelingsdato, lenke til kunngjøringen i TED og kunngjøringens referanse
company_idLeverandørens id på selskapsprofilen, satt når organisasjonsnummeret finnes i registeret og navnet stemmer

De fleste tildelingene har bids_received, sme og company_id. Verdien (amount_eur) er ikke publisert på alle, og estimatet (amount_estimated_eur) og varigheten (duration_months) finnes bare på en del av dem. buyer_region er tom for Norge.

Finn en konkurrents tildelinger og en oppdragsgivers historikk

# En konkurrents tildelinger, på organisasjonsnummer (her Skanska Norge AS), de nyeste først
curl 'https://api.prometiam.com/functions/v1/risk-api/procurement/awards?country=NO&nif=943049467&date_from=2025-01-01&limit=100' \
  -H 'Authorization: Bearer rk_live_...'

# En oppdragsgivers historikk i en kategori (her Statens vegvesen, bygg og anlegg)
curl 'https://api.prometiam.com/functions/v1/risk-api/procurement/awards?country=NO&buyer=Statens%20vegvesen&cpv=45&date_from=2025-01-01&limit=100' \
  -H 'Authorization: Bearer rk_live_...'

Minst ett av filtrene company_id, nif, supplier, buyer, cpv eller date_from er påkrevd; uten dem svarer API-et 400. buyer og supplier treffer hvor som helst i det publiserte navnet (minst tre tegn), og en kommune kan stå under flere navn, så bruk en kort, særegen del. buyer_id er oppdragsgiverens organisasjonsnummer, så du kan gruppere nøyaktig. Hvert kall koster 2 kreditter for opptil 100 tildelinger, de nyeste først, og du blar videre med next_cursor. min_amount (i euro) og date_to snevrer inn søket.

Leverandørens selskapsprofil og risiko ved siden av tildelingen

company_id er leverandørens id på selskapsprofilen; for Norge er den organisasjonsnummeret. Den er satt når organisasjonsnummeret finnes som selskap i registeret og det publiserte navnet stemmer, og tildelingen returneres uansett. GET /companies/{company_id} gir leverandørens status og roller ved siden av tildelingen, og med include=insolvency også kunngjorte konkursåpninger. Et selskapsoppslag koster 1 kreditt.

curl 'https://api.prometiam.com/functions/v1/risk-api/companies/943049467?include=insolvency' \
  -H 'Authorization: Bearer rk_live_...'

Er leverandøren på vei ut av registeret, ser du det i status og local_status, og i hendelsene (GET /company-events/search, fra 14. oktober 2026). De tre siste godkjente årsregnskapene fra Regnskapsregisteret hører til Scale-planen (GET /companies/{id}/financials, 25 kreditter per selskap).

Beløp du må være forsiktig med

  • Tak er ikke forbruk. For en rammeavtale publiseres et tak, ikke hva som brukes: amount_is_ceiling er true. Hold slike rader utenfor prisanalyser.
  • Noen tall er ikke en pris. amount_suspect flagger tall som ikke er en pris, for eksempel standardverdier i skjemaet. En tunnelkontrakt med estimert verdi over 100 millioner euro har en tildelt verdi på under én euro og er flagget slik.
  • Valuta. Beløp publisert i kroner er omregnet til euro etter ECBs årsgjennomsnitt for tildelingsåret. currency viser valutaen kunngjøringen oppgir.
  • Mva. Beløpene er uten mva der kilden skiller mellom beløp med og uten mva.

Hva dette ikke er

  • Ikke en varslingstjeneste for anbud. API-et gir tildelinger, altså resultater. Åpne konkurranser og tilbudsfrister finner du på Doffin, databasen for offentlige innkjøp.
  • Ikke alle kontrakter. Under EØS-terskelverdiene er det ikke pålagt å kunngjøre inngått kontrakt, og slike kontrakter er ikke med.
  • Ingen score på tilbydere. Oppdragsgiverprofilene (beta) finnes bare for Spania og Frankrike, og de beskriver aldri en tilbyder.
  • Ikke privatpersoner. Tildelinger til fysiske personer returneres aldri.
  • Ikke juridisk rådgivning. For en konkret anskaffelse er det kunngjøringen selv som gjelder; source_url fører til den.

Hva det koster

Hvert kall mot /procurement/awards koster 2 kreditter og gir opptil 100 tildelinger; feil koster ingenting. Et års tildelinger fra én oppdragsgiver i en kategori er vanligvis noen få kall. Starter koster 9,99 € per måned med 1 000 kreditter, Professional 29,99 € med 10 000 kreditter og Scale 99,99 € med 50 000. Prøveperioden er 14 dager og 500 kreditter: betalingskort kreves, og ingenting belastes under prøveperioden. Deretter går du over til Starter (9,99 € per måned) hvis du ikke sier opp.

Tildelinger fra TED eForms, over EØS-terskelverdiene. Kunngjøringsplikten er beskrevet av DFØ på anskaffelser.no (oppdatert 21. april 2026).

Relatert

Start din gratis prøveperiode på 14 dager · API-dokumentasjon

Prøveperioden varer i 14 dager og gir 500 kreditter. Betalingskort kreves, men ingenting belastes under prøveperioden; deretter går du over til Starter (9,99 € per måned) hvis du ikke sier opp.

Frequently asked questions

Viser API-et åpne konkurranser jeg kan by på?
Nei. API-et gir tildelinger, altså resultatene: hvem som vant, hvilken oppdragsgiver, verdien og antall tilbud. Åpne konkurranser og tilbudsfrister finner du på Doffin, den nasjonale kunngjøringsdatabasen.
Hvilke norske kontrakter er med?
Tildelinger kunngjort i TED eForms over EØS-terskelverdiene. Under terskelverdiene er det ikke pålagt å kunngjøre inngåtte kontrakter, og de er ikke med. Per oktober 2026 er dekningen tynn for årene før 2024.
Hvorfor mangler en tildeling jeg vet om?
Ikke alle konkurranser får kunngjort et resultat: DFØ skriver at det for mange av konkurransene over EØS-terskelverdi som ble lyst ut i 2024, ikke ble kunngjort noe resultat. Tildelingen kan også ligge under terskelverdien, eller kunngjøringen kan være publisert etter at du sjekket.
Kan jeg sammenligne prisen med estimatet?
Ja, der oppdragsgiveren har publisert et estimat: amount_estimated_eur finnes bare på en del av tildelingene. Hold rader flagget amount_is_ceiling eller amount_suspect utenfor.
Hva betyr `bids_received`?
Antall mottatte tilbud, slik kunngjøringen oppgir det. Er feltet tomt, er tallet ikke publisert. Det betyr ikke at det kom ett tilbud.
Hva koster et kall?
Hvert kall mot /procurement/awards koster 2 kreditter og gir opptil 100 tildelinger. Feil koster ingenting.