Travel Emissions
Carbon API
Calculate CO2e for flights, trains, cars, and ferries. Location-aware EV calculations. Real road routing. Cabin class multipliers. Accurate transport emissions in one API call.
Transparent pricing · 500 free requests/month · No sales calls
"co2e": 22.4,
"co2e_unit": "kg",
"per_passenger_kg": 22.4,
"direct_emissions": 18.1,
"indirect_emissions": 4.3,
"route": {
"distance_km": 459,
"return_trip": true
},
"ghg_scope": "Scope 3 Cat 6"
}
Not just another carbon calculator
Features that actually matter for accurate emissions reporting.
Location-Aware EVs
EV in Norway (26g/kWh) vs Poland (635g/kWh)? We use real grid intensity for 110+ countries. Not a generic "electric = green" assumption.
Unique featureReal Road Routing
Actual driving distances via road network, not "as the crow flies" + 20%. Oslo→Bergen: 461km real vs 309km haversine.
48% more accurateCabin Class Multipliers
Business class uses 3x the floor space of economy. First class uses 4x. We apply DEFRA's cabin class factors automatically.
DEFRA 2025Full Source Trail
Every response includes factor source, dataset version, year, and region. Hand it straight to your auditors.
Audit-readyEvery travel mode. One API.
Flights, trains, cars, ferries, and buses — all with DEFRA 2025 factors.
Flights
Domestic, short-haul, and long-haul with cabin class multipliers (economy → first). Radiative forcing included by default.
mode=flight&cabin_class=business
Rail
National rail, Eurostar, international. Includes light rail and tram for urban journeys.
mode=rail&vehicle_type=eurostar
Car & Taxi
Petrol, diesel, hybrid, BEV, PHEV. Location-aware EV emissions using local grid intensity.
mode=car&vehicle_type=bev
Ferry
Foot passenger and car ferry. Accurate for UK-EU crossings and island routes.
mode=ferry&vehicle_type=foot
Bus & Coach
Local bus and long-distance coach. Low-carbon option for intercity travel.
mode=bus&vehicle_type=coach
Flight vs rail: the numbers speak
On most European routes under 800km, rail produces 80–95% less CO₂ than flying. Give your users the data to make informed choices.
Per passenger, one way. DEFRA 2025 factors with radiative forcing for flights.
// Show carbon comparison on search results
const [flight, rail] = await Promise.all([
fetch(`/v1/travel/emissions?` +
`origin_country=GB&origin_location=London` +
`&destination_country=FR&destination_location=Paris` +
`&transport_mode=air&passengers=1`),
fetch(`/v1/travel/emissions?` +
`origin_country=GB&origin_location=London` +
`&destination_country=FR&destination_location=Paris` +
`&transport_mode=rail&passengers=1`)
]);
const f = (await flight.json()).data.attributes;
const r = (await rail.json()).data.attributes;
const saving = Math.round(
(1 - r.emissions.co2e / f.emissions.co2e) * 100
);
// Display:
// ✈️ Flight: 121 kg CO₂e · 1h 15m · £89
// 🚄 Eurostar: 11 kg CO₂e · 2h 16m · £78
// 🌱 91% less carbon by rail
//
// For 50 employees/year: saves 5,500 kg CO₂e
Cabin class changes everything
A business class seat takes up 3x the floor space of economy. That means 3x the emissions per passenger. First class? 4x. Most carbon calculators ignore this.
London Heathrow → New York JFK, one way. DEFRA 2025 long-haul factors.
// Same flight, different cabin = different emissions
{
"emissions": {
"co2e": 1409,
"co2e_unit": "kg",
"per_passenger_kg": 1409
},
"journey": {
"passengers": 1,
"mode": "flight",
"cabin_class": "business"
},
"route": {
"total_distance_km": 5570,
"origin": "London Heathrow",
"destination": "New York JFK"
},
"notices": [{
"message": "DEFRA factors include radiative forcing",
"code": "radiative_forcing_included"
}]
}
// Tip: cabin_class defaults to economy
// Options: economy, premium_economy, business, first
EVs aren't zero-emission everywhere
An electric car in Norway (98% hydro) produces 95% less CO₂ than the same car in Poland (70% coal). We calculate using real grid intensity for 110+ countries.
Source: Ember Climate Global Electricity Review 2025
// Oslo to Bergen (461 km) - Norway grid
{
"co2e": 2.48,
"vehicle_type": "electric",
"notice": "Using Norway grid (26 gCO₂e/kWh)"
}
// Same distance in Poland
{
"co2e": 58.52,
"vehicle_type": "electric",
"notice": "Using Poland grid (635 gCO₂e/kWh)"
}
// 23x difference for the same car, same distance
Real roads, not straight lines
Most APIs calculate distance "as the crow flies" then add a flat 20% detour factor. We use actual road routing via OpenRouteService — because roads go around mountains, not through them.
Mountainous and coastal routes show the largest differences. Flat terrain (e.g. London → Birmingham) is closer to straight-line.
// Oslo to Bergen by car
{
"route": {
"type": "direct",
"total_distance_km": 461,
"transport_mode": "car",
"origin": {
"input": "Oslo",
"resolved": "Oslo, Norway",
"lat": 59.913,
"lon": 10.739
},
"destination": {
"input": "Bergen",
"resolved": "Bergen, Vestland, Norway",
"lat": 60.392,
"lon": 5.324
},
"estimated_duration_seconds": 25200
}
}
// Haversine would give 309 km
// Real road: 461 km (49% longer)
// That's 49% more emissions if you use straight-line
Built for product teams
See how expense platforms, booking sites, and event software integrate travel carbon emissions.
Expense Platforms
Add a "Carbon Footprint" column to expense reports. Give finance teams the Scope 3 data they keep asking for.
- Auto-calculate CO2e from receipt data
- Export carbon data alongside expenses
- Track employee travel footprint over time
- Add the Scope 3 column that SAP Concur charges six figures for
Add Scope 3 reporting in 2 days, not 2 quarters.
// Calculate emissions for an expense receipt
async function enrichExpenseWithCarbon(expense) {
if (expense.category !== 'travel') return expense;
const response = await fetch(
`https://api.emissions.dev/v1/travel/emissions?` +
`origin_country=${expense.departure_country}` +
`&origin_location=${expense.departure_city}` +
`&destination_country=${expense.arrival_country}` +
`&destination_location=${expense.arrival_city}` +
`&transport_mode=${expense.travel_mode}&passengers=1`,
{ headers: { Authorization: `Bearer ${API_KEY}` }}
);
const data = await response.json();
return {
...expense,
co2e_kg: data.data.attributes.emissions.co2e,
// Now visible in expense exports & reports
};
}
Travel Booking Sites
Show carbon impact at checkout. Help eco-conscious travellers choose lower-carbon options.
- Display CO2e per booking option
- Compare flight vs train at search time
- Offer carbon offset at checkout
- Cabin class emissions on flight results
// Add carbon labels to flight search results
async function addCarbonToResults(flights) {
return Promise.all(flights.map(async (flight) => {
const r = await fetch(
`/v1/travel/emissions?` +
`origin_country=${flight.from_country}` +
`&destination_country=${flight.to_country}` +
`&transport_mode=air` +
`&cabin_class=${flight.cabin}`
).then(r => r.json());
return {
...flight,
co2e_kg: r.data.attributes.emissions.co2e,
// 🌱 Show green badge for lowest carbon option
};
}));
}
Event & Conference Software
Calculate the travel footprint of your entire event. Get the number for your sustainability report in minutes.
- Batch calculate 5,000+ attendees
- Origin city → venue emissions
- Total event carbon footprint
- Per-attendee breakdown for reporting
The easiest way to calculate your event's travel footprint.
# Calculate total event travel emissions
import requests
def calculate_event_footprint(attendees, venue):
total_co2e = 0
for attendee in attendees:
response = requests.get(
"https://api.emissions.dev/v1/travel/emissions",
headers={"Authorization": f"Bearer {API_KEY}"},
params={
"origin_country": attendee['country'],
"origin_location": attendee['city'],
"destination_country": venue['country'],
"destination_location": venue['city'],
"transport_mode": "air",
"return_trip": True,
}
)
co2e = response.json()['data']['attributes']['emissions']['co2e']
total_co2e += co2e
return total_co2e
# TechCrunch Disrupt: 847 tonnes CO₂e from 3,200 attendees
Corporate Travel Policy
Set carbon budgets per trip. Flag bookings that exceed thresholds. Nudge employees toward rail when it's viable.
- Pre-booking carbon estimates
- Compare flight vs rail for same route
- Flag high-carbon bookings for approval
- Track department/team travel footprints
// Check if booking exceeds carbon budget
async function checkTravelPolicy(booking, policy) {
const emissions = await fetch(
`/v1/travel/emissions?` +
`origin_country=${booking.from}` +
`&destination_country=${booking.to}` +
`&transport_mode=${booking.mode}` +
`&cabin_class=${booking.cabin}` +
`&return_trip=true`
).then(r => r.json());
const co2e = emissions.data.attributes.emissions.co2e;
if (co2e > policy.max_kg_per_trip) {
return {
approved: false,
reason: `Exceeds ${policy.max_kg_per_trip}kg limit`,
suggestion: booking.cabin === 'business'
? "Downgrade to economy (saves 67%)"
: "Consider rail or video call"
};
}
return { approved: true, co2e_kg: co2e };
}
Complete the picture with hotel emissions
Accommodation accounts for 10–40% of total trip emissions depending on destination. A week in the Maldives emits 1,064 kg from the hotel alone — more than most return flights. Pair our Hotel API with Travel for complete Scope 3 Category 6 reporting.
Audit-ready methodology
Every response includes a complete source trail for your auditors.
Updated to DEFRA 2025 — the latest available factors.
DEFRA 2025
UK Government emission factors, updated June 2025. The gold standard for business travel reporting.
Ember Climate 2025
Global electricity grid intensity data for 110+ countries. Powers our location-aware EV calculations.
OpenRouteService
Real road routing for car and bus journeys. Actual driving distances, not straight-line estimates.
GHG Protocol
Scope 3 Category 6 (Business Travel) compliant. Direct + indirect emissions split.
Start calculating
your travel emissions
Get your API key in 30 seconds. 500 free requests per month. No credit card, no sales calls, no procurement.