CO2 & emissions
The difference between the measured and estimated CO2 fields, the NEDC/WLTP split that makes a standard tag mandatory, which sources publish a figure, and how to render it without overclaiming.
Roughly half of EU auction lots publish a CO2 figure and the rest publish nothing at all. The API therefore carries two CO2 fields with deliberately different meanings, plus a third that says which test standard the second one is on. Rendering them as one number is the single most common way to get emissions wrong.
| Field | Type | What it is |
|---|---|---|
co2 | integer | null | Measured. The figure the auction house itself published, in g/km. null on the roughly half of lots that publish none. Carries no standard tag. |
co2_estimated | integer | null | Derived. Inferred for lots that publish nothing, from other lots of the same specification. Never a measured value. null wherever the specification does not decide it. |
co2_estimated_standard | "NEDC" | "WLTP" | null | Which EU test cycle co2_estimated is expressed on. Always read the estimate together with this. |
The two standards, and why it matters
EU registration documents declared NEDC-correlated CO2 through 2020 and switched to WLTP from 1 January 2021. The same physical car reads 12–25% higher under WLTP. Nothing about the car changed; the test did.
| Specification | Registered ≤2020 (NEDC) | Registered ≥2021 (WLTP) | Step |
|---|---|---|---|
| Peugeot 5008 Petrol 96 kW | 115–121 | 145–150 | +25% |
| Peugeot 3008 Petrol 96 kW | 114–120 | 140–144 | +21% |
| BMW 1-series Diesel 85 kW | 100–104 | 111–120 | +17% |
| VW Passat Diesel 110 kW | 106–113 | 127–128 | +15% |
| VW Tiguan Diesel 110 kW | 127–129 | 140–144 | +12% |
| BMW X1 Diesel 85 kW | 104 | 117 | +12% |
Which sources publish a measured figure
| Source | Measured co2 | Notes |
|---|---|---|
openlane | Yes | Published on the listing itself. |
ecarstrade | Yes | From the specification table on the listing. |
auto1 | Yes | Published with the vehicle specification. |
copart | Effectively no | Present on a fraction of a percent of lots. |
schadeautos | No | Publishes none. |
encar | No | Korean market — homologated on a different cycle entirely. |
japanauction | No | Japanese market — homologated on JC08/WLTC, not an EU cycle. |
Which lots can carry an estimate
Only EU-market lots: openlane, auto1, ecarstrade and schadeautos. Korean and Japanese cars are homologated on JC08/WLTC and American salvage on the EPA cycle — no EU figure exists for them, so producing one would not be imprecision, it would be a category error. Those lots carry null in both CO2 fields and that is correct.
Within the eligible set, an estimate is produced only where the specification decides the answer with enough confidence — matched on standard, make, model, fuel, engine power in kW and, where possible, year. Where the specification does not pin it down, the field stays null rather than guessing. Coverage is deliberately traded away for accuracy: a broader rule that filled far more lots was measured, found to land within 10 g/km only about a third of the time, and rejected.
Rendering it correctly
function co2Label(auction) {
// A measured figure wins. Note it carries no standard tag — infer the era
// from registration year if you need to compare across 2020/2021.
if (auction.co2 != null) {
return { value: auction.co2, measured: true, standard: null };
}
// An estimate is only meaningful with its standard attached.
if (auction.co2_estimated != null) {
return {
value: auction.co2_estimated,
measured: false,
standard: auction.co2_estimated_standard, // "NEDC" | "WLTP"
};
}
// Neither. Common, and correct — most non-EU lots will land here.
return null;
}- Show the provenance. "142 g/km" and "≈142 g/km (WLTP, estimated)" are different claims. Your users can tell, and so can anyone auditing your listing.
- Do not sort or filter on
co2_estimated. It isnullon most lots, so any ordering that uses it drops them without saying so. Sort onco2if you must sort at all, and expect the same caveat about mixed eras. - Do not compare a 2019 figure with a 2022 figure. They are different tests. A 12–25% gap between two cars of the same specification is usually the standard, not the engine.
- Do not treat
nullas zero. An electric car and a car that published nothing both render as blank if you do — one of those is very wrong.
Related emissions fields
effluent_standard_group_search on the auction detail carries the vehicle's emissions class where the source publishes it (Euro 5, Euro 6 and so on). It is a separate concept from CO2 — it describes pollutant limits the car was type-approved against, not the carbon it emits — and the two should not be presented as one figure. vehicle_details.specs may also carry source-published emissions and, for electric vehicles, charging figures.