DEFRA 2025 · ICAO Compliant · GHG Protocol Ready

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

GHG Protocol Scope 3 DEFRA 2025 110+ Countries Real Road Routing
Business travel · London → Paris by Eurostar
// One call, full breakdown
GET /v1/travel/emissions
origin_country=GB
origin_location=London
destination_country=FR
destination_location=Paris
transport_mode=rail
passengers=1
return_trip=true
// Response
{
"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"
}
200 OK 45ms · Audit-ready source trail included

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 feature
Real Road Routing

Actual driving distances via road network, not "as the crow flies" + 20%. Oslo→Bergen: 461km real vs 309km haversine.

48% more accurate
Cabin Class Multipliers

Business class uses 3x the floor space of economy. First class uses 4x. We apply DEFRA's cabin class factors automatically.

DEFRA 2025
Full Source Trail

Every response includes factor source, dataset version, year, and region. Hand it straight to your auditors.

Audit-ready

Every 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
The data your users need

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.

Route
✈️ Flight
🚄 Rail
London → Paris
121 kg
11 kg
London → Edinburgh
156 kg
24 kg
London → Amsterdam
133 kg
15 kg
Paris → Brussels
98 kg
7 kg
Average saving
90% less CO₂

Per passenger, one way. DEFRA 2025 factors with radiative forcing for flights.

javascript Compare modes at booking time
// 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
Often overlooked

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.

Cabin
Multiplier
LHR → JFK
Economy Baseline
1.0x
486 kg
Premium Economy
1.6x
778 kg
Business
2.9x
1,409 kg
First 4x economy
4.0x
1,944 kg

London Heathrow → New York JFK, one way. DEFRA 2025 long-haul factors.

json /v1/travel/emissions?...&cabin_class=business
// 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
Unique to emissions.dev

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.

Country
Grid Intensity
EV per 100km
🇳🇴 Norway Cleanest
26 gCO₂/kWh
0.5 kg
🇫🇷 France
56 gCO₂/kWh
1.1 kg
🇬🇧 UK
207 gCO₂/kWh
4.1 kg
🇩🇪 Germany
350 gCO₂/kWh
7.0 kg
🇵🇱 Poland 25x Norway
635 gCO₂/kWh
12.7 kg

Source: Ember Climate Global Electricity Review 2025

json Same EV, different countries
// 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
Accuracy matters

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.

Route
Straight line
Real road
Oslo → Bergen
309 km
461 km
Milan → Zurich
216 km
326 km
Glasgow → Inverness
153 km
265 km
Average error
30–50% undercount

Mountainous and coastal routes show the largest differences. Flat terrain (e.g. London → Birmingham) is closer to straight-line.

json Route response with real distance
// 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.

javascript Expense platform integration
// 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
12%
higher conversion with carbon data
javascript Enrich search results with carbon
// 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.

python Event attendee carbon calculation
# 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
javascript Enforce travel policy at booking time
// 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.