Solkart-API-et gir solprognose, PV-produksjon, typisk meteorologisk år, snølast, snøtap, horisont og
terrengkategori for ethvert punkt i Norge, som JSON over HTTPS. Det er laget for energiselskaper,
rådgivere og utviklere som vil ha norske data i egne systemer. Base-URL er https://api.solkart.no;
hele referansen står i dokumentasjonen.
Slik virker det. Du får en e-post med en lenke som varer i 24 timer. Siden bak lenken viser nøkkelen (sk_live_…) én gang. Lagre den som miljøvariabel, ikke i kildekoden.
Du kan også prøve uten nøkkel. Da gjelder gratisnivået per IP-adresse:
Ett anlegg er én unik koordinat per døgn. Se kvoter, grenser og feil.
Solinnstråling (GHI) time for time, 60 timer frem, for et punkt. Bytt ut nøkkelen, eller dropp hodet for å bruke gratisnivået fra din IP-adresse.
curl "https://api.solkart.no/api/forecast?lat=59.91&lon=10.75" \
-H "X-API-Key: sk_live_DIN_NOKKEL"
{
"site": "59.91,10.75",
"latitude": 59.91, "longitude": 10.75,
"cycle_time": "2026-09-15T16:00:00Z",
"model": "production_v2_3b",
"data_mode": "v23b",
"peak_ghi_wm2": 449.1,
"daily_ghi_kwh_m2": 2.71,
"ghi_timeseries": [
{ "hour": 0, "timestamp": "2026-09-15T15:00:00Z", "ghi_wm2": 183.4 },
{ "hour": 1, "timestamp": "2026-09-15T16:00:00Z", "ghi_wm2": 96.2 },
{ "hour": 2, "timestamp": "2026-09-15T17:00:00Z", "ghi_wm2": 21.0 }
]
}
Les svaret slik: timestamp er starten på timen i UTC (10:00Z gjelder 10 til 11 UTC), ghi_wm2 er middel innstråling i W/m² over timen, cycle_time er når prognosen ble kjørt. Nye sykluser kommer hver time. Alle konvensjoner står under tid, enheter og koordinater.
Send inn takflatene som JSON, så får du produksjon per time og totalt for anlegget. Eksemplene summerer produksjonen for dagen.
const resp = await fetch("https://api.solkart.no/api/forecast", {
method: "POST",
headers: { "Content-Type": "application/json", "X-API-Key": process.env.SOLKART_API_KEY },
body: JSON.stringify({
latitude: 59.91, longitude: 10.75, daily: true,
arrays: [{ name: "Tak", kwp: 10, tilt_deg: 25, azimuth_deg: 180 }],
}),
});
if (!resp.ok) throw new Error((await resp.json()).error);
const data = await resp.json();
const kWhToday = data.pv_timeseries.reduce((s, e) => s + (e.total_kWh || 0), 0);
console.log(`Prognose fra ${data.cycle_time}: ${kWhToday.toFixed(1)} kWh i dag`);
import os, requests
resp = requests.post(
"https://api.solkart.no/api/forecast",
headers={"X-API-Key": os.environ["SOLKART_API_KEY"]},
json={"latitude": 59.91, "longitude": 10.75, "daily": True,
"arrays": [{"name": "Tak", "kwp": 10, "tilt_deg": 25, "azimuth_deg": 180}]},
timeout=15,
)
if resp.status_code != 200:
raise SystemExit(resp.json()["error"])
data = resp.json()
kwh_today = sum(e.get("total_kWh", 0) for e in data["pv_timeseries"])
print(f"Prognose fra {data['cycle_time']}: {kwh_today:.1f} kWh i dag")
curl -X POST https://api.solkart.no/api/forecast \
-H "Content-Type: application/json" \
-H "X-API-Key: sk_live_DIN_NOKKEL" \
-d '{"latitude": 59.91, "longitude": 10.75, "daily": true,
"arrays": [{"name": "Tak", "kwp": 10, "tilt_deg": 25, "azimuth_deg": 180}]}'
daily: true krever Basic eller høyere; azimuth_deg er kompassretning, 0 = nord og 180 = sør. Vil du klikke deg fram til forespørselen, bruk konfiguratoren.
| Jeg vil ha | Endepunkt | Nøkkel | Dokumentasjon |
|---|---|---|---|
| Solinnstråling og produksjon time for time, 60 timer | GET/POST /api/forecast | Valgfri | Solprognose |
| Samme for inntil 50 anlegg i ett kall | POST /api/forecast/bulk | Valgfri | Solprognose |
| Års- og månedsproduksjon for et anlegg | GET /api/pv/calc | Nei | PV-produksjon |
| Typisk meteorologisk år, 8760 timer | GET /api/tmy | Valgfri | TMY Norge |
| Snøtap per måned, snø på panelet neste 10 døgn | GET /api/snowsoiling/calc, /api/snow/outlook | Nei | Snøtap |
| Horisont og solbane for et punkt | GET /api/horizon/terrain | Nei | Sol og horisont |
| Stedlig karakteristisk snølast | GET /api/snowload/calc | Nei | Stedlig snølast |
| Terrengkategori og terrengform per sektor | POST /api/terrain/category | Nei i pilot | Terrengkategori |
| Modulplassering og kWp på et tak | POST /api/roof/jobs | Avtale | Takanalyse |
SOLKART_API_KEY ved oppstart; ikke sjekk den inn.X-API-Key. ?api_key= virker, men havner i logger.| Plan | Forespørsler per døgn | Anlegg | Maks kWp |
|---|---|---|---|
| Gratis | 24 | 1 per døgn | 25 |
| Basic | 1 000 | Velg selv | 150 |
| Pro | 10 000 | 10 eller flere | 1 000 |
| Enterprise | Ubegrenset | Ubegrenset | Ubegrenset |
Alt er gratis i prøveperioden. Tre prismatriser (prognose, profesjonell bruk av verktøyene, øvrige API-er) står på priser. Basic og høyere gir også utvidet prognose til 10 døgn og døgnprognose fra midnatt.
| Status | error | Løsning |
|---|---|---|
401 | Invalid API key | Hele strengen fra bekreftelsessiden må med, inkludert sk_live_. |
429 | Daglig anlegg-kvote brukt opp. | Du spurte om en ny koordinat etter at dagens anlegg var brukt. Samme koordinat kan spørres på nytt; ny koordinat etter 00:00 UTC. Svaret har quota.resets_at. |
400 | Location outside Norway coverage (57-72N, 4-32E) | Bytt om lat og lon, eller sjekk desimaltegn (punktum). |
403 | Extended forecast requires Basic tier or higher | /extended og daily krever Basic. Bruk /api/forecast uten daily på gratisnivået. |
Alle statuskoder og feilkoder står i kvoter, grenser og feil.