Calculate Travel Emissions
<span class="api-method api-method-get">GET</span> /v1/travel/emissions
Calculate CO2e emissions for passenger travel between two locations.
Request
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 |
Location Parameters
| Parameter |
Type |
Description |
origin_location |
string |
Origin city, address, or airport code |
destination_location |
string |
Destination city, address, or airport code |
Journey Parameters
| Parameter |
Type |
Default |
Description |
transport_mode |
string |
auto |
Transport mode (see below) |
return_trip |
boolean |
false |
Include return journey (doubles emissions) |
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 |
Override Parameters
| Parameter |
Type |
Description |
distance_km |
number |
Override calculated distance |
Output Parameters
| Parameter |
Type |
Default |
Description |
equivalents |
boolean |
false |
Include real-world equivalents |
Transport Modes
| Value |
Description |
auto |
Automatically detect best mode |
flight |
Commercial aviation |
rail |
Train travel |
car |
Personal car |
bus |
Coach/bus |
ferry |
Passenger ferry |
taxi |
Taxi/rideshare |
Cabin Classes (Flights)
| Value |
Multiplier |
Description |
economy |
1.0x |
Standard economy class |
premium_economy |
1.6x |
Premium economy / economy plus |
business |
2.9x |
Business class |
first |
4.0x |
First class |
Fuel Types (Car/Taxi)
| Value |
Description |
petrol |
Petrol/gasoline (default) |
diesel |
Diesel |
hybrid |
Hybrid (HEV) |
phev |
Plug-in hybrid |
bev |
Battery electric vehicle |
Response
{
"data": {
"type": "travel_emission",
"id": "2214775f-b096-47df-88c9-6d4a17c97054",
"attributes": {
"emissions": {
"co2e": 175.548,
"co2e_unit": "kg",
"co2e_calculation_method": "ipcc_ar6_gwp100",
"co2e_grams": 175548,
"per_passenger_kg": 175.548,
"per_passenger_g": 175548,
"equivalents": {
"trees_yearly": {
"value": 8.36,
"label": "trees needed to absorb this CO2 in a year"
},
"driving_km": {
"value": 1032.6,
"label": "km driven in an average car"
},
"smartphone_charges": {
"value": 21944,
"label": "smartphone charges"
}
},
"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"
}
]
},
"direct_emissions": {
"co2e": 140.44,
"co2e_unit": "kg",
"description": "Tank-to-wheel / tailpipe emissions"
},
"indirect_emissions": {
"co2e": 35.11,
"co2e_unit": "kg",
"description": "Well-to-tank / upstream fuel production emissions"
},
"journey": {
"passengers": 1,
"return_trip": false,
"mode": "flight",
"cabin_class": "economy"
},
"vehicle": {
"requested": "auto",
"class_used": "Short-Haul Flight - Economy Class"
},
"route": {
"type": "direct",
"total_distance_km": 1396,
"transport_mode": "flight",
"origin": {
"input": "Edinburgh",
"resolved": "City of Edinburgh, Scotland, United Kingdom",
"country_code": "GB",
"lat": 55.9533,
"lon": -3.1883
},
"destination": {
"input": "Lyon",
"resolved": "Lyon, France",
"country_code": "FR",
"lat": 45.764,
"lon": 4.8357
}
},
"geography": {
"origin_country": "GB",
"destination_country": "FR",
"border_crossing": true
},
"notices": [
{
"message": "DEFRA emission factors include radiative forcing effects for aviation.",
"code": "radiative_forcing_included",
"severity": "info"
}
]
}
},
"meta": {
"methodology": "DEFRA 2025 / ICAO",
"emission_factors_year": 2025,
"standards_compliance": {
"GHG_Protocol": "Scope 3 Category 6 (Business Travel)"
},
"distance_method": "haversine_with_detour_factor",
"includes_radiative_forcing": true,
"calculated_at": "2026-02-07T14:30:00Z"
}
}
Response Fields
emissions
| Field |
Type |
Description |
co2e |
number |
Total CO2 equivalent in kg |
co2e_unit |
string |
Always kg |
per_passenger_kg |
number |
Emissions per passenger |
per_passenger_g |
number |
Emissions per passenger in grams |
equivalents |
object |
Real-world comparisons (if requested) |
source_trail |
array |
Audit trail of emission factors |
journey
| Field |
Type |
Description |
passengers |
integer |
Number of passengers |
return_trip |
boolean |
Whether return is included |
mode |
string |
Transport mode used |
cabin_class |
string |
Cabin class (flights only) |
route
| Field |
Type |
Description |
total_distance_km |
number |
Total journey distance |
transport_mode |
string |
Transport mode |
origin |
object |
Geocoded origin |
destination |
object |
Geocoded destination |
Examples
Flight - Economy Class
curl "https://api.emissions.dev/v1/travel/emissions?\
origin_country=GB&\
origin_location=London&\
destination_country=US&\
destination_location=New+York&\
transport_mode=flight&\
cabin_class=economy" \
-H "Authorization: Bearer em_live_xxxx"
Flight - Business Class with Return
curl "https://api.emissions.dev/v1/travel/emissions?\
origin_country=GB&\
origin_location=London&\
destination_country=JP&\
destination_location=Tokyo&\
transport_mode=flight&\
cabin_class=business&\
return_trip=true" \
-H "Authorization: Bearer em_live_xxxx"
Rail Journey
curl "https://api.emissions.dev/v1/travel/emissions?\
origin_country=GB&\
origin_location=London&\
destination_country=FR&\
destination_location=Paris&\
transport_mode=rail" \
-H "Authorization: Bearer em_live_xxxx"
Car Journey - Petrol
curl "https://api.emissions.dev/v1/travel/emissions?\
origin_country=GB&\
origin_location=Manchester&\
destination_country=GB&\
destination_location=Birmingham&\
transport_mode=car&\
vehicle_type=petrol&\
passengers=2" \
-H "Authorization: Bearer em_live_xxxx"
Electric Car
curl "https://api.emissions.dev/v1/travel/emissions?\
origin_country=NO&\
origin_location=Oslo&\
destination_country=NO&\
destination_location=Bergen&\
transport_mode=car&\
vehicle_type=bev&\
passengers=4" \
-H "Authorization: Bearer em_live_xxxx"
Ferry Crossing
curl "https://api.emissions.dev/v1/travel/emissions?\
origin_country=GB&\
origin_location=Dover&\
destination_country=FR&\
destination_location=Calais&\
transport_mode=ferry" \
-H "Authorization: Bearer em_live_xxxx"
Bus/Coach
curl "https://api.emissions.dev/v1/travel/emissions?\
origin_country=GB&\
origin_location=London&\
destination_country=GB&\
destination_location=Edinburgh&\
transport_mode=bus" \
-H "Authorization: Bearer em_live_xxxx"
Multiple Passengers with Equivalents
curl "https://api.emissions.dev/v1/travel/emissions?\
origin_country=GB&\
origin_location=London&\
destination_country=ES&\
destination_location=Barcelona&\
transport_mode=flight&\
passengers=4&\
equivalents=true" \
-H "Authorization: Bearer em_live_xxxx"
Code Examples
JavaScript
const response = await fetch(
'https://api.emissions.dev/v1/travel/emissions?' + new URLSearchParams({
origin_country: 'GB',
origin_location: 'London',
destination_country: 'FR',
destination_location: 'Paris',
transport_mode: 'flight',
cabin_class: 'business',
passengers: 2
}),
{
headers: {
'Authorization': `Bearer ${process.env.EMISSIONS_API_KEY}`
}
}
);
const data = await response.json();
const emissions = data.data.attributes.emissions;
console.log(`Total: ${emissions.co2e} kg CO2e`);
console.log(`Per passenger: ${emissions.per_passenger_kg} kg CO2e`);
Python
import requests
response = requests.get(
'https://api.emissions.dev/v1/travel/emissions',
params={
'origin_country': 'GB',
'origin_location': 'London',
'destination_country': 'FR',
'destination_location': 'Paris',
'transport_mode': 'flight',
'cabin_class': 'business',
'passengers': 2
},
headers={
'Authorization': f'Bearer {api_key}'
}
)
data = response.json()
emissions = data['data']['attributes']['emissions']
print(f"Total: {emissions['co2e']} kg CO2e")
print(f"Per passenger: {emissions['per_passenger_kg']} kg CO2e")
PHP
$response = Http::withToken($apiKey)
->get('https://api.emissions.dev/v1/travel/emissions', [
'origin_country' => 'GB',
'origin_location' => 'London',
'destination_country' => 'FR',
'destination_location' => 'Paris',
'transport_mode' => 'flight',
'cabin_class' => 'business',
'passengers' => 2,
]);
$data = $response->json();
$emissions = $data['data']['attributes']['emissions'];
echo "Total: {$emissions['co2e']} kg CO2e\n";
echo "Per passenger: {$emissions['per_passenger_kg']} kg CO2e\n";
Complete Trip Emissions
Combine with the Hotel API for full business trip emissions:
# Step 1: Calculate flight emissions
curl "https://api.emissions.dev/v1/travel/emissions?\
origin_country=GB&\
origin_location=London&\
destination_country=AE&\
destination_location=Dubai&\
transport_mode=flight&\
return_trip=true" \
-H "Authorization: Bearer em_live_xxxx"
# Step 2: Calculate hotel emissions
curl "https://api.emissions.dev/v1/hotel/emissions?\
country=AE&\
nights=4" \
-H "Authorization: Bearer em_live_xxxx"
# Step 3: Sum co2e values for total trip emissions
# Both report GHG Protocol Scope 3 Category 6
Errors
Invalid Transport Mode
{
"error": {
"code": "validation_error",
"message": "The selected transport_mode is invalid.",
"field": "transport_mode",
"status": 422
}
}
Invalid Cabin Class
{
"error": {
"code": "validation_error",
"message": "The selected cabin_class is invalid.",
"field": "cabin_class",
"status": 422
}
}
Missing Country
{
"error": {
"code": "validation_error",
"message": "The origin_country field is required.",
"field": "origin_country",
"status": 422
}
}