API

All data och information på temperatur.nu kan hämtas via ett API som i detalj beskrivs nedan.

API:et returnerar data i JSON-format.

Aktuell version är 1.20 – tidigare versioner kan inte användas i nya applikationer.

Support

Frågor om API:et mejlar du till [email protected].

Villkor

  • Belastning:
    Mjukvaran ska skrivas på ett sådant sätt att API:et inte automatiskt belastas med samma fråga oftare än var femte minut från en enskild klient. Klientid som bryter mot detta villkor kan komma att blockeras.
  • Osignerade anrop
    Osignerade förfrågningar begränsas till 15 anrop per 30 minuter, räknat både per klientid (cli) och per IP-adress. Därefter blockeras de tillfälligt. Skriver du en app för eget bruk ska den klara sig inom den gränsen. Använd din e-postadress som cli.
  • Signering:
    Appar som publiceras för flera användare och all kommersiell användning ska signera sina anrop. En app som bara du själv använder behöver inte signeras.
    Se avsnittet ”Signering” nedan för hur du signerar dina anrop. Mejla [email protected] för att få en klientnyckel till ditt projekt.
  • Källhänvisning:
    Källhänvisning till temperatur.nu måste alltid anges. Där det är möjligt bör en klickbar länk samt temperatur.nus logotyp visas.
  • Kommersiell användning:
    Vid kommersiell användning krävs en särskild överenskommelse. Avgiften startar från 150 kr/mån beroende på omfattning. Syftet är att avgiften ska vara så låg att kostnaden inte begränsar användandet, men tillräcklig för att bidra till driften av temperatur.nu. Mejla [email protected] för mer information.

Exempel

Så här kan resultatet från en förfrågan på https://api.temperatur.nu/tnu_1.20.php?p=ekholmen&sensor_type=all&cli=api_demo_v1.20 se ut:

{
  "full_exec_time": 0.00230312347412109,
  "title": "Temperatur.nu API 1.20",
  "client": "unsigned",
  "stations": [
    {
      "title": "Linköping/Ekholmen",
      "id": "ekholmen",
      "temp": "3.0"
    }
  ]
}

Så här kan resultatet från en förfrågan på https://api.temperatur.nu/tnu_1.20.php?lat=58.37672&lon=15.662965&num=2&verbose&sensor_type=all&cli=test_v1.20 se ut:

{
  "full_exec_time": 0.0128350257873535,
  "title": "Temperatur.nu API 1.20",
  "client": "unsigned",
  "stations": [
    {
      "title": "Linköping/Ekholmen",
      "id": "ekholmen",
      "temp": "10.3",
      "lat": "58.376725",
      "lon": "15.662965",
      "kommunUrl": "linkoping",
      "kommun": "Linköpings kommun",
      "lan": "Östergötlands län",
      "lanUrl": "ostergotland",
      "lastUpdate": "2026-04-08 15:30:38",
      "sourceInfo": "Temperaturdata från Erik Freiholtz. :)",
      "forutsattning": "Temperaturen mäts i öster och väster och den kallaste temperaturen används.",
      "uptime": 100,
      "fetchInterval": 180,
      "active": 1,
      "felmeddelande": "Ok",
      "start": "2007-01-29 17:02:27",
      "moh": 65,
      "sensorType": "air",
      "url": "https://www.temperatur.nu/ekholmen",
      "dist": "0"
    },
    {
      "title": "Stångån/Johannelundsbadet",
      "id": "stangan-johannelundsbadet",
      "temp": "5.7",
      "lat": "58.398381",
      "lon": "15.662705",
      "kommunUrl": "linkoping",
      "kommun": "Linköpings kommun",
      "lan": "Östergötlands län",
      "lanUrl": "ostergotland",
      "lastUpdate": "2026-04-08 15:08:57",
      "sourceInfo": "",
      "forutsattning": "Vattentemperaturen mäts av Linköpings kommun med sensorer vid badplatser. Data hämtas från kommunens WaterQualityObserved-API och uppdateras var 30:e minut. Källa: Linköpings kommun, öppna data.",
      "uptime": 100,
      "fetchInterval": 1800,
      "active": 1,
      "felmeddelande": "Ok",
      "start": "2026-03-25 15:29:10",
      "moh": -100000,
      "sensorType": "water",
      "url": "https://www.temperatur.nu/stangan-johannelundsbadet",
      "dist": "2.4"
    }
  ]
}

