Back to EU carbon prices

A dated report for Excel or Google Sheets

Bring EU carbon prices into your daily report

Export the latest EU carbon reading in EUR per tonne of CO2, with its record time. Start with a CSV preview, then connect your account to repeat the export from Python.

Preview your report

Latest available aggregated carbon reading. The record timestamp is not an official settlement date.

Dated observations included in the CSV
SeriesPriceAssessment time (UTC)Record time (UTC)
EU_CARBON_EUREUR 84.18 / tCO2Not supplied2026-09-05T00:26:42.864Z

1. Run the report with your API account

Download the Python 3.9+ script. It uses the standard library, checks the response fields, and replaces the output file only after the complete report passes validation. Set OILPRICEAPI_KEY in your local environment, then run:

python3 market_report.py carbon --output eu-carbon.csv

Already have an account? Get your API key in the dashboard. Keep it in your environment, outside shared spreadsheets and source control. Review dataset access and request limits before scheduling the report.

This script makes one authenticated latest-price request for EU_CARBON_EUR per run. A 401 response needs a valid key; 402 or 403 requires checking account access and email confirmation; 429 requires waiting for quota recovery. Failed requests preserve your previous report.

2. Import the CSV and keep its dates

In Excel, use Data → From Text/CSV. In Google Sheets, use File → Import → Upload. Keep the date columns beside the prices so the next reader can see which observation the report contains. Rerun the script and refresh or reimport the file for the next report.

The carbon CSV contains the EUR/tCO2 value, API as-of time when supplied, record time, export time, and time basis. The API as-of time may fall back to record time. Neither field establishes an official market settlement date; record_time_only makes that limitation explicit.

Use the right carbon series for the report

EU_CARBON_EUR is an aggregated market reading collected on a daily schedule. It is not an official exchange settlement, an auction clearing price, or a certificate of compliance cost. Weekend or holiday records can repeat a prior session. If your report requires a named contract's settlement, confirm that exact instrument and delivery month separately.

The script rejects missing, non-positive, stale or future-dated observations. Its four-day maximum age accommodates a weekend but does not guarantee a fresh trading session. Check the dates against your reporting schedule before use.

This workflow exports the latest snapshot. For a historical model, verify history coverage, date ranges and account access for the requested series. It does not promise a complete archive.