Tilldelat.

API och MCP

Koppla din egen AI eller ditt eget system till registret. API:t kör samma matchning som bevakningsmejlet och svarar med samma motivering, så en träff i ett agentflöde och en rad i måndagsmejlet är samma sak.

Nycklar ingår i Tilldelat Pro: 1 000 anrop per dygn i hela landet, för 9 950 kr/år eller 995 kr/mån ex moms, se priser. Själva registret är gratis att läsa på webben utan konto.

Kom igång

Skapa en nyckel under Mitt konto → API. Den visas en gång. Skicka den som Bearer-token, eller som X-API-Key i klienter som bara har ett fält för nyckel i en namngiven header:

curl -X POST "https://bxpavdursxkyboovtsbj.supabase.co/functions/v1/api/upphandlingar" \
  -H "Authorization: Bearer tld_xxxxxxxx_..." \
  -H "Content-Type: application/json" \
  -d '{"cpv":"45","lan":"SE312"}'

Skicka parametrarna i body. GET med parametrar i adressen fungerar också, men då hamnar adressen i driftloggen.

Endpoints

POST /upphandlingar

Öppna upphandlingar som matchar dina kriterier.

cpv
Kommaseparerade CPV-prefix, t.ex. 45,90. Utelämnas = alla.
lan
Kommaseparerade NUTS-koder, t.ex. SE312.
q
Nyckelord som ska finnas i titel eller beskrivning.
uteslut
Nyckelord som utesluter en träff.
stangda
1 för att även ta med passerad sista anbudsdag.
limit
Antal rader, max 200. Standard 50.

POST /tilldelningar

Tilldelade kontrakt, med vinnande leverantör och belopp.

sedan
Datum, ÅÅÅÅ-MM-DD. Standard: 30 dagar bakåt.
cpv, lan, q, uteslut, limit
Som ovan.

POST /avtal-loper-ut

Avtal som närmar sig sitt slut, med verkligt slutdatum. Uppskattade datum ingår aldrig.

dagar
Horisont i dagar, max 1095. Standard 270.
cpv, lan, q, uteslut, limit
Som ovan.

POST /avbrutna

Upphandlingar som avbröts utan kontrakt, med skälet ur annonsen. Ungefär hälften följs av en ny annons från samma köpare i samma kategori inom ett år.

sedan
Datum ÅÅÅÅ-MM-DD. Standard 365 dagar bakåt.
cpv, lan, q, uteslut, limit
Som ovan.

POST /historik

Tilldelade kontrakt bakåt i tiden för en köpare, en leverantör eller en bransch: vinnare, belopp, antal anbud och avtalets slutdatum när det finns, märkt verkligt eller grundtid. En rad per tilldelningsannons; ett ramavtal med flera vinnare är en rad med alla vinnare i tre parallella listor (namn, slug, org.nr), och value är annonsens angivna totalvärde, aldrig en summa av kontrakten. Utan Tilldelat Marknadsinsikt visas 24 månader bakåt, med tillvalet hela registret från 2017; rader före 2024 kan sakna värde, slutdatum och län och länkar till annonsen hos källan. Sidindelat med cursor; räknas mot en egen dygnsgräns.

kopare, leverantor
Slug eller adress på tilldelat.se.
land
Landskoder, t.ex. SE,NO. Standard: alla länder planen täcker.
sedan, till
Datum ÅÅÅÅ-MM-DD.
cursor
nasta_cursor ur förra svaret.
cpv, lan, q, limit
Som ovan.

Tilldelat Marknadsinsikt

Sammanställningar över hela registret sedan 2017. Ingår i Tilldelat Marknadsinsikt, tillvalet till Bevakning; en nyckel utan tillvalet får ett svar med felkoden intelligens_required och en länk till priser. Räknas mot historikgränsen. Utan land avses Sverige; andra länder anges uttryckligen och måste ingå i planen. Ett värde är alltid annonsens angivna totalvärde, aldrig en summa av kontrakten, och slutdatum räknas var för sig som verkligt eller grundtid. Varje lista säger till när den är avkapad.

POST /insikter

Kontots fem viktigaste fynd, rankade efter företagsprofilen och de bevakade konkurrenterna: var konkurrenterna står starkt, var fältet är öppet med avtal som löper ut, incumbency, köpare som väntas upphandla inom 18 månader och kategorier där två anbud är normen. Varje fynd har en rubrik, en Varför-rad med siffrorna och det anrop som visar raderna bakom. Beräknas varje natt; beraknad anger när.

—
Inga parametrar.

POST /marknadsandel

Vem som vinner i ett urval: per koncern antal tilldelningar, antal köpare, andel av tilldelningarna och av det angivna värdet, och hur många avtal som löper ut i fönstret.

