{"openapi":"3.1.0","info":{"title":"World Power Monitor read only data API","summary":"Electricity statistics by country, US grid regions and European cross border flows as static JSON.","description":"Free, read only JSON files with electricity data for countries, US grid regions and European borders. There is no key, no account and no server code behind the v1 files: each response is a static file written when the site is built.\n\n**Data layers.** Ember statistics (annual and monthly, one file per country) are the floor layer. EIA and ENTSO-E data are operator data. They are separate endpoints with separate attribution and are never merged into one figure; do not add an Ember number to an operator number.\n\n**Attribution is required.** Every payload carries an attribution field taken from the source licence registry. Keep it with any copy or derived work. For Ember data: Source: Ember (ember-energy.org), licensed under CC BY 4.0. Operator data: Source: U.S. Energy Information Administration (EIA). Source: ENTSO-E Transparency Platform (transparency.entsoe.eu), CC BY 4.0. Aggregated and converted by World Power Monitor; ENTSO-E does not endorse this site.\n\n**Caching and rates.** Files are sent with Cache-Control: public, max-age=300, s-maxage=3600. CORS is open (Access-Control-Allow-Origin: *), so browsers on any site can read them. Files change at most once per site build, so one request per file per hour is plenty. The site sets no quota and issues no keys.\n\n**Stability.** v1 keeps existing paths and fields and only adds fields. Removing or renaming a path or field, changing a unit or a type, or changing what a field means would ship as /api/v2/. Clients should ignore fields they do not know. There is no uptime or latency guarantee.\n\nDocumentation with examples: https://worldpowermonitor.com/api/","version":"v1","termsOfService":"https://worldpowermonitor.com/sources/","x-docs":"https://worldpowermonitor.com/api/"},"servers":[{"url":"https://worldpowermonitor.com","description":"Production. Paths include the version prefix."}],"security":[],"tags":[{"name":"index","description":"Dataset index and this description."},{"name":"ember","description":"Ember statistics, the floor layer: annual and monthly figures for every country. Never merged with operator data."},{"name":"operator","description":"Operator data from EIA and ENTSO-E. Separate from Ember statistics: figures from the two layers are never combined into one number."}],"paths":{"/api/v1/index.json":{"get":{"operationId":"getIndex","tags":["index"],"summary":"Datasets, coverage, cadence and attribution","description":"Start here. Lists every dataset in this build with its coverage, as-of date, update cadence, attribution and the endpoints that serve it.","x-attribution":[{"source":"Ember","source_url":"https://ember-energy.org/","attribution":"Source: Ember (ember-energy.org), licensed under CC BY 4.0.","licence":"CC BY 4.0","licence_url":"https://creativecommons.org/licenses/by/4.0/"},{"source":"U.S. Energy Information Administration","source_url":"https://www.eia.gov/","attribution":"Source: U.S. Energy Information Administration (EIA).","licence":"US Government work, public domain","licence_url":"https://www.eia.gov/about/copyrights_reuse.php"},{"source":"ENTSO-E Transparency Platform","source_url":"https://transparency.entsoe.eu/","attribution":"Source: ENTSO-E Transparency Platform (transparency.entsoe.eu), CC BY 4.0. Aggregated and converted by World Power Monitor; ENTSO-E does not endorse this site.","licence":"ENTSO-E Terms of Use plus CC BY 4.0 for listed data items","licence_url":"https://transparencyplatform.zendesk.com/hc/en-us/articles/40921911218961-Legal-Terms-and-Conditions"}],"responses":{"200":{"description":"Dataset index.","headers":{"Cache-Control":{"description":"Cache lifetime in the browser (max-age) and at the Cloudflare edge (s-maxage).","schema":{"type":"string","examples":["public, max-age=300, s-maxage=3600"]}},"Access-Control-Allow-Origin":{"description":"Open CORS: any website can read these files from the browser.","schema":{"type":"string","examples":["*"]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndexResponse"},"examples":{"current":{"summary":"The index of this build, first 3 datasets","value":{"api_version":"v1","publisher":"World Power Monitor","docs":"https://worldpowermonitor.com/api/","openapi":"https://worldpowermonitor.com/api/v1/openapi.json","note":"Static, read only JSON files rebuilt with every site build. Keep the attribution of each dataset with any copy or derived work. Ember statistics and operator data (EIA, ENTSO-E) are separate datasets and are never merged.","datasets":[{"id":"ember-annual","name":"Annual electricity generation, demand and emissions by country","coverage":"215 countries, 1985 to 2025","as_of":"2025","temporal_coverage":"1985/2025","update_cadence":"Ember publishes annual figures as national statistics arrive, mostly once a year, with revisions. The files are rebuilt from the latest Ember release with every site build.","changes":"Restructured into tidy tables, with fuel categories named by World Power Monitor fuel ids. Ember's values are not altered.","attribution":{"source":"Ember","source_url":"https://ember-energy.org/","attribution":"Source: Ember (ember-energy.org), licensed under CC BY 4.0.","licence":"CC BY 4.0","licence_url":"https://creativecommons.org/licenses/by/4.0/"},"endpoints":[{"path":"/api/v1/countries.json","url":"https://worldpowermonitor.com/api/v1/countries.json","summary":"List of countries with a data file."},{"path":"/api/v1/countries/{id}.json","url":"https://worldpowermonitor.com/api/v1/countries/{id}.json","summary":"Ember annual and monthly series for one country."}]},{"id":"ember-monthly","name":"Monthly electricity generation and demand by country","coverage":"88 countries, 1999-01 to 2026-09","as_of":"2026-09","temporal_coverage":"1999-01/2026-09","update_cadence":"Ember adds a month of data as national sources publish it, usually a month or two after the month ends. The file is rebuilt from the latest release with every site build.","changes":"Restructured into a tidy table, with fuel categories named by World Power Monitor fuel ids. Ember's values are not altered. Ember's monthly price series is not included.","attribution":{"source":"Ember","source_url":"https://ember-energy.org/","attribution":"Source: Ember (ember-energy.org), licensed under CC BY 4.0.","licence":"CC BY 4.0","licence_url":"https://creativecommons.org/licenses/by/4.0/"},"endpoints":[{"path":"/api/v1/countries.json","url":"https://worldpowermonitor.com/api/v1/countries.json","summary":"List of countries with a data file."},{"path":"/api/v1/countries/{id}.json","url":"https://worldpowermonitor.com/api/v1/countries/{id}.json","summary":"Ember annual and monthly series for one country."}]},{"id":"eia-us-grid-daily","name":"US grid region daily electricity demand and generation","coverage":"14 US grid regions, 2025-09-23 to 2026-10-27","as_of":"2026-10-27","temporal_coverage":"2025-09-23/2026-10-27","update_cadence":"EIA publishes hourly grid data with a lag of about one hour for demand and up to 13 hours for generation by fuel. Daily totals are rebuilt with every site build and cover a rolling window of about 400 days.","changes":"Hourly EIA-930 values were summed to daily totals in each region's local time by World Power Monitor. The US Lower 48 row overlaps the other regions; do not add them together.","attribution":{"source":"U.S. Energy Information Administration","source_url":"https://www.eia.gov/","attribution":"Source: U.S. Energy Information Administration (EIA).","licence":"US Government work, public domain","licence_url":"https://www.eia.gov/about/copyrights_reuse.php"},"endpoints":[{"path":"/api/v1/regions.json","url":"https://worldpowermonitor.com/api/v1/regions.json","summary":"List of US grid regions with a daily file."},{"path":"/api/v1/regions/{id}.json","url":"https://worldpowermonitor.com/api/v1/regions/{id}.json","summary":"Daily demand and generation for one US grid region."}]}]}}}}}}}}},"/api/v1/openapi.json":{"get":{"operationId":"getOpenApi","tags":["index"],"summary":"This OpenAPI 3.1 description","description":"The document you are reading, generated at build time from the endpoints and schemas that emit the files.","responses":{"200":{"description":"OpenAPI 3.1 document.","headers":{"Cache-Control":{"description":"Cache lifetime in the browser (max-age) and at the Cloudflare edge (s-maxage).","schema":{"type":"string","examples":["public, max-age=300, s-maxage=3600"]}},"Access-Control-Allow-Origin":{"description":"Open CORS: any website can read these files from the browser.","schema":{"type":"string","examples":["*"]}}},"content":{"application/json":{"schema":{"type":"object","description":"An OpenAPI 3.1 document."}}}}}}},"/api/v1/countries.json":{"get":{"operationId":"listCountries","tags":["ember"],"summary":"List of countries with a data file","description":"The country id index: use countries[].id as the id of the country endpoint.","x-attribution":[{"source":"Ember","source_url":"https://ember-energy.org/","attribution":"Source: Ember (ember-energy.org), licensed under CC BY 4.0.","licence":"CC BY 4.0","licence_url":"https://creativecommons.org/licenses/by/4.0/"}],"x-dataset-ids":["ember-annual","ember-monthly"],"responses":{"200":{"description":"Country index.","headers":{"Cache-Control":{"description":"Cache lifetime in the browser (max-age) and at the Cloudflare edge (s-maxage).","schema":{"type":"string","examples":["public, max-age=300, s-maxage=3600"]}},"Access-Control-Allow-Origin":{"description":"Open CORS: any website can read these files from the browser.","schema":{"type":"string","examples":["*"]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountriesResponse"},"examples":{"current":{"summary":"First entries of the index","value":{"api_version":"v1","publisher":"World Power Monitor","attribution":[{"source":"Ember","source_url":"https://ember-energy.org/","attribution":"Source: Ember (ember-energy.org), licensed under CC BY 4.0.","licence":"CC BY 4.0","licence_url":"https://creativecommons.org/licenses/by/4.0/"}],"note":"Ember statistics only. One file per country; each holds its annual and monthly series when that dataset is offered.","countries":[{"id":"afghanistan","name":"Afghanistan","iso3":"AFG","latest_annual_year":2024,"latest_month":null,"endpoint":"https://worldpowermonitor.com/api/v1/countries/afghanistan.json","page":"https://worldpowermonitor.com/countries/afghanistan/"},{"id":"albania","name":"Albania","iso3":"ALB","latest_annual_year":2025,"latest_month":null,"endpoint":"https://worldpowermonitor.com/api/v1/countries/albania.json","page":"https://worldpowermonitor.com/countries/albania/"},{"id":"algeria","name":"Algeria","iso3":"DZA","latest_annual_year":2024,"latest_month":null,"endpoint":"https://worldpowermonitor.com/api/v1/countries/algeria.json","page":"https://worldpowermonitor.com/countries/algeria/"}]}}}}}}}}},"/api/v1/countries/{id}.json":{"get":{"operationId":"getCountry","tags":["ember"],"summary":"Ember annual and monthly series for one country","description":"Annual and monthly electricity statistics from Ember for one country: generation by fuel, shares, capacity, emissions, demand, imports and carbon intensity. Ember statistics are the floor layer and are never merged with operator data.","parameters":[{"$ref":"#/components/parameters/CountryId"}],"x-attribution":[{"source":"Ember","source_url":"https://ember-energy.org/","attribution":"Source: Ember (ember-energy.org), licensed under CC BY 4.0.","licence":"CC BY 4.0","licence_url":"https://creativecommons.org/licenses/by/4.0/"}],"x-dataset-ids":["ember-annual","ember-monthly"],"responses":{"200":{"description":"Country series.","headers":{"Cache-Control":{"description":"Cache lifetime in the browser (max-age) and at the Cloudflare edge (s-maxage).","schema":{"type":"string","examples":["public, max-age=300, s-maxage=3600"]}},"Access-Control-Allow-Origin":{"description":"Open CORS: any website can read these files from the browser.","schema":{"type":"string","examples":["*"]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountryResponse"},"examples":{"germany":{"summary":"germany, last 3 entries of each series","value":{"api_version":"v1","publisher":"World Power Monitor","id":"germany","name":"Germany","iso3":"DEU","page":"https://worldpowermonitor.com/countries/germany/","attribution":[{"source":"Ember","source_url":"https://ember-energy.org/","attribution":"Source: Ember (ember-energy.org), licensed under CC BY 4.0.","licence":"CC BY 4.0","licence_url":"https://creativecommons.org/licenses/by/4.0/"}],"note":"Ember statistics. Numbers are raw values with units in the field names. A null is a missing value.","annual":{"dataset":"ember-annual","as_of":"2025","changes":"Restructured into tidy tables, with fuel categories named by World Power Monitor fuel ids. Ember's values are not altered.","years":[2023,2024,2025],"total_generation_twh":[506.72,491.82,497.04],"demand_twh":[515.94,518.09,516.52],"demand_per_capita_mwh":[6.1,6.18,6.19],"net_imports_twh":[9.22,26.27,19.49],"carbon_intensity_gco2_kwh":[363.59,339.87,334.12],"total_emissions_mtco2":[184.24,167.16,166.07],"generation_twh":{"bioenergy":[51.26,51.08,50.09],"coal":[124.78,106.33,104.26],"gas":[76.66,78.41,83.5],"hydro":[21.24,23.83,18.28],"nuclear":[7.22,0,0],"other_fossil":[20.96,20.39,18.7],"other_renewables":[0.19,0.22,0.23],"solar":[63.87,74.13,89.7],"wind":[140.54,137.43,132.27]},"share_pct":{"bioenergy":[10.12,10.39,10.08],"coal":[24.62,21.62,20.98],"gas":[15.13,15.94,16.8],"hydro":[4.19,4.84,3.68],"nuclear":[1.42,0,0],"other_fossil":[4.14,4.15,3.76],"other_renewables":[0.04,0.04,0.05],"solar":[12.6,15.07,18.05],"wind":[27.74,27.94,26.61]},"capacity_gw":{"bioenergy":[8.82,8.88,8.98],"coal":[39.07,32.34,31.97],"gas":[31.9,32.33,32.44],"hydro":[5.61,5.5,5.69],"nuclear":[0,0,0],"other_fossil":[3.83,4.13,4.13],"other_renewables":[1.04,1.06,1.09],"solar":[75.52,91.2,106.27],"wind":[69.44,72.74,77.81]},"emissions_mtco2":{"bioenergy":[11.08,11.04,10.83],"coal":[120.98,103.08,100.57],"gas":[33.06,33.81,36],"hydro":[0.5,0.57,0.43],"nuclear":[0.04,0,0],"other_fossil":[13.79,13.42,12.31],"other_renewables":[0.01,0.01,0.01],"solar":[3.04,3.52,4.26],"wind":[1.75,1.71,1.65]}},"monthly":{"dataset":"ember-monthly","as_of":"2026-09","changes":"Restructured into a tidy table, with fuel categories named by World Power Monitor fuel ids. Ember's values are not altered. Ember's monthly price series is not included.","months":["2026-07","2026-08","2026-09"],"demand_twh":[42.32,40.39,41.18],"carbon_intensity_gco2_kwh":[284.3,298.88,333.78],"generation_twh":{"bioenergy":[3.2,3.2,3.13],"coal":[6.8,6.86,8.4],"gas":[4.24,4.66,5.52],"hydro":[1.25,1.18,0.96],"nuclear":[0,0,0],"other_fossil":[2.18,2.15,2.14],"other_renewables":[0.01,0.01,0.01],"solar":[14.68,13.14,10.45],"wind":[10.02,9.56,11.44]}}}}}}}},"404":{"description":"No such file. Cloudflare Pages answers a missing path with its HTML 404 page.","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/v1/regions.json":{"get":{"operationId":"listRegions","tags":["operator"],"summary":"List of US grid regions with a daily file","description":"The region id index: use regions[].id as the id of the region endpoint.","x-attribution":[{"source":"U.S. Energy Information Administration","source_url":"https://www.eia.gov/","attribution":"Source: U.S. Energy Information Administration (EIA).","licence":"US Government work, public domain","licence_url":"https://www.eia.gov/about/copyrights_reuse.php"}],"x-dataset-ids":["eia-us-grid-daily"],"responses":{"200":{"description":"Region index.","headers":{"Cache-Control":{"description":"Cache lifetime in the browser (max-age) and at the Cloudflare edge (s-maxage).","schema":{"type":"string","examples":["public, max-age=300, s-maxage=3600"]}},"Access-Control-Allow-Origin":{"description":"Open CORS: any website can read these files from the browser.","schema":{"type":"string","examples":["*"]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegionsResponse"},"examples":{"current":{"summary":"First entries of the index","value":{"api_version":"v1","publisher":"World Power Monitor","attribution":{"source":"U.S. Energy Information Administration","source_url":"https://www.eia.gov/","attribution":"Source: U.S. Energy Information Administration (EIA).","licence":"US Government work, public domain","licence_url":"https://www.eia.gov/about/copyrights_reuse.php"},"note":"US grid regions from EIA. The Lower 48 region overlaps the others; do not add them together.","regions":[{"id":"eia-california","name":"California (EIA region)","first_day":"2025-09-23","last_day":"2026-10-27","endpoint":"https://worldpowermonitor.com/api/v1/regions/eia-california.json"},{"id":"eia-carolinas","name":"Carolinas (EIA region)","first_day":"2025-09-23","last_day":"2026-10-27","endpoint":"https://worldpowermonitor.com/api/v1/regions/eia-carolinas.json"},{"id":"eia-central","name":"Central (EIA region)","first_day":"2025-09-23","last_day":"2026-10-27","endpoint":"https://worldpowermonitor.com/api/v1/regions/eia-central.json"}]}}}}}}}}},"/api/v1/regions/{id}.json":{"get":{"operationId":"getRegion","tags":["operator"],"summary":"Daily demand and generation for one US grid region","description":"Daily demand, net generation, interchange and generation by fuel for one US grid region, from EIA operator data. This is the operator layer: do not combine it with Ember statistics into one figure.","parameters":[{"$ref":"#/components/parameters/RegionId"}],"x-attribution":[{"source":"U.S. Energy Information Administration","source_url":"https://www.eia.gov/","attribution":"Source: U.S. Energy Information Administration (EIA).","licence":"US Government work, public domain","licence_url":"https://www.eia.gov/about/copyrights_reuse.php"}],"x-dataset-ids":["eia-us-grid-daily"],"responses":{"200":{"description":"Daily series.","headers":{"Cache-Control":{"description":"Cache lifetime in the browser (max-age) and at the Cloudflare edge (s-maxage).","schema":{"type":"string","examples":["public, max-age=300, s-maxage=3600"]}},"Access-Control-Allow-Origin":{"description":"Open CORS: any website can read these files from the browser.","schema":{"type":"string","examples":["*"]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegionResponse"},"examples":{"eia-texas":{"summary":"eia-texas, last 3 days","value":{"api_version":"v1","dataset":"eia-us-grid-daily","publisher":"World Power Monitor","attribution":{"source":"U.S. Energy Information Administration","source_url":"https://www.eia.gov/","attribution":"Source: U.S. Energy Information Administration (EIA).","licence":"US Government work, public domain","licence_url":"https://www.eia.gov/about/copyrights_reuse.php"},"changes":"Hourly EIA-930 values were summed to daily totals in each region's local time by World Power Monitor. The US Lower 48 row overlaps the other regions; do not add them together.","id":"eia-texas","name":"Texas (EIA region)","as_of":"2026-10-27","timezone":"Central","note":"Daily totals in the region local time. A null is a missing value; a day of exactly zero demand or net generation is reported as null. Generation by fuel is null where EIA reported none.","first_day":"2025-09-23","last_day":"2026-10-27","dates":["2026-10-25","2026-10-26","2026-10-27"],"demand_mwh":[1237711,1252877,1272744],"net_generation_mwh":[1237747,1250770,1270640],"interchange_mwh":[41,-2102,-2101],"generation_mwh":{"coal":[137244,156100,144341],"gas":[427421,576147,592533],"nuclear":[92361,92413,92375],"hydro":[655,592,481],"wind":[437964,263838,267784],"solar":[153199,153464,187852],"storage":[-12334,6587,-14742],"other":[1227,1632,70]}}}}}}},"404":{"description":"No such file. Cloudflare Pages answers a missing path with its HTML 404 page.","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/v1/europe/flows.json":{"get":{"operationId":"getEuropeFlows","tags":["operator"],"summary":"Physical cross border flows between European zones","description":"Physical flows summed over the dated window in the file, per border and per zone, from ENTSO-E operator data.","x-attribution":[{"source":"ENTSO-E Transparency Platform","source_url":"https://transparency.entsoe.eu/","attribution":"Source: ENTSO-E Transparency Platform (transparency.entsoe.eu), CC BY 4.0. Aggregated and converted by World Power Monitor; ENTSO-E does not endorse this site.","licence":"ENTSO-E Terms of Use plus CC BY 4.0 for listed data items","licence_url":"https://transparencyplatform.zendesk.com/hc/en-us/articles/40921911218961-Legal-Terms-and-Conditions"}],"x-dataset-ids":["europe-cross-border-flows"],"responses":{"200":{"description":"Cross border flows.","headers":{"Cache-Control":{"description":"Cache lifetime in the browser (max-age) and at the Cloudflare edge (s-maxage).","schema":{"type":"string","examples":["public, max-age=300, s-maxage=3600"]}},"Access-Control-Allow-Origin":{"description":"Open CORS: any website can read these files from the browser.","schema":{"type":"string","examples":["*"]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlowsResponse"},"examples":{"current":{"summary":"First entries of each list","value":{"api_version":"v1","dataset":"europe-cross-border-flows","publisher":"World Power Monitor","attribution":{"source":"ENTSO-E Transparency Platform","source_url":"https://transparency.entsoe.eu/","attribution":"Source: ENTSO-E Transparency Platform (transparency.entsoe.eu), CC BY 4.0. Aggregated and converted by World Power Monitor; ENTSO-E does not endorse this site.","licence":"ENTSO-E Terms of Use plus CC BY 4.0 for listed data items","licence_url":"https://transparencyplatform.zendesk.com/hc/en-us/articles/40921911218961-Legal-Terms-and-Conditions"},"changes":"Flows were aggregated over the period per border and direction by World Power Monitor. ENTSO-E does not endorse this site.","as_of":"2026-10-27","period_start":"2026-09-28","period_end":"2026-10-27","days":30,"note":"Physical flows summed over the window shown. net_a_to_b_mwh is positive when the net flow goes from zone A to zone B.","borders":[{"zone_a":"se2","zone_a_name":"Sweden North-Central (SE2)","zone_b":"se3","zone_b_name":"Sweden South-Central (SE3)","a_to_b_mwh":4234682.5,"b_to_a_mwh":0,"net_a_to_b_mwh":4234682.5},{"zone_a":"fr","zone_a_name":"France","zone_b":"it-nord","zone_b_name":"Italy North","a_to_b_mwh":1964035.57,"b_to_a_mwh":162.4225,"net_a_to_b_mwh":1963873.15},{"zone_a":"es","zone_a_name":"Spain","zone_b":"pt","zone_b_name":"Portugal","a_to_b_mwh":1547874.17,"b_to_a_mwh":13651.7,"net_a_to_b_mwh":1534222.47}],"zones":[{"zone_id":"fr","zone":"France","exports_mwh":6149496.65,"imports_mwh":1006984.17,"net_exports_mwh":5142512.48},{"zone_id":"se2","zone":"Sweden North-Central (SE2)","exports_mwh":4438505.92,"imports_mwh":980651.895,"net_exports_mwh":3457854.03},{"zone_id":"cz","zone":"Czechia","exports_mwh":2986211.22,"imports_mwh":1527390.04,"net_exports_mwh":1458821.19}]}}}}}}}}}},"components":{"schemas":{"Attribution":{"type":"object","description":"Where the data comes from and the licence it is used under. Keep the attribution text with any copy or derived work.","properties":{"source":{"type":"string","description":"Source name."},"source_url":{"type":"string","description":"Source home page.","format":"uri"},"attribution":{"type":"string","description":"The exact attribution text to copy."},"licence":{"type":"string","description":"Licence name."},"licence_url":{"type":["string","null"],"description":"Licence text, or null when the licence has no stable URL."}},"required":["source","source_url","attribution","licence","licence_url"]},"CountryIndexEntry":{"type":"object","description":"One country in the index.","properties":{"id":{"type":"string","description":"Country id: the slug in /countries/<id>/ and the file name.","pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},"name":{"type":"string","description":"Country or region name."},"iso3":{"type":["string","null"],"description":"ISO 3166-1 alpha-3 code; null for aggregates such as World or EU."},"latest_annual_year":{"type":["integer","null"],"description":"Latest year with annual generation data."},"latest_month":{"type":["string","null"],"description":"Latest month with monthly data (YYYY-MM); null when the country has no monthly series."},"endpoint":{"type":"string","description":"URL of the country file.","format":"uri"},"page":{"type":"string","description":"URL of the country page on this site.","format":"uri"}},"required":["id","name","iso3","latest_annual_year","latest_month","endpoint","page"]},"CountriesResponse":{"type":"object","description":"Index of the countries that have a file.","properties":{"api_version":{"const":"v1","description":"Always v1 for these files."},"publisher":{"type":"string","description":"Publisher name, World Power Monitor."},"attribution":{"type":"array","description":"Attribution for the datasets behind the country files.","items":{"$ref":"#/components/schemas/Attribution"}},"note":{"type":"string","description":"Scope note."},"countries":{"type":"array","description":"One entry per country.","items":{"$ref":"#/components/schemas/CountryIndexEntry"}}},"required":["api_version","publisher","attribution","note","countries"]},"CountryAnnual":{"type":"object","description":"Annual series from Ember. Every array has one value per entry of years, in the same order.","properties":{"dataset":{"const":"ember-annual","description":"Dataset id."},"as_of":{"type":"string","description":"Last year in the block."},"changes":{"type":"string","description":"What World Power Monitor changed from the source."},"years":{"type":"array","description":"Calendar years, ascending.","items":{"type":"integer"}},"total_generation_twh":{"type":"array","description":"Total electricity generation, TWh.","items":{"type":["number","null"]}},"demand_twh":{"type":"array","description":"Electricity demand, TWh.","items":{"type":["number","null"]}},"demand_per_capita_mwh":{"type":"array","description":"Electricity demand per person, MWh.","items":{"type":["number","null"]}},"net_imports_twh":{"type":"array","description":"Net electricity imports, TWh; negative means net exports.","items":{"type":["number","null"]}},"carbon_intensity_gco2_kwh":{"type":"array","description":"Carbon intensity of generation, gCO2 per kWh.","items":{"type":["number","null"]}},"total_emissions_mtco2":{"type":"array","description":"Power sector emissions, MtCO2.","items":{"type":["number","null"]}},"generation_twh":{"type":"object","description":"Generation by fuel, TWh. Keys are fuel ids (coal, gas, oil, other_fossil, nuclear, hydro, wind, solar, bioenergy, geothermal, other_renewables, storage, other); only fuels with data for this file appear.","additionalProperties":{"type":"array","items":{"type":["number","null"]}}},"share_pct":{"type":"object","description":"Share of generation by fuel, percent. Keys are fuel ids (coal, gas, oil, other_fossil, nuclear, hydro, wind, solar, bioenergy, geothermal, other_renewables, storage, other); only fuels with data for this file appear.","additionalProperties":{"type":"array","items":{"type":["number","null"]}}},"capacity_gw":{"type":"object","description":"Installed capacity by fuel, GW; empty when Ember has none for the country. Keys are fuel ids (coal, gas, oil, other_fossil, nuclear, hydro, wind, solar, bioenergy, geothermal, other_renewables, storage, other); only fuels with data for this file appear.","additionalProperties":{"type":"array","items":{"type":["number","null"]}}},"emissions_mtco2":{"type":"object","description":"Emissions by fuel, MtCO2. Keys are fuel ids (coal, gas, oil, other_fossil, nuclear, hydro, wind, solar, bioenergy, geothermal, other_renewables, storage, other); only fuels with data for this file appear.","additionalProperties":{"type":"array","items":{"type":["number","null"]}}}},"required":["dataset","as_of","changes","years","total_generation_twh","demand_twh","demand_per_capita_mwh","net_imports_twh","carbon_intensity_gco2_kwh","total_emissions_mtco2","generation_twh","share_pct","capacity_gw","emissions_mtco2"]},"CountryMonthly":{"type":"object","description":"Monthly series from Ember. Every array has one value per entry of months, in the same order.","properties":{"dataset":{"const":"ember-monthly","description":"Dataset id."},"as_of":{"type":"string","description":"Last month in the block (YYYY-MM)."},"changes":{"type":"string","description":"What World Power Monitor changed from the source."},"months":{"type":"array","description":"Months as YYYY-MM, ascending.","items":{"type":"string","pattern":"^\\d{4}-\\d{2}$"}},"demand_twh":{"type":"array","description":"Electricity demand, TWh.","items":{"type":["number","null"]}},"carbon_intensity_gco2_kwh":{"type":"array","description":"Carbon intensity of generation, gCO2 per kWh.","items":{"type":["number","null"]}},"generation_twh":{"type":"object","description":"Generation by fuel, TWh. Keys are fuel ids (coal, gas, oil, other_fossil, nuclear, hydro, wind, solar, bioenergy, geothermal, other_renewables, storage, other); only fuels with data for this file appear.","additionalProperties":{"type":"array","items":{"type":["number","null"]}}}},"required":["dataset","as_of","changes","months","demand_twh","carbon_intensity_gco2_kwh","generation_twh"]},"CountryResponse":{"type":"object","description":"Ember statistics for one country.","properties":{"api_version":{"const":"v1","description":"Always v1 for these files."},"publisher":{"type":"string","description":"Publisher name, World Power Monitor."},"id":{"type":"string","description":"Country id.","pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},"name":{"type":"string","description":"Country or region name."},"iso3":{"type":["string","null"],"description":"ISO 3166-1 alpha-3 code; null for aggregates."},"page":{"type":"string","description":"URL of the country page on this site.","format":"uri"},"attribution":{"type":"array","description":"Ember attribution; keep it with any copy.","items":{"$ref":"#/components/schemas/Attribution"}},"note":{"type":"string","description":"How to read the numbers."},"annual":{"oneOf":[{"$ref":"#/components/schemas/CountryAnnual"},{"type":"null"}],"description":"Annual series, or null when that dataset is not offered."},"monthly":{"oneOf":[{"$ref":"#/components/schemas/CountryMonthly"},{"type":"null"}],"description":"Monthly series, or null when the country has none."}},"required":["api_version","publisher","id","name","iso3","page","attribution","note","annual","monthly"]},"RegionIndexEntry":{"type":"object","description":"One US grid region in the index.","properties":{"id":{"type":"string","description":"Region id: the file name.","pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},"name":{"type":"string","description":"Region name."},"first_day":{"type":["string","null"],"description":"First day in the file (YYYY-MM-DD)."},"last_day":{"type":["string","null"],"description":"Last day in the file (YYYY-MM-DD)."},"endpoint":{"type":"string","description":"URL of the region file.","format":"uri"}},"required":["id","name","first_day","last_day","endpoint"]},"RegionsResponse":{"type":"object","description":"Index of the US grid regions that have a daily file.","properties":{"api_version":{"const":"v1","description":"Always v1 for these files."},"publisher":{"type":"string","description":"Publisher name, World Power Monitor."},"attribution":{"$ref":"#/components/schemas/Attribution"},"note":{"type":"string","description":"Scope note. The Lower 48 region overlaps the others; do not add them together."},"regions":{"type":"array","description":"One entry per region.","items":{"$ref":"#/components/schemas/RegionIndexEntry"}}},"required":["api_version","publisher","attribution","note","regions"]},"RegionResponse":{"type":"object","description":"Daily demand and generation for one US grid region, from EIA operator data.","properties":{"api_version":{"const":"v1","description":"Always v1 for these files."},"dataset":{"const":"eia-us-grid-daily","description":"Dataset id."},"publisher":{"type":"string","description":"Publisher name, World Power Monitor."},"attribution":{"$ref":"#/components/schemas/Attribution"},"changes":{"type":"string","description":"What World Power Monitor changed from the source."},"id":{"type":"string","description":"Region id.","pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},"name":{"type":"string","description":"Region name."},"as_of":{"type":"string","description":"Last day in the file.","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"timezone":{"type":"string","description":"Time zone label of the daily boundaries, as published by EIA (for example Central)."},"note":{"type":"string","description":"How to read the numbers."},"first_day":{"type":"string","description":"First day in the file.","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"last_day":{"type":"string","description":"Last day in the file.","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"dates":{"type":"array","description":"One date per day, ascending, no gaps.","items":{"type":"string","description":"Day (YYYY-MM-DD).","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"demand_mwh":{"type":"array","description":"Electricity demand per day, MWh; null where missing or reported as exactly zero.","items":{"type":["number","null"]}},"net_generation_mwh":{"type":"array","description":"Net generation per day, MWh; null where missing or reported as exactly zero.","items":{"type":["number","null"]}},"interchange_mwh":{"type":"array","description":"Net interchange with neighbouring regions per day, MWh.","items":{"type":["number","null"]}},"generation_mwh":{"type":"object","description":"Net generation by fuel per day, MWh; null where EIA reported none. Keys are fuel ids (coal, gas, oil, other_fossil, nuclear, hydro, wind, solar, bioenergy, geothermal, other_renewables, storage, other); only fuels with data for this file appear.","additionalProperties":{"type":"array","items":{"type":["number","null"]}}}},"required":["api_version","dataset","publisher","attribution","changes","id","name","as_of","timezone","note","first_day","last_day","dates","demand_mwh","net_generation_mwh","interchange_mwh","generation_mwh"]},"FlowBorder":{"type":"object","description":"Physical flow across one border between two zones, summed over the window.","properties":{"zone_a":{"type":"string","description":"First zone id."},"zone_a_name":{"type":"string","description":"First zone name."},"zone_b":{"type":"string","description":"Second zone id."},"zone_b_name":{"type":"string","description":"Second zone name."},"a_to_b_mwh":{"type":["number","null"],"description":"Energy that flowed from A to B, MWh."},"b_to_a_mwh":{"type":["number","null"],"description":"Energy that flowed from B to A, MWh."},"net_a_to_b_mwh":{"type":["number","null"],"description":"Net flow, MWh; positive when the net flow goes from A to B."}},"required":["zone_a","zone_a_name","zone_b","zone_b_name","a_to_b_mwh","b_to_a_mwh","net_a_to_b_mwh"]},"FlowZone":{"type":"object","description":"Imports and exports of one zone over the window.","properties":{"zone_id":{"type":"string","description":"Zone id."},"zone":{"type":"string","description":"Zone name."},"exports_mwh":{"type":["number","null"],"description":"Total exports, MWh."},"imports_mwh":{"type":["number","null"],"description":"Total imports, MWh."},"net_exports_mwh":{"type":["number","null"],"description":"Exports minus imports, MWh."}},"required":["zone_id","zone","exports_mwh","imports_mwh","net_exports_mwh"]},"FlowsResponse":{"type":"object","description":"Physical cross border flows between European zones over a dated window, from ENTSO-E operator data.","properties":{"api_version":{"const":"v1","description":"Always v1 for these files."},"dataset":{"const":"europe-cross-border-flows","description":"Dataset id."},"publisher":{"type":"string","description":"Publisher name, World Power Monitor."},"attribution":{"$ref":"#/components/schemas/Attribution"},"changes":{"type":"string","description":"What World Power Monitor changed from the source."},"as_of":{"type":"string","description":"Last day of the window.","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"period_start":{"type":"string","description":"First day of the window.","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"period_end":{"type":"string","description":"Last day of the window.","format":"date","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"days":{"type":"integer","description":"Days in the window."},"note":{"type":"string","description":"How to read the flows."},"borders":{"type":"array","description":"One entry per border.","items":{"$ref":"#/components/schemas/FlowBorder"}},"zones":{"type":"array","description":"One entry per zone.","items":{"$ref":"#/components/schemas/FlowZone"}}},"required":["api_version","dataset","publisher","attribution","changes","as_of","period_start","period_end","days","note","borders","zones"]},"IndexEndpoint":{"type":"object","description":"One endpoint of a dataset.","properties":{"path":{"type":"string","description":"Path template."},"url":{"type":"string","description":"Full URL or URL template."},"summary":{"type":"string","description":"What it returns."}},"required":["path","url","summary"]},"IndexDataset":{"type":"object","description":"One dataset served by the API.","properties":{"id":{"type":"string","description":"Dataset id."},"name":{"type":"string","description":"Dataset name."},"coverage":{"type":"string","description":"Coverage in words."},"as_of":{"type":"string","description":"Last year, month or day in the dataset."},"temporal_coverage":{"type":"string","description":"Time span as ISO 8601 start/end."},"update_cadence":{"type":"string","description":"How often the source publishes and when the files change."},"changes":{"type":"string","description":"What World Power Monitor changed from the source."},"attribution":{"$ref":"#/components/schemas/Attribution"},"endpoints":{"type":"array","description":"Endpoints that serve this dataset.","items":{"$ref":"#/components/schemas/IndexEndpoint"}}},"required":["id","name","coverage","as_of","temporal_coverage","update_cadence","changes","attribution","endpoints"]},"IndexResponse":{"type":"object","description":"Datasets served by the API, with coverage, cadence, attribution and endpoints.","properties":{"api_version":{"const":"v1","description":"Always v1 for these files."},"publisher":{"type":"string","description":"Publisher name, World Power Monitor."},"docs":{"type":"string","description":"URL of the documentation page.","format":"uri"},"openapi":{"type":"string","description":"URL of this OpenAPI document.","format":"uri"},"note":{"type":"string","description":"Scope note."},"datasets":{"type":"array","description":"One entry per dataset in this build.","items":{"$ref":"#/components/schemas/IndexDataset"}}},"required":["api_version","publisher","docs","openapi","note","datasets"]}},"parameters":{"CountryId":{"name":"id","in":"path","required":true,"description":"Country id, the slug used in /countries/<id>/ (215 ids in this build). The full list is countries[].id in /api/v1/countries.json.","schema":{"type":"string","pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},"examples":{"germany":{"value":"germany"},"united-states":{"value":"united-states"},"china":{"value":"china"}},"x-id-index":{"path":"/api/v1/countries.json","field":"countries[].id","count":215}},"RegionId":{"name":"id","in":"path","required":true,"description":"US grid region id (14 in this build: eia-california, eia-carolinas, eia-central, eia-florida, eia-mid-atlantic, eia-midwest, eia-new-england, eia-new-york, eia-northwest, eia-southeast, eia-southwest, eia-tennessee, eia-texas, eia-us-lower-48). The full list is regions[].id in /api/v1/regions.json.","schema":{"type":"string","pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},"examples":{"eia-texas":{"value":"eia-texas"}},"x-id-index":{"path":"/api/v1/regions.json","field":"regions[].id","count":14}}}},"externalDocs":{"description":"Documentation, examples and attribution lines","url":"https://worldpowermonitor.com/api/"},"x-datasets":[{"id":"ember-annual","name":"Annual electricity generation, demand and emissions by country","layer":"ember","coverage":"215 countries, 1985 to 2025","as_of":"2025","update_cadence":"Ember publishes annual figures as national statistics arrive, mostly once a year, with revisions. The files are rebuilt from the latest Ember release with every site build.","attribution":{"source":"Ember","source_url":"https://ember-energy.org/","attribution":"Source: Ember (ember-energy.org), licensed under CC BY 4.0.","licence":"CC BY 4.0","licence_url":"https://creativecommons.org/licenses/by/4.0/"}},{"id":"ember-monthly","name":"Monthly electricity generation and demand by country","layer":"ember","coverage":"88 countries, 1999-01 to 2026-09","as_of":"2026-09","update_cadence":"Ember adds a month of data as national sources publish it, usually a month or two after the month ends. The file is rebuilt from the latest release with every site build.","attribution":{"source":"Ember","source_url":"https://ember-energy.org/","attribution":"Source: Ember (ember-energy.org), licensed under CC BY 4.0.","licence":"CC BY 4.0","licence_url":"https://creativecommons.org/licenses/by/4.0/"}},{"id":"eia-us-grid-daily","name":"US grid region daily electricity demand and generation","layer":"operator","coverage":"14 US grid regions, 2025-09-23 to 2026-10-27","as_of":"2026-10-27","update_cadence":"EIA publishes hourly grid data with a lag of about one hour for demand and up to 13 hours for generation by fuel. Daily totals are rebuilt with every site build and cover a rolling window of about 400 days.","attribution":{"source":"U.S. Energy Information Administration","source_url":"https://www.eia.gov/","attribution":"Source: U.S. Energy Information Administration (EIA).","licence":"US Government work, public domain","licence_url":"https://www.eia.gov/about/copyrights_reuse.php"}},{"id":"europe-cross-border-flows","name":"European cross border physical electricity flows","layer":"operator","coverage":"88 borders, 2026-09-28 to 2026-10-27 (30 days)","as_of":"2026-10-27","update_cadence":"A rolling 30 day window, rebuilt with every site build from the latest ENTSO-E physical flow data.","attribution":{"source":"ENTSO-E Transparency Platform","source_url":"https://transparency.entsoe.eu/","attribution":"Source: ENTSO-E Transparency Platform (transparency.entsoe.eu), CC BY 4.0. Aggregated and converted by World Power Monitor; ENTSO-E does not endorse this site.","licence":"ENTSO-E Terms of Use plus CC BY 4.0 for listed data items","licence_url":"https://transparencyplatform.zendesk.com/hc/en-us/articles/40921911218961-Legal-Terms-and-Conditions"}}]}