Parametrar

Generella parametrar

ParameterBeskrivningKan ej användas med
pAnger för vilka orter data ska returneras, som kommaseparerad lista. Utelämnas parametern returneras samtliga mätpunkter.lat, lon
sensor_typeAnger vilken sensortyp som ska hämtas, giltiga är air, water eller all. Standard är air.
kommun_urlFiltrerar svar på kommun. ex &kommun_url=linkoping – alla stationer i Linköpings kommun.
URL-format: gemener, å→a, ä→a, ö→o, mellanslag→bindestreck
lan_urlFiltrerar svaret på län. ex &lan_url=ostergotland.
Samma URL-format som för kommun.
dcAnger att decimalkomma ska användas i stället för decimalpunkt i fälten temperatur, lat, lon och dist.
verboseReturnerar alla fält för orten, se beskrivning nedan
coordinatesVisar koordinaterna för valda orter. Kan användas för att kunna positionera orter på en karta utan att behöva hämta alla fält via verbose.verbose
latAnvänds tillsammans med lon och ev num. Det spelar ingen roll om decimalpunkt eller decimalkomma används. När dessa parametrar används returneras de num närmaste orterna, närmaste orten först. Bara mätpunkter som rapporterar normalt just nu tas med.p
lonAnvänds tillsammans med lat och ev num. Det spelar ingen roll om decimalpunkt eller decimalkomma används. När dessa parametrar används returneras de num närmaste orterna, närmaste orten först. Bara mätpunkter som rapporterar normalt just nu tas med.p
nearbyLägger till fältet nearby med de num närmaste mätpunkterna runt mätpunkten i p. Används med exakt en mätpunkt i p. Både luft- och vattenmätpunkter tas med, oavsett sensor_type. Bara mätpunkter som rapporterar normalt just nu tas med. Standard är 3 och max är 50.lat, lon
numAnger hur många mätpunkter som returneras. Med lat/lon är standard 1. Med nearby är standard 3 och max 50. Med amm är standard 2 och max 20. I övriga listor begränsar num antalet mätpunkter.
cbOm denna parameter anges kommer ett randomiserat värde att läggas till i slutet av graf-URL:erna. Denna parameter kan användas för att se till att inte grafen cachas lokalt hos användaren eller i någon dåligt konfigurerad proxy mellan temperatur.nu och användaren.
searchFritextsök – söker på både ort och kommun. p, lat, lon
smhismhi=0 tar bort SMHI:s väderstationer ur resultatet vid search, kommun_url och lan_url. Utelämnad tas de med.
sortSorteringsordning vid search, kommun_url och lan_url. Giltiga val är temperatur, latitud, kommun, historik (datum då mätpunkten startade) eller alfabetiskt (standard).
byGiltiga val är rising som anger stigande ordning på sortering eller falling som är fallande (standard)
cliAnvänds för att identifiera vilken klient som hämtar data. Ex ”cli=tnu_widget”. Parametern är obligatorisk.
signSignatur för URL:en. Krävs för appar som publiceras för flera användare och för kommersiell användning, se Signering av URL:er nedan. Ska alltid vara sista parametern.

Parametrar som är relaterade till att ange tider

ParameterBeskrivningKan ej användas med
spanSpecificerar för vilket tidsperspektiv data ska hämtas. Giltiga värden är: 1day (standard), 1week, 1month, 1year.start, end
shiftAnger att äldre data ska visas. Exempel: om span är 1month och shift är 1 hämtas data för föregående månad. Standard är 0. Kan användas med daily, graph, data, tnudata mflstart, end
startSpecificerar starttid. Formatet är Y-m-d-H-i, ex 2011-01-30-12-31. Alternativt kan unix timestamp anges.span
endSpecificerar sluttid. Formatet är Y-m-d-H-i, ex 2011-01-30-12-31. Alternativt kan unix timestamp anges. Standard är nuvarande tidspan
historyAnvänds för att i graf eller tnudata lägga in historik. Giltiga värden är: y (föregående span), 1year (föregående år) eller ett årtal med fyra siffror, ex 2017.

