EU Air Quality Attainment Records β EEA
Pricing
from $33.50 / 1,000 aq attainment records
EU Air Quality Attainment Records β EEA
Keyless pay-per-record EEA air-quality attainments β zone, pollutant, objective, exceedance position and count, area and aggregate population exposed, verbatim. Outcomes not regimes. No person data. Gold $0.0335/record.
Pricing
from $33.50 / 1,000 aq attainment records
Rating
0.0
(0)
Developer
NexGen Signal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Keyless. Pay per record. Whether each European air-quality objective is met β exceedance outcomes by zone, pollutant, and year.
This actor turns the European Environment Agency (EEA) Air Quality e-Reporting dataflows into clean, per-record data β whether Europe's official air-quality objectives are met, zone by zone. Each run reads the EEA's keyless DiscoData SQL service and delivers one row per attainment record, structured for air-quality compliance and exposure analysis, reusable with acknowledgement of the EEA, with no personal data of any kind.
What this is, in one paragraph
Under the EU Air Quality Directives, member states report whether each pollutant objective is attained in each zone. This actor reads that attainments dataflow and delivers one record per zone / pollutant / objective / year: the country, zone, pollutant, protection target and objective type; the EXCEEDANCE outcome (position against the assessment thresholds, whether an exceedance occurred, and the numerical and count exceedances); and the exposure context β surface area, ecosystem area, and aggregate population-exposed counts β all carried verbatim. It is the OUTCOME layer of Europe's air-quality assessment, never a health verdict.
Who buys this and for what job
- Air-quality and compliance analysts tracking which zones attain or exceed each objective
- Environmental-health and exposure teams sizing the area and population exposed to exceedances
- Researchers studying air-quality attainment across zones, pollutants, and years
- Data engineers who want the air-quality attainment table as clean rows from a keyless source.
EEA licence β reuse with acknowledgement
One licence rider travels on every record. EEA data may be reused, including commercially, provided the source is acknowledged: "Source: European Environment Agency (EEA)." Where third-party content is marked, it keeps its own terms. These are reported values and status labels as filed β not a compliance verdict.
Zone grain β no person data
The unit of every record is an attainment outcome for a zone, pollutant, and objective β an exceedance line, never a person. The population-exposed and area figures are AGGREGATE statistics, not identifiable persons. There is no contact, operator, or responsible-person field in the source, and none is selected or emitted; the free-text comment and administrative-unit fields are excluded at field selection. A person-key guard runs on every record as a backstop.
Sample output

