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
| Kod | Betyder |
|---|---|
| 400 | En parameter är fel, body är inte ett JSON-objekt, eller en POST har parametrar i adressen. |
| 401 | Nyckeln saknas, är fel eller är återkallad. |
| 403 | Din plan saknar API, du bad om ett län eller land planen inte täcker, eller sammanställningen kräver Tilldelat Marknadsinsikt (intelligens_required). |
| 409 | Din plan utgår från dina bevakningars län och du har inga än. |
| 413 | Body är större än 16 kB. |
| 429 | Dygnsgränsen är nådd. Den nollställs vid midnatt. |
| 504 | Frå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.