Parametrar som är relaterade till att hämta statistik

ParameterBeskrivning
dataAnvänds för att hämta rådata för en mätpunkt specificerad med variabeln p. Upplösningen är densamma som i mätpunktens lagring, men 1 timme när tidsspannet är längre än 7 dagar eller ligger mer än 30 dagar bakåt i tiden.
textfilAnvänds för att hämta länk till textfil med rådata för en mätpunkt specificerade med variabeln p. Ange variabel graddagar, dygnsmedel eller timmedel (ex textfil=graddagar) för att specificera vilket format textfilen ska ha. Utelämnat eller okänt värde ger timmedel. Filen skapas i bakgrunden, så länken kan ge 404 några sekunder innan den är klar.
ammAnvänds för att hämta medel, min och max (med tidpunkt) för upp till 20 orter specificerade med variabeln p. Standard är 2, ange fler med num.
dailyAnvänds för att hämta dygnsmedel samt lägsta och högsta temperatur per dygn. En mätpunkt specificerad med variabeln p.
tnudataAnvänds för att skapa data för grafgenerering på temperatur.nu. Används med p och history. Om flera p anges läggs data in parallellt och vid history hämtas relevant historik enligt specifikation för variabeln history.

Parametrar relaterade till grafgenerering

ParameterBeskrivning
graphAnvänds för att generera en graf för upp till 5 orter specificerade med variabeln p. Anges parametern compare kommer orterna att läggas in i samma graf i stället för separata.
verbose_gVisar min/max/medel/senaste värde i grafen. Visar även när data senast hämtades för den valda orten.
1axisAnvänds för att endast visa temperaturskalan till vänster. Används med fördel i små grafer för att spara utrymme.
fontsizeAnger hur stor texten ska vara. Observera att värdet inte kan relateras till vanliga textstorlekar, du måste därför testa dig fram.
linewidthAnger bredden på graflinjen. Giltiga värden 1 till 5. Även flyttal, ex 1.5, fungerar. Decimalkomma eller decimalpunkt spelar inte någon roll.
xSpecificerar hur bred grafen ska vara. Giltiga värden är 150-2500. 300 är standard.
ySpecificerar hur hög grafen ska vara. Giltiga värden är 125-2500. 200 är standard.
colorAnger vilken/vilka färger linjer i grafen ska ha, kommaseparerad lista. Standard är #FF0000,#AADDAA,#FFCC00.
compareAnger att orter som skickats med p ska läggas in för jämförelse i samma graf. Om fler än tre orter anges måste även color definieras

Beskrivning av returnerade fält