cpv, lan
Som ovan.
land
Landskoder, t.ex. SE,NO. Standard Sverige.
organisationstyp
statlig myndighet, kommun, region, kommunalförbund, kommunalt bolag, statligt bolag, bolag.
sedan, till
Tilldelningar mellan två datum. Standard hela registret från 2017.
slut_fran, slut_till
Fönstret för avtal som löper ut. Standard i dag till om två år.
valuta
Valuta för summor, standard SEK. Summor blandar aldrig valutor.
limit
Antal koncerner, max 200. Standard 20.

POST /whitespace

Rutnätet län × CPV-grupp × organisationstyp med konkurrenternas andel i varje cell, den starkaste av dem och antalet avtal som löper ut i fönstret. Varje cell får ett läge: konkurrentägd, delat, öppet fält, öppet fält med utgående avtal eller för litet underlag. Cellerna med flest utgående avtal kommer först.

konkurrenter
Koncerner eller namn, kommaseparerat. Standard: dina bevakade leverantörer.
egen
Egen koncern eller namn; räknas som egna, aldrig som konkurrent.
niva
CPV-nivå för cellerna: 2 huvudgrupp, 3 grupp (standard), 4 klass, 5.
cpv, lan, land, organisationstyp, sedan, till, slut_fran, slut_till
Som för marknadsandel.
limit
Antal celler, max 200. Standard 100.

POST /konkurrent-profil

Allt registret vet om en koncern: översikt, kategorier, organisationstyper, geografier, största köpare, avtal som löper ut i fönstret och incumbency — behöll eller förlorade koncernen avtalet när köparen upphandlade igen. Andra leverantörer vars namn börjar på samma ord räknas inte in; de listas med sina egna tilldelningar.

leverantor
Koncern, namn eller slug från leverantor.
cpv, lan, land, organisationstyp, niva, sedan, till, slut_fran, slut_till, valuta
Som ovan.

POST /upphandlingsrytm

Hur ofta en köpare upphandlar en kategori: tilldelningsdatum, medianintervall, tid sedan senaste tilldelningen, senaste vinnare och när nästa upphandling väntas. Ange kopare eller cpv.

kopare
Köparens slug eller adress på tilldelat.se.
cpv, lan, land, organisationstyp, niva, sedan, till
Som ovan.
limit
Antal rader (köpare × kategori), max 200. Standard 50.

POST /marknaden

Marknadens storlek och form: tilldelningar, köpare, koncerner och angivet totalvärde, per år med täckning (2021–2024 över och under tröskelvärdet, från 2025 bara över), hur många koncerner som tar hälften, 80 och 90 procent av värdet, köpare per organisationstyp, antal anbud i median, säsong per månad och avtal som löper ut per kvartal.

cpv, lan, land, organisationstyp, sedan, till, slut_fran, slut_till, valuta
Som ovan.

POST /anbudsintensitet

Konkurrenstrycket per CPV-grupp och län: median och kvartiler för antal anbud och andelen upphandlingar med högst två anbud. Bara celler med minst tre kända antal; ett okänt antal räknas inte.

per_lan
1 (standard) delar upp per län; 0 ger en rad per CPV-grupp.
cpv, lan, land, organisationstyp, niva, sedan, till
Som ovan.
limit
Antal celler, max 200. Standard 100.

De tre följande bygger på anbudsgivarna i tilldelningsannonserna i TED, publicerade från 2024. Alla annonser anger inte de anbudsgivare som förlorade, och utanför Sverige gör få det. Ett vunnet anbud betyder minst ett vunnet delkontrakt, och andelen vunna räknar bara avgjorda upphandlingar.

POST /anbudshistorik

En leverantörs anbud och hur de slutade: lämnade, vunna och förlorade och andelen vunna, uppdelat per köpare, kategori, län, organisationstyp och antal anbudsgivare, och vilka koncerner som vann där leverantören förlorade.

leverantor
Koncern, namn eller slug från leverantor.
cpv, lan, land, organisationstyp, niva, sedan, till
Som ovan.
limit
Antal koncerner i listan över vem som vann, max 200. Standard 20.

POST /jamfor-konkurrenter

Upphandlingar där två leverantörer båda lämnade anbud: hur många, hur ofta den ena eller den andra vann, och de senaste med titel, köpare och vinnare.

leverantor, mot
De två koncernerna: namn eller slug.
cpv, lan, land, organisationstyp, sedan, till
Som ovan.
limit
Antal upphandlingar i listan, de senaste först, max 200. Standard 25.

POST /anbudsgivare

Vilka som lämnar anbud hos en köpare: per koncern antal anbud, vunna, första och senaste anbudet, och medianantalet anbudsgivare per upphandling.

kopare
Köparens slug eller adress på tilldelat.se.
cpv, lan, land, organisationstyp, sedan, till
Som ovan.
limit
Antal koncerner, max 200. Standard 50.

POST /bevakning

Kör en av dina egna sparade bevakningar och få träffarna med motivering.

id
Bevakningens id, syns under Mitt konto → Bevakningar.

POST /profil

Din sparade företagsprofil mot öppna upphandlingar: de bäst passande med bedömning och motivering. Kräver en profil under Mitt konto → Profil.

