All CategoriesVisitVisitVisitVisitVisit
🌡
Climate
Berkeley Earth API
Berkeley Earth
Berkeley Earth's Berkeley Earth API provides access to surface temperature, ocean temperature, land temperature and more. Global coverage, updated monthly. No authentication required.
Surface temperatureOcean temperatureLand temperatureUncertainty
No AuthFreeMonthlyGlobal
VisitCarbon Monitor API
Carbon Monitor
Carbon Monitor's Carbon Monitor API provides access to daily co2, sectors, countries and more. Global coverage, updated daily. No authentication required.
Daily CO2SectorsCountriesPowerTransportIndustry
No AuthFreeDailyGlobal
VisitClimate TRACE API
Climate TRACE
Climate TRACE's Climate TRACE API provides access to ghg emissions, sectors, countries and more. Global coverage, updated annual. Free tier available.
GHG emissionsSectorsCountriesAssetsTime series
API KeyFreeAnnualGlobal
VisitCopernicus Climate Data Store
Copernicus / EU
EU satellite-based climate data. ERA5 reanalysis, sea level, ice extent.
ERA5 ReanalysisSea Level RiseArctic Ice ExtentClimate ProjectionsSoil Moisture
API KeyFreeDailyGlobal
Quick start
// Copernicus Climate Data Store API
import cdsapi from '@ecmwf/cdsapi';
const c = new cdsapi.Client({ url: process.env.CDS_URL, key: process.env.CDS_KEY });
await c.retrieve('reanalysis-era5-single-levels', {
product_type: 'reanalysis',
variable: '2m_temperature',
year: '2024',
month: '01',
day: '01',
time: '12:00',
format: 'netcdf',
}, 'download.nc');
console.log('ERA5 data downloaded');Global Carbon Project
Global Carbon Project
Annual global CO2 emissions by country and sector since 1750.
CO2 Emissions by CountrySector BreakdownHistorical TrendCarbon BudgetLand Use Change
No AuthFreeAnnualGlobal
Quick start
// GCP data via Our World in Data
const res = await fetch(
'https://raw.githubusercontent.com/owid/co2-data/master/owid-co2-data.json'
);
const data = await res.json();
const usData = data['United States'];
const recent = usData.data.slice(-3);
recent.forEach(d => console.log(`${d.year}: ${d.co2?.toFixed(1)} MtCO2`));Global Warming API
Global Warming
Global Warming's Global Warming API provides access to co2 concentration, methane, nitrous oxide and more. Global coverage, updated daily. No authentication required.
CO2 concentrationMethaneNitrous oxideArctic iceTemperature
No AuthFreeDailyGlobal
VisitMeteomatics Weather API
Meteomatics
Meteomatics's Meteomatics Weather API provides access to temperature, precipitation, wind and more. Global coverage, updated hourly.
TemperaturePrecipitationWindUV indexClimate models
API KeyPaidHourlyGlobal
VisitNASA GISS Surface Temperature
NASA GISS
Global surface temperature anomaly data since 1880. GISTEMP dataset.
Global Temperature AnomalyMonthly RecordsLand vs Ocean TempBaseline Comparison140+ Years of Data
No AuthFreeMonthlyGlobal
Quick start
const res = await fetch(
'https://data.giss.nasa.gov/gistemp/tabledata_v4/GLB.Ts+dSST.json'
);
const data = await res.json();
const recent = data.data.slice(-3);
recent.forEach(row => console.log(`${row[0]}: ${row[13]}°C anomaly (annual avg)`));NOAA Climate Data Online
NOAA
Historical climate data. Temperature, precipitation, and extreme events.
Temperature RecordsPrecipitation HistoryExtreme EventsStation DataSnow & Ice
API KeyFreeDailyGlobal
Quick start
const res = await fetch(
`https://www.ncdc.noaa.gov/cdo-web/api/v2/data?datasetid=GHCND&stationid=GHCND:USW00094728&startdate=2024-01-01&enddate=2024-01-07&limit=10`,
{ headers: { token: process.env.NOAA_API_KEY } }
);
const { results } = await res.json();
results?.forEach(r => console.log(`${r.date}: ${r.datatype} = ${r.value}`));Our World in Data — CO2
Our World in Data
CO2 and greenhouse gas emissions by country. Open dataset on GitHub.
CO2 per CapitaCumulative EmissionsEnergy MixPer-GDP EmissionsHistorical Records
No AuthFreeAnnualGlobal
Quick start
const res = await fetch(
'https://raw.githubusercontent.com/owid/co2-data/master/owid-co2-data.json'
);
const data = await res.json();
const world = data['World'];
const last5 = world.data.slice(-5);
last5.forEach(d => console.log(`${d.year}: ${d.co2?.toFixed(1)} MtCO2 (total), ${d.co2_per_capita?.toFixed(2)} t/person`));