Switchje

Open data

Every night we work out which energy offers are cheapest for five standard households. We give the result away: the five cheapest per day, roughly what that amount is made of, figures for the whole market, and the day an offer appeared and disappeared.

The tariffs themselves, the full ranking and a calculation for your own home are not in it. That is what we sell, for €2.99.

Right now we price 130 contracts from 31 suppliers. Every figure is an estimate: the tariffs as the supplier publishes them, worked out for the stated consumption. The binding offer comes from the supplier itself.

Using it

The licence is CC BY 4.0. Use the files freely, commercially too, as long as you name the source: "Switchje, switchje.nl/data".

How the ranking is made is explained under how we rank.

Files

filerowsperioddownload
cheapestThe five cheapest offers per day, with the cost split. One file per household and one with everything.
cheapest_all9757 September to 15 October 2026
cheapest_median1957 September to 15 October 2026
cheapest_solar1957 September to 15 October 2026
cheapest_heatpump1957 September to 15 October 2026
cheapest_hybrid-heatpump1957 September to 15 October 2026
cheapest_ev1957 September to 15 October 2026
market_dailyThe whole market per day: how many offers there are per contract type, the median, the spread, cashbacks, what was added or withdrawn, and how many offers were repriced.
market_daily1957 September to 15 October 2026
market_by_contractPer day and contract type the cheapest, the median and the priciest offer, unnamed, and how many were estimated on the reference price.
market_by_contract11707 September to 15 October 2026
market_hoursThe exchange price per month and hour of the day over the past twelve full months, and the gas price per month. JSON only.
market_hours2881 October 2025 to 30 September 2026
market_reference_historyThe weighted twelve-month average exchange price (four figures) for every window that ended on a month boundary since 2020: the range behind the dynamic and hybrid estimate; the last window is the twelve-month average shown beside it. JSON only.
market_reference_history741 September 2020 to 1 October 2026
market_monthlyThe exchange price per calendar month since September 2019: bare (electricity hourly mean, gas daily mean) and weighted like the reference price. JSON only.
market_monthly861 September 2019 to 1 October 2026
market_recentToday's reference price: the exchange price of the past 30 days, with that window's place in the monthly series. Refreshed nightly. JSON only.
market_recent115 September to 14 October 2026
offer_lifecycleFor each offer, the day we first saw it and the day it disappeared.
offer_lifecycle133

Last updated: 15 October 2026 at 08:41. A missing date means we had no valid run that day. We add rows and never rewrite them. If the meaning of a column changes, the schema gets a new number and the old file stays for a year.

The five households

Usage comes from CBS table 85140NED (2025), the median per type of home. For the heat pump and the electric car we add a typical extra usage to the median, following Milieu Centraal and ANWB. Grid fees differ in another region.

electricity kWhgas m³feed-in kWh
median19108700
solar236010002190
heatpump4900none0
hybrid-heatpump38003500
ev40008700

The same for all five: registers single, meter smart, grid region stedin.