FältBeskrivningParameter som visar
titleMätpunktens namn på temperatur.nuvisas som standard
idMätpunktens id på temperatur.nu. Kan användas med parametern ”p” för att hämta endast denna mätpunkts informationvisas som standard
sensorTypeTyp av sensor, air eller water.verbose
tempMätpunktens senaste temperatur. Om decimalkomma eller decimalpunkt ska användas styrs med parametern dc. Är värdet för gammalt returneras ”N/A”: för luft efter 30 minuter, för vatten efter 2 timmar eller två mätintervall (fetchInterval) om det är längre.visas som standard
clientReturnerar signed, unsigned eller blocked beroende på signeringsstatusvisas som standard
latMätpunktens latitud i decimalt format. Om decimalkomma eller decimalpunkt ska användas styrs med parametern dc.coordinates, verbose
lonMätpunktens longitud i decimalt format. Om decimalkomma eller decimalpunkt ska användas styrs med parametern dc.coordinates, verbose
lastUpdateTidpunkt då informationen senast uppdaterades på temperatur.nu.verbose
kommun, kommunUrlDen kommun som mätpunkten ligger i, som namn och i URL-format (samma format som parametern kommun_url).verbose, search, kommun_url, lan_url
lan, lanUrlDet län som mätpunkten ligger i, som namn och i URL-format (samma format som parametern lan_url).verbose, search, kommun_url, lan_url
felmeddelande”Ok” när temperaturen är aktuell. När temp är ”N/A” anges orsaken här.verbose
sourceInfoEn kort textsträng med information om vem som loggar temperaturen för mätpunkten.verbose
forutsattningTextsträng med information om hur mätningarna sker – finns ej för alla mätpunkter och returnerar i så fall ett tomt fält.verbose
urlURL till mätpunkten på www.temperatur.nu.verbose
sourceUrl, homepageUrlLänk till mätpunktens datakälla (sourceUrl) eller till ägarens egen webbsida (homepageUrl). Fälten finns bara när mätpunkten har en sådan länk.verbose
photoCountAntal godkända monteringsbilder för mätpunkten (0 om bilder saknas). Finns för alla mätpunkter i listningen, så att man kan se vilka som har bilder utan att slå upp dem en och en.verbose
photosMonteringsbilder för mätpunkten, högst 4. Varje bild har fälten url (stor bild), thumb (miniatyr) och description. Finns bara när mätpunkten har godkända bilder och när exakt en mätpunkt anges i p. Använd photoCount för att se vilka mätpunkter som har bilder.verbose
distHur långt från de givna koordinaterna mätpunkten ligger. Enheten är kilometer. Om decimalkomma eller decimalpunkt ska användas styrs med parametern dc.lat & lon
graphVisar URL till grafen för orten. Observera att ny graf endast genereras när parametern graph används. Det går därför inte att cacha URL:en lokalt i klienten.
graph
dailyLista med ett objekt per dygn, med fälten date, average, min och max. Har dygnet för lite data blir värdena ”Nan”.daily
ammObjekt med fälten ammRange (tidsperioden), average, min, minTime, max och maxTime. Med history och en mätpunkt kommer även amm-history med samma fält för jämförelseperioden.amm
uptimeMätpunktens upptid i % det senaste åretverbose
startTidpunkt när mätpunkten lades till på temperatur.nu.verbose
mohMätpunktens höjd över havet i meter.verbose
dataTemperaturdata i råformat. Lista med objekt med fälten datetime och temperatur. Saknat värde returneras som ”NaN”.data
textfilLänk till fil med rådata i textformat.textfil
searchObjekt med numstations (antal träffar), numtotal (antal mätpunkter totalt) och average (medeltemperatur för träffarna). Med sensor_type=all finns även averageAir och averageWater, och med kommun_url eller lan_url finns regionName.search, kommun_url, lan_url
nearbyLista med närliggande mätpunkter, var och en med title, id, dist, temp, sensorType, lat och lon.nearby

Vilka mätpunkter som returneras

  • Listor (utan p, eller med search, kommun_url eller lan_url) innehåller bara aktiva mätpunkter som inte är dolda. En dold mätpunkt kan fortfarande hämtas direkt med p.
  • Vid sökning med lat/lon och vid nearby tas bara mätpunkter med som rapporterar normalt just nu.
  • Mätpunkter vars ägare har valt att inte dela data externt returneras inte.

Felsvar

SituationSvar
cli saknas{”error”: ”Client access forbidden or no client provided”}
För många osignerade anrop{”client”: ”blocked”, ”error”: ”Too many unsigned requests”}
Klienten är spärrad{”error”: ”This client has been blocked”}

Signering av URL:er

Signering av API-anrop

Appar som publiceras för flera användare och all kommersiell användning ska signera sina anrop. Mejla mig på [email protected] för att få en klientnyckel (cli och cli_key). Skriver du en app som bara du själv använder behöver du inte signera, men den måste klara sig på 15 anrop per 30 minuter.

Så fungerar det:

  1. Bygg din URL utan &sign=-parametern:
    api.temperatur.nu/tnu_1.20.php?p=stockholm&verbose&cli=din_klient
  2. Beräkna en hash av URL:en sammansatt med din hemliga nyckel, separerade med +: md5(”api.temperatur.nu/tnu_1.20.php?p=stockholm&verbose&cli=din_klient+DIN_HEMLIGA_NYCKEL”)
  3. Lägg till hashen som &sign=-parameter: https://api.temperatur.nu/tnu_1.20.php?p=stockholm&verbose&cli=din_klient&sign=a1b2c3d4e5…

Exempel i PHP:

