European Union Emissions Trading System (EU ETS) data from EUTL


Files Size Format Created Updated License Source
2 869kB csv zip 4 months ago 1 day ago ODC-PDDL-1.0 EU ETS data
Data about the EU emission trading system (ETS). The EU emission trading system (ETS) is one of the main measures introduced by the EU to achieve cost-efficient reductions of greenhouse gas emissions and reach its targets under the Kyoto Protocol and other commitments. The data mainly comes from read more

Data Files

File Description Size Last changed Download
eu-ets 5MB csv (5MB) , json (10MB)
eu-emissions-trading-system_zip Compressed versions of dataset. Includes normalized CSV and JSON data with original data and datapackage.json. 828kB zip (828kB)


This is a preview version. There might be more data in the original version.

Field information

Field Name Order Type (Format) Description
country_code 1 string International Country Code (ISO 3166-1-Alpha-2 code elements)
country 2 string Country name
main activity sector name 3 string Main activity label
ETS information 4 string ETS information
year 5 string Annual data mainly in YYYY format, but also may include stings Eg: Total 1st trading period (05-07)
value 6 number measure value
unit 7 string Unit of the measure value (in tonne of CO2-equ.)

Read me

Data about the EU emission trading system (ETS). The EU emission trading system (ETS) is one of the main measures introduced by the EU to achieve cost-efficient reductions of greenhouse gas emissions and reach its targets under the Kyoto Protocol and other commitments. The data mainly comes from the EU Transaction Log (EUTL).


Aggregated data on greenhouse gas emissions and allowances.

Geographic coverage

Austria, Belgium, Bulgaria, Croatia, Cyprus, Czech Republic, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Iceland, Ireland, Italy, Latvia, Liechtenstein, Lithuania, Luxembourg, Malta, Netherlands, Norway, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden, United Kingdom

Temporal coverage





Python 2 together with modules urllib and zipfile are required in order to process the data.


Run the following script from this directory to download and process the data:



The raw data are output to ./tmp. The processed data are output to ./data.



Data are sourced from European Environment Agency and no copyright restrictions are applied. More specifically:

EEA aspires to promote the sharing of environmental data. In agreeing to share, data providers need to have assurance that their data are properly handled, disseminated and acknowledged following similar principles and rules across countries and stakeholders.*

Additional work

All the additional work done to build this Data Package is made available under the Public Domain Dedication and License v1.0 whose full text can be found at:


  1. EEA standard re-use policy: unless otherwise indicated, re-use of content on the EEA website for commercial or non-commercial purposes is permitted free of charge, provided that the source is acknowledged ( Copyright holder: Directorate-General for Climate Action (DG-CLIMA).

Import into your tool

Data-cli or just data is the program to get and post your data with the datahub.
Use data with the almost like you use git with the github. Here is installation instructions.

data get
tree core/eu-emissions-trading-system

Also you can get the data using cURL:

# Get a list of dataset's resources
curl -L -s | grep path

# Get resources



If you are using R here's how to get the data you want quickly loaded:

install.packages("jsonlite", repos="")

json_file <- ''
json_data <- fromJSON(paste(readLines(json_file), collapse=""))

# get list of all resources:

# print all tabular data(if exists any)
for(i in 1:length(json_data$resources$datahub$type)){
    path_to_file = json_data$resources$path[i]
    data <- read.csv(url(path_to_file))

Note: You might need to run the script with root permissions if you are running on Linux machine

In order to work with Data Packages in Pandas you need to install the Frictionless Data data package library and the pandas extension:

import datapackage
import pandas as pd

data_url = ''

# to load Data Package into storage
package = datapackage.Package(data_url)

# to load only tabular data
resources = package.resources
for resource in resources:
    if resource.tabular:
        data = pd.read_csv(resource.descriptor['path'])
        print (data)

For Python, first install the `datapackage` library (all the datasets on DataHub are Data Packages):

pip install datapackage

To get Data Package into your Python environment, run following code:

from datapackage import Package

package = Package('')

# print list of all resources:

# print processed tabular data (if exists any)
for resource in package.resources:
    if resource.descriptor['datahub']['type'] == 'derived/csv':

If you are using JavaScript, please, follow instructions below:

Install data.js module using npm:

  $ npm install data.js

Once the package is installed, use the following code snippet:

const {Dataset} = require('data.js')

const path = ''

// We're using self-invoking function here as we want to use async-await syntax:
;(async () => {
  const dataset = await Dataset.load(path)
  // get list of all resources:
  for (const id in dataset.resources) {
  // get all tabular data(if exists any)
  for (const id in dataset.resources) {
    if (dataset.resources[id]._descriptor.format === "csv") {
      const file = dataset.resources[id]
      // Get a raw stream
      const stream = await
      // entire file as a buffer (be careful with large files!)
      const buffer = await file.buffer
      // print data