limit
Antal rader, max 200. Standard 20.

POST /upphandling

En upphandling i detalj: beskrivning, CPV-koder med namn, köpare, län, sista anbudsdag och uppskattat värde. För svenska upphandlingar också vem som har avtalet i dag: köparens tidigare avtal i samma kategori och föregångaren när titlarna visar att det är samma inköp.

slug
Slug från source_url, eller hela adressen på tilldelat.se.

POST /kopare

Profil för en köpare: öppna upphandlingar, senaste tilldelningar, avtal som löper ut med verkligt slutdatum, största leverantörer och liknande köpare.

q
Köparens namn. Flera träffar ger en kandidatlista med slug.
slug
Slug eller adress på tilldelat.se, i stället för q.

POST /leverantor

Profil för en leverantör: vunna kontrakt, branscher och konkurrenter som vinner hos samma köpare.

q, slug
Som för kopare.

POST /koder

Slår upp CPV-prefix och länskoder från fritext, t.ex. städning Skåne. Kräver ingen nyckel och räknas inte mot dygnsgränsen.

q
Bransch, tjänst eller ort i fritext.

Svaret

Varje svar bär kalla, kalla_url och din förbrukning, och varje rad har en source_url till sidan på tilldelat.se, eller till annonsen hos källan när landet saknar sidor hos oss. Raden bär också land och kalla, källan med licens. Citera gärna källan när du svarar utifrån datat.

{
  "kalla": "Tilldelat",
  "kalla_url": "https://tilldelat.se",
  "plan": "vaksamhet",
  "quota_daily": 300,
  "used_today": 12,
  "plan_lan": ["SE312"],
  "antal": 1,
  "visade": 1,
  "upphandlingar": [
    {
      "title": "Asfaltering Borlänge",
      "buyer_name": "Borlänge kommun",
      "lan_name": "Dalarnas län",
      "deadline": "2026-09-11",
      "reason_sv": "Kategori 45233222 Vägbeläggningsarbeten",
      "land": "SE",
      "kalla": "Källa: TED (EU:s publikationsbyrå, beslut 2011/833/EU)",
      "source_url": "https://tilldelat.se/upphandling/api-asfalt"
    }
  ]
}

Fel

KodBetyder
400En parameter är fel, body är inte ett JSON-objekt, eller en POST har parametrar i adressen.
401Nyckeln saknas, är fel eller är återkallad.
403Din plan saknar API, du bad om ett län eller land planen inte täcker, eller sammanställningen kräver Tilldelat Marknadsinsikt (intelligens_required).
409Din plan utgår från dina bevakningars län och du har inga än.
413Body är större än 16 kB.
429Dygnsgränsen är nådd. Den nollställs vid midnatt.
504Frågan tog för lång tid. Snäva in med cpv, lan eller ett kortare datumspann och försök igen. Aldrig ett tomt svar.

MCP

Samma register som MCP-server, så att en assistent kan fråga direkt i stället för att du klistrar in svar. 21 verktyg: sök öppna upphandlingar, sök tilldelade kontrakt, avtal som löper ut, avbrutna upphandlingar, historik: tilldelade kontrakt sedan 2017, kör en sparad bevakning, matcha min företagsprofil, hämta en upphandling, hämta en köpare, hämta en leverantör, hitta cpv-koder och län, och med tillvalet Tilldelat Marknadsinsikt insikter, marknadsandel, whitespace, konkurrent profil, upphandlingsrytm, marknaden, anbudsintensitet, anbudshistorik, jamfor konkurrenter, anbudsgivare. Verktygen listas för alla; en assistent på ett konto utan tillvalet får svaret att det krävs.

Enklaste vägen: lägg in adressen nedan i din assistent och följ inloggningen. Appen registrerar sig själv, du loggar in som vanligt och godkänner kopplingen på en sida hos oss. Ingen nyckel att kopiera. Du ser och kopplar bort anslutna appar under Mitt konto → API. Steg för steg per klient, även Microsoft 365 Copilot, finns på Koppla din AI. Hur verktygen sätts ihop till en agent, med sex instruktioner att klistra in, står på Så bygger du en AI-agent för upphandlingar.

https://mcp.tilldelat.se/mcp

Klienter som inte kan logga in åt dig tar i stället en nyckel i en konfigurationsfil:

{
  "mcpServers": {
    "tilldelat": {
      "url": "https://mcp.tilldelat.se/mcp",
      "headers": { "Authorization": "Bearer tld_xxxxxxxx_..." }
    }
  }
}

Handskakningen och verktygslistan kostar inga anrop. Varje verktygsanrop räknas mot dygnsgränsen.

Villkor

Nyckeln är personlig och får inte delas vidare. Publicerar du något som bygger på datat, ange Tilldelat som källa och länka till sidan. Allmänna villkor gäller. Registret är fritt att läsa på tilldelat.se, men uttag till egna system görs via nyckeln, se använda registret.