curl --request GET \
--url https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}/simplified \
--header 'Authorization: <api-key>'import requests
url = "https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}/simplified"
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}/simplified', 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}/simplified",
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}/simplified"
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}/simplified")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}/simplified")
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{
"component_rates": [
{
"component": {
"applicable_from": "2026-01-01T00:00:00+01:00",
"name": "Energiskatt"
},
"rate": {
"dataset_id": "quarter-hourly-energy-offtake",
"intervals": [
{
"end_time": "2026-01-02T00:00:00Z",
"rate": 0.36,
"start_time": "2026-01-01T00:00:00Z"
}
],
"unit": "SEK_per_kWh"
}
},
{
"component": {
"applicable_from": "2026-01-01T00:00:00+01:00",
"name": "Effektavgift"
},
"rate": {
"dataset_id": "quarter-hourly-energy-offtake",
"intervals": [
{
"end_time": "2026-01-01T06:00:00Z",
"rate": 0,
"start_time": "2026-01-01T00:00:00Z"
},
{
"end_time": "2026-01-01T22:00:00Z",
"rate": 50,
"start_time": "2026-01-01T06:00:00Z"
},
{
"end_time": "2026-01-02T00:00:00Z",
"rate": 0,
"start_time": "2026-01-01T22:00:00Z"
}
],
"unit": "SEK_per_kW"
}
}
],
"dataset_rates": [
{
"dataset_id": "quarter-hourly-energy-offtake",
"intervals": [
{
"end_time": "2026-01-02T00:00:00Z",
"rate": 0.56,
"start_time": "2026-01-01T00:00:00Z"
}
],
"unit": "SEK_per_kWh"
},
{
"dataset_id": "quarter-hourly-energy-offtake",
"intervals": [
{
"end_time": "2026-01-01T06:00:00Z",
"rate": 0,
"start_time": "2026-01-01T00:00:00Z"
},
{
"end_time": "2026-01-01T22:00:00Z",
"rate": 50,
"start_time": "2026-01-01T06:00:00Z"
},
{
"end_time": "2026-01-02T00:00:00Z",
"rate": 0,
"start_time": "2026-01-01T22:00:00Z"
}
],
"unit": "SEK_per_kW"
}
],
"unprojectable_components": [
{
"applicable_from": "2026-01-01T00:00:00+01:00",
"name": "Abonnemangsavgift"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Get Simplified Tariff
Get a simplified, indicative view of a Tariff’s rates over a time range.
The response is a set of rate timeseries, one per (input dataset, rate unit). In each interval, rate is what is paid per kWh of energy on the input (for per-kWh series) or per kW of power peak derived from the input (for per-kW series), in the series’ own currency.
This is an approximation of the tariff’s price shape, meant for heuristics that need a coarse “when is energy cheap/expensive” signal — not for exact cost calculation or optimisation.
Components that don’t fit a simple per-kWh or per-kW rate (fixed fees, spot-price-linked charges, overdraft fees …) are surfaced by name and applicability window in unprojectable_components rather than appearing in the rate timeseries.
Use Calculate Tariff for exact cost calculation, or In Optimisation for using tariffs in optimisation models.
curl --request GET \
--url https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}/simplified \
--header 'Authorization: <api-key>'import requests
url = "https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}/simplified"
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}/simplified', 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}/simplified",
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}/simplified"
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}/simplified")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.engrate.io/cost-of-energy/v1/tariffs/{tariff_id}/simplified")
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{
"component_rates": [
{
"component": {
"applicable_from": "2026-01-01T00:00:00+01:00",
"name": "Energiskatt"
},
"rate": {
"dataset_id": "quarter-hourly-energy-offtake",
"intervals": [
{
"end_time": "2026-01-02T00:00:00Z",
"rate": 0.36,
"start_time": "2026-01-01T00:00:00Z"
}
],
"unit": "SEK_per_kWh"
}
},
{
"component": {
"applicable_from": "2026-01-01T00:00:00+01:00",
"name": "Effektavgift"
},
"rate": {
"dataset_id": "quarter-hourly-energy-offtake",
"intervals": [
{
"end_time": "2026-01-01T06:00:00Z",
"rate": 0,
"start_time": "2026-01-01T00:00:00Z"
},
{
"end_time": "2026-01-01T22:00:00Z",
"rate": 50,
"start_time": "2026-01-01T06:00:00Z"
},
{
"end_time": "2026-01-02T00:00:00Z",
"rate": 0,
"start_time": "2026-01-01T22:00:00Z"
}
],
"unit": "SEK_per_kW"
}
}
],
"dataset_rates": [
{
"dataset_id": "quarter-hourly-energy-offtake",
"intervals": [
{
"end_time": "2026-01-02T00:00:00Z",
"rate": 0.56,
"start_time": "2026-01-01T00:00:00Z"
}
],
"unit": "SEK_per_kWh"
},
{
"dataset_id": "quarter-hourly-energy-offtake",
"intervals": [
{
"end_time": "2026-01-01T06:00:00Z",
"rate": 0,
"start_time": "2026-01-01T00:00:00Z"
},
{
"end_time": "2026-01-01T22:00:00Z",
"rate": 50,
"start_time": "2026-01-01T06:00:00Z"
},
{
"end_time": "2026-01-02T00:00:00Z",
"rate": 0,
"start_time": "2026-01-01T22:00:00Z"
}
],
"unit": "SEK_per_kW"
}
],
"unprojectable_components": [
{
"applicable_from": "2026-01-01T00:00:00+01:00",
"name": "Abonnemangsavgift"
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Authorizations
Path Parameters
Query Parameters
ISO 8601 timezone-aware datetime at which the range begins (inclusive).
ISO 8601 timezone-aware datetime at which the range ends (exclusive). Must be strictly greater than start_time.
Response
Successful Response
Indicative, simplified view of a Tariff's rates over a time range.
Per-component rate timeseries, for components that can be projected onto a per-kWh or per-kW rate. Empty if the tariff has no projectable components.
Show child attributes
Show child attributes
Summed rate timeseries per (dataset_id, unit) group, across all projectable components contributing to that group. Empty if the tariff has no projectable components.
Show child attributes
Show child attributes
Tariff components present on the tariff that could not be projected onto a rate timeseries. Listed by name and applicability window only; see Get Tariff for full component definitions.
Show child attributes
Show child attributes
Was this page helpful?