$cli_key = "din_hemliga_nyckel";
$url = "api.temperatur.nu/tnu_1.20.php?p=stockholm&verbose&cli=din_klient";
$sign = md5($url . "+" . $cli_key);
$signed_url = "https://" . $url . "&sign=" . $sign; $data = json_decode(file_get_contents($signed_url), true); 

Exempel i Python:

import hashlib, urllib.request, json 

cli_key = "din_hemliga_nyckel"
url = "api.temperatur.nu/tnu_1.20.php?p=stockholm&verbose&cli=din_klient"
sign = hashlib.md5((url + "+" + cli_key).encode()).hexdigest()
signed_url = f"https://{url}&sign={sign}" 
data = json.loads(urllib.request.urlopen(signed_url).read())

Viktigt:

  • sign måste alltid vara den sista parametern i URL:en
  • Varje unik URL ger en unik signatur – ändrar du parametrar måste du signera om
  • Osignerade anrop begränsas till 15 per 30 minuter, per klientid och per IP-adress

Ändringslogg

2026-10-20 – Tillägg i version 1.20: fältet photoCount (antal monteringsbilder) i verbose-listningar.

2026-11-02 – Tillägg i version 1.20: start och end kan anges från 1840, eftersom SMHI:s väderstationer har mätserier från 1849. Spann över fem år ger ett värde per dygn. Parametern smhi=0 tar bort SMHI:s väderstationer ur sökresultat och listor.

2026-10-19 – Tillägg i version 1.20: fältet photos (monteringsbilder), sourceUrl och homepageUrl, regionName, averageAir och averageWater i sökresultat samt sorteringen kommun och historik.

2026-04-08 – Version 1.20. Stöd för sensor_type och utökad information kring kommun och län.

2026-02-28 – Version 1.19 (1.18 har endast använts internt). Parametern nearby är tillagd. Signering krävs för appar som publiceras för flera användare och för kommersiell användning.

2021-06-01 – Version 1.17 Parametern json borttagen; data returneras bara i JSON-format.

2021-02-25 – Version 1.16 Parametern json för att få ut data i json-format. Parametern data som används för att få ut data i råformat. Parametern textfil som används för att få ut rådata i en textfil. Mer information returneras när parametern verbose används. Generell buggrättning

2014-01-26 – Version 1.15 Parametern daily. Används för att hämta dygnsmedel i ett specificerat tidsspann.

2013 – Version 1.14 Parametern history kan anges med ett årtal för att jämföra data med tidigare år. Buggfixar

2012-05-04 – Version 1.13 Variablerna compare och color angivna, gör det möjligt att jämföra flera orter i samma graf samt helt styra vilka färger linjerna i graferna ska ha. color kan sättas även för vanliga grafer.

2011-10-08 – Version 1.12 Variabeln history tillagd. Visar föregående periods temperatur i grafer.

2011-01-30 – Version 1.11 Mer flexibel specificering av tidsperspektiv för grafer. amm – möjlighet att hämta medel/min/max i ett valfritt tidsperspektiv, antalet osignerade anrop begränsat i denna version.

2011-01-17 – Version 1.10 Möjlighet att via API:et hantera information gällande den senaste tillgängliga klientversionen.

2011-01-13 – Version 1.9 Signering införd. Planen var att signering skulle krävas för alla tillämpningar från mitten av 2011 och läggas in successivt i alla versioner av API:et.

2010-12-19 – Version 1.8 CacheBust-funktion, möjlighet att ändra textstorlek samt information om vem som loggar temperaturen när verbose anges.

2010-11-22 – Version 1.7 Möjlighet att välja hur tjock graflinjen ska vara.

2010-09-01 – Version 1.6 Parameter för att ange om 1 eller 2 y-axlar ska visas.

2010-09-01 – Version 1.5 Parametrar för att visa mer information i grafen. Parametrar för att visa grafer för i går, förra veckan, 2 år sedan etc.

2010-08-04 – Version 1.4 Värden för x och y justerade. Parametern cli krävs för att API:et ska returnera data.

2010-06-09 – Version 1.3 Rättar en bugg från 1.2 (det gick inte att hämta alla orter genom att utelämna parametern p).

2010-05-19 – Version 1.2 Stöd för att hämta grafer

2010-05-13 – Version 1.1 Variabeln cli tillagd.

2010-05-04 – Version 1.0 Första releasen.