Copernicus CAMS reanalysis data is among the most valuable environmental datasets ever produced. It covers the entire globe at 0.1° resolution, going back to 2013, with NO₂, PM2.5, ozone, and more — all validated against ground stations and satellite observations.

And yet, actually getting a number out of it is an exercise in frustration.

The CDS API experience

Here's what it takes to get a single month of NO₂ data for Paris using the official CDS API:

import cdsapi
import xarray as xr

# Step 1: register on ECMWF, install cdsapi, write ~/.cdsapirc
c = cdsapi.Client()

# Step 2: submit a request and wait in the queue
c.retrieve(
    'cams-europe-air-quality-reanalyses',
    {
        'variable': 'nitrogen_dioxide',
        'model': 'ensemble',
        'level': '0',
        'type': 'validated_reanalysis',
        'year': '2023',
        'month': '01',
        'format': 'netcdf',
    },
    'paris_no2_2023_01.nc'  # ~190 MB download
)

# Step 3: open the NetCDF, figure out the coordinate system
ds = xr.open_dataset('paris_no2_2023_01.nc')
# ds has dims: time(744), level(1), lat(400), lon(700)
# coordinates are in degrees, variable is in kg/m³, need µg/m³

paris = ds.sel(
    lat=48.85, lon=2.35,
    method='nearest'
)['no2_conc'] * 1e9  # kg/m³ → µg/m³

print(paris.mean().values)  # finally

That's before accounting for the 5–15 minute queue wait, the 190 MB download, and the fact that the variable name, unit, and dimension order differ between product versions. If you want a full year across multiple cities, multiply everything by 12 and run it overnight.

The real cost: at €50/hour for a data scientist's time, a 20-minute setup per query costs more than most monthly Jiskta subscriptions.

The same query with Jiskta

One HTTP request. No download. No NetCDF. No unit conversion.

curl "https://api.jiskta.com/api/v1/climate/query?\
lat=48.85&lon=2.35&\
time_start=2023-01&time_end=2023-01&\
variables=no2&format=stats" \
  -H "X-API-Key: your_key"

# Response in ~18ms:
# {"status":"success","output":"Rows matched: 744\nMin: 2.1\nMax: 61.4\nAverage: 18.7"}

Or in Python, without any special library:

import requests

resp = requests.get(
    "https://api.jiskta.com/api/v1/climate/query",
    params={
        "lat": 48.85, "lon": 2.35,
        "time_start": "2023-01", "time_end": "2023-12",
        "variables": "no2",
        "format": "csv", "aggregate": "monthly",
    },
    headers={"X-API-Key": "your_key"},
)
print(resp.json()["output"])

# lat,lon,year_month,no2_mean
# 48.8500,2.3500,2023-01,18.73
# 48.8500,2.3500,2023-02,14.21
# ...

Side-by-side comparison

Copernicus CDS API

Setup time: 20–40 min
Queue wait: 5–15 min
Download: 190 MB / month
Code: 25+ lines
Unit conversion: manual
Data back to: 2013
Cost: free (but slow)

Jiskta API

Setup time: 2 min
Queue wait: none
Download: ~1 KB response
Code: 5 lines
Unit conversion: built-in
Data back to: 2013
Cost: ~€0.001 / query

What you actually get

Jiskta serves the same underlying Copernicus CAMS reanalysis data — we download it from ECMWF, convert it to a high-performance tile format, and serve it through a REST API with sub-20ms response times.

You get:

  • NO₂, PM2.5, PM10, O₃ — all four CAMS pollutants
  • ERA5 meteorological data — temperature, wind, boundary layer height, precipitation
  • 2013 → present at hourly resolution, 0.1° spatial (~11 km)
  • Ten output modes: hourly, daily, monthly, seasonal, trend (OLS), exceedance hours, percentiles
  • CSV or JSON — no NetCDF, no xarray, no unit conversions

Pricing

Credits are deducted per tile scanned: geographic_tiles × months × variables. A point query (single location, one month, one variable) costs 1 credit. A city-level bbox query (1°×1°, one month) costs 4 credits.

Not sure how much a query will cost before you run it? Add dry_run=true — the API returns the credit estimate immediately without executing the query or touching your balance:

curl "https://api.jiskta.com/api/v1/climate/query?\
area=paris&time_start=2015-01&time_end=2023-12&variables=no2,pm2p5&dry_run=true" \
  -H "X-API-Key: your_key"

# {"status":"dry_run","credits_cost":18,"tiles":9,"rows_estimate":78840}

The Starter pack gives you 9,750 credits for €10 — enough for thousands of point queries or hundreds of regional analyses. New accounts get 500 free credits, no credit card required.

Try it in 2 minutes

Sign up, get your API key, and run your first query before you finish your coffee.

Get started free →