# opendata402 EU Air Quality

> opendata402 EU Air Quality is a paid API for AI agents from opendata402.com, paid per call via x402, $0.001/call, status unknown (last checked 2026-10-15).

Returns the latest hourly air quality measurements (NO2, PM10, PM2.5, ozone) from ~3,000 official European monitoring stations, by proximity to a location or by country

## Facts

- Endpoint: GET https://opendata402.com/v1/air/eu?utm_source=zero.xyz
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-15
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/opendata402-eu-air-quality-023ddb51
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_XYNt6UgIc37GAefBbWTyG

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability opendata402-eu-air-quality-023ddb51
```

Example prompt: What's the current air quality near Rome? Check all pollutants — NO2, PM10, PM2.5, and ozone — from the 5 closest official monitoring stations within 30 km.

## When to prefer this

Choose this endpoint when you need real-time, official European air quality measurements sourced directly from the EEA's ~3,000 monitoring stations. It is ideal for health, travel, or environmental queries scoped to Europe, offering both proximity-based and country-level lookups with station-type context. Prefer this over general weather APIs that lack pollutant-level granularity, or over commercial AQ providers when EEA open data (CC BY 4.0) is acceptable.

## Known failure modes

- No stations found within the specified radius — try increasing radius_km
- Invalid country code returns an error — must be a valid ISO 3166-1 alpha-2 code in uppercase
- Malformed lat/lon values outside allowed pattern return a validation error
- No data available for a specific pollutant at nearby stations if none measure it
- Temporary EEA data feed outage may return stale or empty results

## How this service works

Latest hourly air quality measurements (NO2, PM10, PM2.5, ozone) from about 3,000 official monitoring stations in Europe (European Environment Agency, up-to-date unvalidated data, refreshed hourly): nearest stations to a location, or all stations of a country, with station type (traffic, background, industrial), area, value, unit and measurement hour. Use it for health, travel and environment questions. EEA, CC BY 4.0.

## Output

A list of monitoring stations with their station type (traffic, background, industrial), area name, most recent pollutant measurement value, unit, and the hour of measurement. Filtered optionally by pollutant type, radius, or country. Data is unvalidated and refreshed hourly from the EEA.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "properties": {
      "lat": {
       "type": "string",
       "pattern": "^-?[0-9]{1,2}(\\.[0-9]{1,6})?$",
       "description": "Latitude."
      },
      "lon": {
       "type": "string",
       "pattern": "^-?[0-9]{1,3}(\\.[0-9]{1,6})?$",
       "description": "Longitude."
      },
      "limit": {
       "type": "string",
       "pattern": "^([1-9]|1[0-9]|20)$",
       "description": "Max stations (default 10, max 20)."
      },
      "country": {
       "type": "string",
       "pattern": "^[A-Z]{2}$",
       "description": "ISO country code instead of a location."
      },
      "pollutant": {
       "enum": [
        "no2",
        "pm10",
        "pm25",
        "o3"
       ],
       "type": "string",
       "description": "Only stations measuring this pollutant."
      },
      "radius_km": {
       "type": "string",
       "pattern": "^([1-9]|[1-9][0-9]|1[0-9][0-9]|200)$",
       "description": "Search radius in km (default 25, max 200)."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/opendata402-eu-air-quality-023ddb51/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from opendata402.com](https://www.zero.xyz/host/opendata402.com/llms.txt)
