Travel API
Calculate CO2e emissions for passenger travel across flights, rail, car, bus, ferry, and taxi.
<div class="admonition admonition-tip"><span class="admonition-icon">💡</span><div class="admonition-content"><p>Complete Trip Emissions
Pair the Travel API with the <a href="/docs/api/hotel">Hotel API</a> for complete business trip emissions (Scope 3 Category 6). Two calls — transport + accommodation — gives you the full picture.</p>
</div></div>
Endpoint
<span class="api-method api-method-get">GET</span> /v1/travel/emissions
Parameters
Required Parameters
| Parameter |
Type |
Description |
origin_country |
string |
Origin country code (ISO 3166-1 alpha-2) |
destination_country |
string |
Destination country code |
passengers |
integer |
1 |
Optional Parameters
| Parameter |
Type |
Default |
Description |
origin_location |
string |
- |
Origin city or airport code |
destination_location |
string |
- |
Destination city or airport code |
transport_mode |
string |
auto |
flight, rail, car, bus, ferry, taxi |
return_trip |
boolean |
false |
Include return journey |
equivalents |
boolean |
false |
Include real-world equivalents |
Flight Parameters
| Parameter |
Type |
Default |
Description |
cabin_class |
string |
economy |
economy, premium_economy, business, first |
Car/Taxi Parameters
| Parameter |
Type |
Default |
Description |
vehicle_type |
string |
average |
small, medium, large, average |
vehicle_type |
string |
petrol |
petrol, diesel, hybrid, phev, bev |
Example Request
curl "https://api.emissions.dev/v1/travel/emissions?\
origin_country=GB&\
origin_location=Edinburgh&\
destination_country=FR&\
destination_location=Lyon&\
transport_mode=flight&\
cabin_class=economy&\
passengers=1" \
-H "Authorization: Bearer em_live_xxxxxxxxxxxx"
Example Response
{
"data": {
"type": "travel_emission",
"id": "2214775f-b096-47df-88c9-6d4a17c97054",
"attributes": {
"emissions": {
"co2e": 175.55,
"co2e_unit": "kg",
"co2e_calculation_method": "ipcc_ar6_gwp100",
"per_passenger_kg": 175.55,
"source_trail": [
{
"data_category": "emission_factor",
"name": "Short-Haul Flight - Economy Class",
"source": "DEFRA / ICAO",
"source_dataset": "Greenhouse gas reporting: conversion factors 2025",
"year": "2025",
"region": "GB"
}
]
},
"journey": {
"passengers": 1,
"return_trip": false,
"mode": "flight",
"cabin_class": "economy"
},
"route": {
"total_distance_km": 1396,
"transport_mode": "flight",
"origin": {
"input": "Edinburgh",
"resolved": "City of Edinburgh, Scotland, United Kingdom",
"lat": 55.9533,
"lon": -3.1883
},
"destination": {
"input": "Lyon",
"resolved": "Lyon, France",
"lat": 45.764,
"lon": 4.8357
}
}
}
},
"meta": {
"methodology": "DEFRA 2025 / ICAO",
"emission_factors_year": 2025,
"includes_radiative_forcing": true,
"calculated_at": "2026-02-07T14:30:00Z"
}
}
Cabin Class Multipliers
Flight emissions vary significantly by cabin class:
| Cabin Class |
Multiplier |
Example (1000km) |
| Economy |
1.0x |
125 kg |
| Premium Economy |
1.6x |
200 kg |
| Business |
2.9x |
362 kg |
| First |
4.0x |
500 kg |
Location-Aware EVs
For electric vehicles (vehicle_type=bev or vehicle_type=phev), we calculate emissions using the origin country's electricity grid carbon intensity.
| Country |
Grid Intensity |
100km EV Journey |
| Norway |
26 g/kWh |
0.54 kg CO2e |
| France |
56 g/kWh |
1.16 kg CO2e |
| UK |
207 g/kWh |
4.31 kg CO2e |
| Germany |
350 g/kWh |
7.28 kg CO2e |
| Poland |
635 g/kWh |
13.21 kg CO2e |
<div class="admonition admonition-info"><span class="admonition-icon">ℹ️</span><div class="admonition-content"><p>Data source: Ember Climate Global Electricity Review 2025</p>
</div></div>
Radiative Forcing
Our DEFRA 2025 emission factors for flights already include radiative forcing - the additional warming effect of emissions at high altitude. No separate multiplier is needed.
Transport Modes
| Mode |
Description |
flight |
Commercial aviation |
rail |
Train travel |
car |
Personal car |
bus |
Coach/bus |
ferry |
Passenger ferry |
taxi |
Taxi/rideshare |
Complete Trip Emissions
Combine the Travel API with the Hotel API to calculate full business trip emissions:
// London → Tokyo business trip: flights + 4 nights hotel
const [travel, hotel] = await Promise.all([
fetch('https://api.emissions.dev/v1/travel/emissions?' + new URLSearchParams({
origin_country: 'GB',
origin_location: 'London',
destination_country: 'JP',
destination_location: 'Tokyo',
transport_mode: 'flight',
cabin_class: 'business',
return_trip: true
}), { headers: { Authorization: `Bearer ${apiKey}` } }),
fetch('https://api.emissions.dev/v1/hotel/emissions?' + new URLSearchParams({
country: 'JP',
nights: 4
}), { headers: { Authorization: `Bearer ${apiKey}` } })
]);
const t = (await travel.json()).data.attributes.emissions;
const h = (await hotel.json()).data.attributes.emissions;
console.log(`Flights: ${t.co2e} kg CO2e`);
console.log(`Hotel: ${h.co2e} kg CO2e`);
console.log(`Total: ${t.co2e + h.co2e} kg CO2e`);
// Both endpoints report GHG Protocol Scope 3 Category 6