Real rows from a live run of this actor (first 5 rows, selected columns).
One full record from the same run, exactly as delivered:
{"record_id": "AARE-LT0300_00008_ALT_3hAbove_2022:2022","country": "Lithuania","country_code": "LT","reporting_year": 2022,"attainment_id": "AARE-LT0300_00008_ALT_3hAbove_2022","assessment_regime_id": "ARE-LT0300_00008_ALT_3hAbove_2022","zone_id": "ZON-LT0300","air_pollutant": "NO2","protection_target": "Health","objective_type": "Alert threshold (ALT)","reporting_metric": "Three consecutive hours in exceedance","exceedance_type_id": "final","exceedance_position": "1","is_exceedance": "No","numerical_exceedance": null,"number_of_exceedances": 0,"surface_area": null,"surface_area_unit": null,"population_exposed": null,"ecosystem_area_exposed": null,"ecosystem_area_unit": null,"reference_year": null,"assessment_type": null,"reason": null,"source_data_url": "http://cdr.eionet.europa.eu/lt/eu/aqd/g/envzrad8g/REP_D-LT_LT-EPA_202309_G-final.xml","source": "EEA Air Quality e-Reporting β attainments","source_url": "https://discodata.eea.europa.eu/","licence": "European Environment Agency (EEA) Air Quality e-Reporting β air-quality objective attainments. Reuse is permitted, including for commercial purposes, provided the source is acknowledged: 'Source: European Environment Agency (EEA)'. Third-party content, where marked, keeps its own terms.","attribution": "Source: European Environment Agency (EEA), Air Quality e-Reporting (AQ dataflows).","disclaimer": "Whether official air-quality objectives are met, at zone / pollutant / objective / year / exceedance grain from the EEA Air Quality e-Reporting dataflows. Each record carries, for a pollutant objective in an official zone, the ATTAINMENT/EXCEEDANCE labels (exceedance position against the assessment thresholds, whether an exceedance occurred, and the numerical and count exceedances) β carried VERBATIM, never a health verdict β plus the surface area, ecosystem area, and aggregate population-exposed COUNTS (aggregate statistics, not identifiable persons). Zone grain β there is no contact, operator, or responsible-person field in the source, and none is selected or emitted (free-text comment/administrative-unit fields excluded at field selection); a person-key guard runs on every record as a backstop.","observed_at": "2026-09-25T17:31:29Z"}
Pricing
| Event | Free plan | Bronze | Silver | Gold / Platinum / Diamond |
|---|---|---|---|---|
aq_attainment_record | $0.05 | $0.045 | $0.04 | $0.0335 |
Delivered before charged. Blocked runs and empty results cost nothing.
Input
| Field | Type | Default | Description |
|---|---|---|---|
countryCode | string | β | Optional 2-letter country code (e.g. DE, FR). |
year | integer | β | Optional reporting year to filter. |
maxRecords | integer | 500 | Ceiling on records delivered and billed. |
Output
One JSON object per attainment record. Real example (values as reported):
{"record_id": "ATT-AT_60_00020_2020:2020","country": "Austria","country_code": "AT","reporting_year": 2020,"attainment_id": "ATT-AT_60_00020_2020","zone_id": "ZON-AT_60","air_pollutant": "NO2","protection_target": "Health","objective_type": "Limit Value (LV)","exceedance_position": "Below LV","is_exceedance": "false","number_of_exceedances": 0,"population_exposed": 50000,"source": "EEA Air Quality e-Reporting \u2014 attainments","observed_at": "2026-08-22T00:00:00Z"}
An unbilled RUN_RECEIPT records the robots check, the filters, rows seen and delivered, and whether charged equals delivered.
Field reference
Each record is one attainment outcome. Identity: record_id, country, country_code, reporting_year, attainment_id, assessment_regime_id, and zone_id. Objective: air_pollutant, protection_target, objective_type, and reporting_metric. Outcome: exceedance_type_id, exceedance_position, is_exceedance, numerical_exceedance, and number_of_exceedances. Exposure: surface_area, surface_area_unit, population_exposed, ecosystem_area_exposed, and ecosystem_area_unit. Context: reference_year, assessment_type, reason, and source_data_url. Provenance travels on every record: source, source_url, licence, attribution, disclaimer, and observed_at.
How a run works
A run first re-reads the source host's robots posture from your runtime β the EEA DiscoData host β and stops at the door if that ever changes. It pages the air-quality attainment table (filtered to your optional countryCode and optional year), and flattens each row to one record β carrying every status label and value verbatim, never anything person-shaped β delivered before it is charged, so a blocked or empty run costs you nothing. The actor stops at your maxRecords ceiling and records charge_equals_delivered in the receipt.
Coverage and scope
The table holds on the order of 136,800 rows. Because each record carries the zone_id, air_pollutant, objective_type, and is_exceedance, segmenting is straightforward. Pull one slice, or the whole table to seed a warehouse.
Working with the data
The attainments are an outcome ledger, and the fields make them decisive. Because every record carries is_exceedance and exceedance_position alongside number_of_exceedances, an analyst can count, per pollutant and objective, how many zones attained versus exceeded, and the population_exposed and area fields size the human and ecosystem footprint of the exceedances β all as reported, never as this actor's health judgment. The reporting_year tracks change over time.
Identifiers and joins
Every record carries the zone_id and assessment_regime_id, keying each attainment to the fleet's air-quality assessment-regime and method cells (the thresholds and methods behind the outcome) and, via zone/pollutant, to the station-statistics cell β on shared identifiers.
Outcomes versus regimes
The assessment-regime and method cells describe HOW a zone is assessed β the threshold band, the monitoring effort, the method. This cell describes the RESULT β did the zone attain the objective or exceed it, by how much, and how many people and how much area were exposed. Pulling the regime and the attainment together on the shared assessment_regime_id lets a buyer connect the monitoring design to its outcome, the two halves of the air-quality compliance story.
Reading exceedance without over-reading it
The attainment fields are deliberately factual: is_exceedance and exceedance_position say whether and where a zone sits against the assessment thresholds, and number_of_exceedances counts the events β but none of that is a health verdict, and the actor never turns it into one. The population_exposed figure is the reported aggregate count for the zone, useful for sizing footprint, and is carried as a plain number so a buyer can weight or aggregate it themselves rather than inheriting any interpretation.
Cost guidance
One aq_attainment_record per delivered row: cost = rows delivered Γ your plan's per-record price. Scope with countryCode and year to keep runs bounded. 1,000 rows is $50 (Free) / $33.50 (Gold).
Honest limitations
- As reported. Status labels, values, and flags are as filed; this actor reformats, it does not audit or recompute.
- A label, not a verdict. These are reported classifications and outcomes, not an independent compliance or health assessment.
- Acknowledge the EEA. The acknowledgement travels on every record.
- No person data of any kind.
Differentiation
It is distinct from eu-air-quality-assessment-regime-records and eu-air-quality-assessment-method-records β those cells describe the assessment regime and method (the how), while this cell carries the ATTAINMENT outcome (the result); outcomes vs regimes. Its specific job is the EU air-quality objective attainments.
The NexGen Signal family
Part of the NexGen Signal family of pay-per-record data products:
- EU Air Quality Station Statistic Records β EEA
- EU Air Quality Assessment Regime Records β EEA
- EU Air Quality Assessment Method Records β EEA
- EU Air Quality Measure Records β EEA
- Air Quality Monitor Records
Source: European Environment Agency (EEA), Air Quality e-Reporting dataflows (discodata.eea.europa.eu). EEA data may be reused, including commercially, provided the source is acknowledged: "Source: European Environment Agency (EEA)"; marked third-party content keeps its own terms. Zone / pollutant / objective / year grain; population-exposed figures are aggregate statistics; no contact/operator/responsible-person field selected or emitted, free-text comment/administrative-unit fields excluded. No natural-person data of any kind. Values and status labels as filed, not a compliance verdict.