curl --request GET \
--url https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id} \
--header 'Authorization: <api-key>'import requests
url = "https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"available_from": "2024-01-01T00:00:00+01:00",
"eligibility": {
"fuse_size": {
"unit": "A",
"value": 20
},
"metering_grid_area_ids": [
"0199c317-25ec-7c00-b1a0-a1b2c3d4e5f6",
"0199c317-25ec-7c00-b1a0-f6e5d4c3b2a1"
],
"other": [
"offtake",
"fuse_based"
],
"type": "system_operator"
},
"id": "0199c317-25ec-7cf7-94cc-32a39f068433",
"name": "Säkringsabonnemang - 20 A",
"summary": "Fuse-based tariff for 20A with energy tax and monthly subscription fee.",
"tariff_components": [
{
"applicable_from": "2026-01-01T00:00:00+01:00",
"cost": {
"id": "cost",
"resolution": "quarter_hourly",
"unit": "SEK"
},
"datasets": [
{
"id": "quarter-hourly-energy-offtake",
"resolution": "quarter_hourly",
"unit": "kWh"
}
],
"functions": [
{
"left": {
"id": "quarter-hourly-energy-offtake",
"resolution": "quarter_hourly",
"unit": "kWh"
},
"output": {
"id": "cost",
"resolution": "quarter_hourly",
"unit": "SEK"
},
"right": {
"unit": "SEK_per_kWh",
"value": 0.36
},
"type": "multiply"
}
],
"name": "Energiskatt",
"timezone": "Europe/Stockholm"
},
{
"applicable_from": "2025-01-01T00:00:00+01:00",
"cost": {
"id": "cost",
"resolution": "monthly",
"unit": "SEK"
},
"datasets": [],
"functions": [
{
"output": {
"id": "cost",
"resolution": "monthly",
"unit": "SEK"
},
"resolution": "monthly",
"type": "constant",
"value": {
"unit": "SEK",
"value": 187.5
}
}
],
"name": "Abonnemangsavgift",
"timezone": "Europe/Stockholm"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Get Tariff
Get a single Tariff by ID.
curl --request GET \
--url https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id} \
--header 'Authorization: <api-key>'import requests
url = "https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"available_from": "2024-01-01T00:00:00+01:00",
"eligibility": {
"fuse_size": {
"unit": "A",
"value": 20
},
"metering_grid_area_ids": [
"0199c317-25ec-7c00-b1a0-a1b2c3d4e5f6",
"0199c317-25ec-7c00-b1a0-f6e5d4c3b2a1"
],
"other": [
"offtake",
"fuse_based"
],
"type": "system_operator"
},
"id": "0199c317-25ec-7cf7-94cc-32a39f068433",
"name": "Säkringsabonnemang - 20 A",
"summary": "Fuse-based tariff for 20A with energy tax and monthly subscription fee.",
"tariff_components": [
{
"applicable_from": "2026-01-01T00:00:00+01:00",
"cost": {
"id": "cost",
"resolution": "quarter_hourly",
"unit": "SEK"
},
"datasets": [
{
"id": "quarter-hourly-energy-offtake",
"resolution": "quarter_hourly",
"unit": "kWh"
}
],
"functions": [
{
"left": {
"id": "quarter-hourly-energy-offtake",
"resolution": "quarter_hourly",
"unit": "kWh"
},
"output": {
"id": "cost",
"resolution": "quarter_hourly",
"unit": "SEK"
},
"right": {
"unit": "SEK_per_kWh",
"value": 0.36
},
"type": "multiply"
}
],
"name": "Energiskatt",
"timezone": "Europe/Stockholm"
},
{
"applicable_from": "2025-01-01T00:00:00+01:00",
"cost": {
"id": "cost",
"resolution": "monthly",
"unit": "SEK"
},
"datasets": [],
"functions": [
{
"output": {
"id": "cost",
"resolution": "monthly",
"unit": "SEK"
},
"resolution": "monthly",
"type": "constant",
"value": {
"unit": "SEK",
"value": 187.5
}
}
],
"name": "Abonnemangsavgift",
"timezone": "Europe/Stockholm"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Authorizations
Path Parameters
Response
Successful Response
Represents a tariff - a rate plan - for a metering point, including eligibility criteria, availability period and one or more Tariff Components, which describe the cost structure and how it's changed over time.
These are long-lived, like "Fuse Tariff 20A", offered by some Party acting as a System Operator.
Criteria the customer and metering point must meet.
Show child attributes
Show child attributes
{
"fuse_size": { "unit": "A", "value": 20 },
"metering_grid_area_ids": [
"0199c317-25ec-7c00-b1a0-a1b2c3d4e5f6",
"0199c317-25ec-7c00-b1a0-f6e5d4c3b2a1"
],
"other": ["offtake", "fuse_based"],
"type": "system_operator"
}
Unique identifier within the Engrate systems.
"0199c317-25ec-7cf7-94cc-32a39f068433"
Tariff name as given by the system operator.
"Säkringsabonnemang - 20 A"
Tariff components applicable for this tariff.
Show child attributes
Show child attributes
[
{
"applicable_from": "2025-01-01T00:00:00+01:00",
"cost": {
"id": "cost",
"resolution": "hourly",
"unit": "SEK"
},
"datasets": [
{
"id": "quarter-hourly-energy-offtake",
"resolution": "quarter_hourly",
"unit": "kWh"
}
],
"functions": [
{
"aggregation_function": "sum",
"input": {
"id": "quarter-hourly-energy-offtake",
"resolution": "quarter_hourly",
"unit": "kWh"
},
"output": {
"id": "hourly-energy",
"resolution": "hourly",
"unit": "kWh"
},
"resolution": "hourly",
"type": "aggregate"
},
{
"left": {
"id": "hourly-energy",
"resolution": "hourly",
"unit": "kWh"
},
"output": {
"id": "cost",
"resolution": "hourly",
"unit": "SEK"
},
"right": { "unit": "SEK_per_kWh", "value": 0.536 },
"type": "multiply"
}
],
"name": "Energiskatt",
"timezone": "Europe/Stockholm"
},
{
"applicable_from": "2025-01-01T00:00:00+01:00",
"cost": {
"id": "cost",
"resolution": "monthly",
"unit": "SEK"
},
"datasets": [],
"functions": [
{
"output": {
"id": "cost",
"resolution": "monthly",
"unit": "SEK"
},
"resolution": "monthly",
"type": "constant",
"value": { "unit": "SEK", "value": 187.5 }
}
],
"name": "Abonnemangsavgift",
"timezone": "Europe/Stockholm"
}
]
Additional remarks, meant for human reading.
"Tariff needs to be actively requested."
ISO 8601 formatted datetime from when the tariff becomes available, if any. If null, available immediately.
"2024-01-01T00:00:00+01:00"
ISO 8601 formatted datetime at which the tariff ceases to be available (exclusive — the tariff is not available at this instant). If null, available until further notice.
"2026-01-01T00:00:00+01:00"
Brief human-readable summary of the tariff and its tariff components.
"Fuse-based tariff for 20A with energy tax and monthly subscription fee."
Was this page helpful?