Train: CO2-emissiefactoren πŸ‡³πŸ‡±

Calculate train travel emissions with the Dutch CO2-emissiefactoren factor set, pinned to a published year and to a tank-to-wheel or well-to-wheel energy scope.

type trainmethodology CO2-EMISSIEFACTOREN-NLYearly sets 2020, 2021, 2023, 2025, 2026Supports audit mode

About the methodology

CO2-emissiefactoren is a leading European reference for robust, harmonised COβ‚‚ emission values across sectors, including rail. For train travel, it reflects operational energy, electricity mix, traction efficiency and, where applicable, infrastructure impacts, so results are consistent, comparable and useful for decisions.

Versions

The factor set is published per year. Set methodology_version (a 4-digit year) to pin a version for reproducible results.

  • Omitted on this endpoint: SQUAKE uses the latest supported year. Train items carry no date, so the year is never inferred here. On the Travel Data API, where activities do carry dates, an omitted methodology_version is derived from the trip or activity start date instead.
  • A year without its own published set: resolves to the most recent prior year (for example 2024 β†’ 2023).
  • A year before the earliest supported set (2020): returns a validation error.

Supported years: 2020, 2021, 2023, 2025, 2026.

Sample requests

Send a quote before booking, then repeat the call with audit set to true once the booking is final. The body is otherwise identical.

{
  "expand": ["items"],
  "items": [{
    "audit": false,
    "type": "train",
    "methodology": "CO2-EMISSIEFACTOREN-NL",
    "external_reference": "test",
    "train_type": "international",
    "fuel_type": "average",
    "origin": "AMS",
    "destination": "BER",
    "number_of_travelers": 1,
    "energy_scope": "ttw"
  }]
}

audit_for is optional

Pass the ID of an auditable entity when you calculate on behalf of that entity. Otherwise, leave it out.

Defaults

FieldDefaultApplies when
train_typeaverageNo train_type is sent
fuel_typeaverageNo fuel_type is sent
energy_scopewtwNo energy_scope is sent
number_of_travelers1No number_of_travelers is sent
methodology_versionlatestNo methodology_version is sent

Mapping intercity

If your integration assumes train_type: intercity as a product-level alias, map it to the dataset's available categories (average or international) according to your business rules.

Request fields

typestringrequired

train

methodologystringrequired

CO2-EMISSIEFACTOREN-NL

methodology_versionstring

Factor year, one of 2020, 2021, 2023, 2025, 2026, or latest. If omitted, the year is derived from the trip or activity start date, and defaults to the latest supported year when no date is available. See Versions.

external_referencestring

A unique identifier that links results to the requested item. Up to 128 characters.

number_of_travelersinteger

Minimum 1. Defaults to 1.

originstring

Origin location. See Origin and destination formats.

destinationstring

Destination location. Same formats as origin.

distance_in_kmnumber

Takes priority over origin and destination. If you send both, SQUAKE uses distance_in_km.

train_typeenum

One of average, international. Defaults to average.

fuel_typeenum

One of diesel, electricity, average. Defaults to average.

energy_scopeenum

Well-to-wheel scope selector, ttw or wtw. Defaults to wtw.

auditboolean

Set to true to create immutable audit records for finalised calculations. Must be enabled for your account.

See every field of POST /v2/calculations in the API reference

Origin and destination formats

SQUAKE tries to resolve origin and destination whatever their format. Ideally, use:

  • Addresses: the Post standard.
  • Airports: an IATA/ICAO code (regex ^[A-Z]{3,4}$, for example "MUC").
  • Ports and trade locations: a UN/LOCODE (regex ^[A-Z]{2}\W?[A-Z2-9]{3}$, for example "DEHAM").
  • Coordinates: latitude and longitude (regex ^[-+]?\d{1,3}\.\d{1,10}\s?,\s?[-+]?\d{1,3}\.\d{1,10}$, for example "+40.712,-74.006").

UIC and provider codes

A UIC code is also a valid format for trains. If the value isn't valid, the system falls back to general, non-journey-specific emission data.

To use a UIC or provider code, send <provider>:<uic_code>, for example sncf:FRAAA. Possible provider prefixes: uic, uic8_sncf, sncf, sncf_tvs, entur, db, busbud, distribusion, flixbus, cff, leoexpress, obb, trenitalia, trenitalia_rtvt, trenord, ntv_rtiv, ntv, hkx, renfe, atoc, benerail, westbahn.

{
  "type": "train",
  "methodology": "CO2-EMISSIEFACTOREN-NL",
  "origin": "db:8011160",        // Berlin Hbf (example code structure)
  "destination": "db:8000105",   // Frankfurt (Main) Hbf (example code structure)
  "number_of_travelers": 1,
  "energy_scope": "wtw"
}

Distance and fallback

  • If you send both origin/destination and distance_in_km, SQUAKE uses distance_in_km for emissions.
  • Invalid, unsupported or unresolvable location codes trigger a fallback to generic (non-journey-specific) factors consistent with the CO2-emissiefactoren methodology.

Sample response

200 OKapplication/json
{
  "carbon_quantity": 10132,
  "carbon_unit": "gram",
  "items": [{
    "carbon_quantity": 10132,
    "carbon_unit": "gram",
    "external_reference": "test",
    "type": "train",
    "methodology": "CO2-EMISSIEFACTOREN-NL",
    "distance": 596.0,
    "distance_unit": "kilometer"
  }]
}

Bibliography

On this page

POST/v2/calculations

Run this request against the sandbox with your test key.

Open in API reference