contract 2026-08-19
Data

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.

FieldTypeWhat it is
co2integer | nullMeasured. 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_estimatedinteger | nullDerived. 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" | nullWhich 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.

SpecificationRegistered ≤2020 (NEDC)Registered ≥2021 (WLTP)Step
Peugeot 5008 Petrol 96 kW115–121145–150+25%
Peugeot 3008 Petrol 96 kW114–120140–144+21%
BMW 1-series Diesel 85 kW100–104111–120+17%
VW Passat Diesel 110 kW106–113127–128+15%
VW Tiguan Diesel 110 kW127–129140–144+12%
BMW X1 Diesel 85 kW104117+12%
Median g/km for fixed specifications across the labelled inventory. The 2021 switch is visible as a step, not a trend.

Which sources publish a measured figure

SourceMeasured co2Notes
openlaneYesPublished on the listing itself.
ecarstradeYesFrom the specification table on the listing.
auto1YesPublished with the vehicle specification.
copartEffectively noPresent on a fraction of a percent of lots.
schadeautosNoPublishes none.
encarNoKorean market — homologated on a different cycle entirely.
japanauctionNoJapanese 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

javascript
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;
}
Prefer the measurement, fall back to the estimate, and never silently merge the two.
  • 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 is null on most lots, so any ordering that uses it drops them without saying so. Sort on co2 if 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 null as zero. An electric car and a car that published nothing both render as blank if you do — one of those is very wrong.

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.