Where the numbers come from
median
CBS 85140NED 2025, cv zonder zonnestroom, percentiel 50 (https://opendata.cbs.nl/#/CBS/nl/dataset/85140NED)
solar
CBS 85140NED 2025, cv met zonnestroom, percentiel 50; feed-in = P50 levering - P50 netto (https://opendata.cbs.nl/#/CBS/nl/dataset/85140NED)
heatpump
median household (CBS) + 3000 kWh all-electric heat pump (Milieu Centraal: 2750-3440 kWh, well-insulated tussen/hoek/2-onder-1 woning); no gas connection
hybrid-heatpump
median household (CBS) + 1900 kWh hybrid heat pump (Milieu Centraal: 1600-2200 kWh), gas reduced by 60%
ev
median household (CBS) + 2100 kWh for an EV charged at home (ANWB: 15-20 kWh/100 km x 12,000 km)

Dynamic contracts

A dynamic contract has no fixed rate. To compare them anyway, we price every supplier on the same market price: the exchange price of the past 30 days, refreshed nightly. Only the markup, the feed-in deduction and the standing charges then differ per supplier. In the files you recognise those rows by basis = reference. On a day that is not possible, the offer still counts in the market figures but is not in the top 5.

The market price in force

electricity, household without solar
15.99 ct/kWh
electricity, household with solar
17.72 ct/kWh
feed-in
9.70 ct/kWh
gas
75.7 ct/m³
weighted by the standard profile (MFFBAS E1A, gas G1A) over
15 September to 14 October 2026

trailing 30 days of EPEX NL day-ahead hourly prices, bare, weighted by the MFFBAS standard profiles: delivery = sum(price x E1A afname fraction, household without PV) / sum(fraction); delivery_pv = the same with the E1A afname profile of a household with PV; feed_in = weighted by the E1A invoeding profile of a household with PV; gas = the daily day-ahead gas price weighted by G1A. The flat figures (time-weighted mean of all hours; mean over 10:00-15:59 Europe/Amsterdam; mean of the daily gas price) are given beside them

What the columns mean

columnmeaning
cheapest
dateday of the calculation
profilestandard household
rankposition, 1 is cheapest, never below 5
suppliersupplier code
supplier_namesupplier
productthe supplier's product name
contract_typefixed, variable, dynamic or hybrid
duration_monthsterm in months, empty is open-ended (in market_by_contract: the term for fixed_*, else empty)
yearly_cost_euryearly cost including VAT, averaged over the term
supply_eurwhat the supplier charges for the energy itself
taxes_levies_eurenergy tax minus the tax credit
network_eurgrid operator fees
feed_in_credit_eurfeed-in credit and feed-in fees, negative is a credit
one_off_eurone-off amounts such as cashback or setup fees, spread over the term
basisquoted is the stated rate, reference is priced on the market price above
retrieved_atthe date the tariff was taken on
schema_versionversion of this schema
feed_in_income_eurwhat the fed-in kWh earn (net metering and the feed-in rate), negative
feed_in_cost_eurfeed-in fees; income plus cost is feed_in_credit_eur
market_daily
dateday of the calculation
profilestandard household
offers_pricedoffers we could price for this household
offers_fixedof which fixed
offers_variableof which variable
offers_dynamicof which dynamic
offers_hybridof which hybrid
median_yearly_cost_eurmedian yearly cost
spread_eurdifference between the cheapest and the priciest
offers_with_cashbackoffers with a cashback
offers_addedoffers we first saw that day
offers_withdrawnoffers that disappeared that day
schema_versionversion of this schema
offers_repricedoffers priced differently from the previous exported day (empty before 19 September 2026)
market_by_contract
dateday of the calculation
profilestandard household
contract_typefixed, variable, dynamic or hybrid
duration_monthsterm in months, empty is open-ended (in market_by_contract: the term for fixed_*, else empty)
offersoffers of this contract type
offers_referenceof which estimated on the reference price
cheapest_eurcheapest yearly cost
median_eurmedian yearly cost
priciest_eurpriciest yearly cost
schema_versionversion of this schema
estimate_low_eurthe cheapest estimated offer on the lowest reference price of the past years (market_reference_history)
estimate_high_eurthe same offer on the highest
estimate_year_eur
groupcontract type as the usage map has them: fixed_12, fixed_24, fixed_36 (fixed 1, 2, 3 years), variable, dynamic, hybrid; a term on a dynamic contract stays dynamic
offer_lifecycle
suppliersupplier code
supplier_namesupplier
productthe supplier's product name
contract_typefixed, variable, dynamic or hybrid
duration_monthsterm in months, empty is open-ended (in market_by_contract: the term for fixed_*, else empty)
first_seenfirst day seen
withdrawn_onfirst day no longer seen, empty is still on sale
schema_versionversion of this schema

For AI assistants

The same data is also available as an MCP server. It is read-only and needs no login.

https://switchje.nl/mcp