Automate your
carbon reporting
Five APIs that map directly to GHG Protocol scopes. Calculate Scope 1, 2, and 3 emissions across your entire operation — with a full audit trail in every response. No spreadsheets. No manual factors.
500 free requests/month · No credit card · View pricing
Every scope. One platform.
Each API response includes ghg_protocol_scopes — your emissions pre-categorised for disclosure.
Fuel burned in owned or controlled sources — boilers, furnaces, fleet vehicles.
"scope_1": 2512.1
Electricity, heating, and cooling purchased for your own facilities. Location-based and market-based methods supported.
"scope_2": {
"location_based": 1085.0,
"market_based": null
}
Upstream and downstream emissions across your entire value chain — typically 70–90% of a company's total footprint.
"scope_3_category_4": 156.78
Your auditor's
favourite API
Every response includes a source_trail — the exact emission factor name, source dataset, year, and region used in the calculation. No black boxes. No "contact us for methodology."
{
"emissions": {
"co2e": 156.78,
"co2e_unit": "kg",
"co2e_calculation_method": "ipcc_ar6_gwp100",
"lifecycle_breakdown": {
"vehicle_operation": 125.42,
"energy_provision": 31.36
},
"ghg_protocol_scopes": {
"freight_buyer": {
"scope_3_category_4": 156.78
},
"asset_owner": {
"scope_1": 125.42,
"scope_3_category_3": 31.36
}
},
"source_trail": [{
"data_category": "emission_factor",
"name": "Articulated HGV - Diesel",
"source": "GLEC",
"source_dataset": "Default fuel efficiency and GHG emission intensity values v3.1",
"year": "2025",
"region": "GLOBAL"
}]
},
"meta": {
"standards_compliance": {
"ISO_14083": true,
"EN_16258": true,
"GHG_Protocol": "Scope 3 Category 4"
}
}
}
Stop building what we've already built
You could maintain emission factor spreadsheets, track annual DEFRA updates, geocode freight routes, handle unit conversions, and build GHG Protocol scope mapping yourself. Or:
Building it yourself
Using emissions.dev
ghg_protocol_scopes in every response, both perspectives
source_trail with factor name, dataset, year, region
One report, five APIs
Pull emissions across your entire operation into a single disclosure-ready dataset. Every response already contains the scope mapping — just aggregate and export.
// Aggregate emissions across all five APIs for annual disclosure
$report = [
'reporting_period' => '2025-01-01 / 2025-12-31',
'methodology' => 'GHG Protocol Corporate Standard',
'gwp' => 'IPCC AR6 GWP100',
];
// Scope 1 — Direct emissions (fuel burned on-site)
$fuelRecords = FuelRecord::whereYear('date', 2025)->get();
foreach ($fuelRecords as $record) {
$res = Http::withToken($apiKey)->get('https://api.emissions.dev/v1/fuel/emissions', [
'fuel_type' => $record->fuel_type,
'value' => $record->kwh,
'unit' => 'kwh',
]);
$scope1 += $res->json('data.attributes.emissions.ghg_protocol_scopes.scope_1');
}
// Scope 2 — Purchased electricity (per-office, per-country)
$offices = Office::with('electricityBills')->get();
foreach ($offices as $office) {
$res = Http::withToken($apiKey)->get('https://api.emissions.dev/v1/electricity/emissions', [
'country' => $office->country_code,
'state' => $office->state_code,
'kwh' => $office->annual_kwh,
]);
$scope2 += $res->json('data.attributes.emissions.ghg_protocol_scopes.scope_2.location_based');
}
// Scope 3 Cat. 4 — Upstream freight
$shipments = Shipment::whereYear('shipped_at', 2025)->get();
foreach ($shipments as $s) {
$res = Http::withToken($apiKey)->get('https://api.emissions.dev/v1/freight/emissions', [
'origin_country' => $s->origin_country,
'destination_country' => $s->dest_country,
'weight' => $s->weight_kg,
'transport_mode' => $s->mode,
]);
$scope3_cat4 += $res->json('data.attributes.emissions.ghg_protocol_scopes.freight_buyer.scope_3_category_4');
}
// Scope 3 Cat. 6 — Business travel (flights + hotels)
$trips = BusinessTrip::whereYear('departure_date', 2025)->get();
foreach ($trips as $trip) {
$flight = Http::withToken($apiKey)->get('https://api.emissions.dev/v1/travel/emissions', [
'origin' => $trip->origin_iata,
'destination' => $trip->dest_iata,
'mode' => 'flight',
'class' => $trip->cabin_class,
]);
$hotel = Http::withToken($apiKey)->get('https://api.emissions.dev/v1/hotel/emissions', [
'country' => $trip->hotel_country,
'nights' => $trip->hotel_nights,
]);
$scope3_cat6 += $flight->json('data.attributes.emissions.co2e')
+ $hotel->json('data.attributes.emissions.co2e');
}
// Complete GHG Protocol disclosure
$report['scope_1'] = round($scope1, 1);
$report['scope_2_location'] = round($scope2, 1);
$report['scope_3_category_3'] = 'WTT included in each API response';
$report['scope_3_category_4'] = round($scope3_cat4, 1);
$report['scope_3_category_6'] = round($scope3_cat6, 1);
$report['total_co2e_kg'] = round($scope1 + $scope2 + $scope3_cat4 + $scope3_cat6, 1);
Your business data
Fuel bills, electricity invoices, shipping records, travel bookings, hotel stays — data you already have.
emissions.dev calculates
We apply the right emission factors, handle unit conversions, calculate distances, and map to GHG Protocol scopes.
Disclosure-ready output
CO₂e totals by scope, lifecycle breakdowns, and complete source trails for your auditor.
For your sustainability team
Share this with colleagues who need to know the methodology is sound — even if they'll never see the code.
GHG Protocol
All emissions categorised by scope and category per the GHG Protocol Corporate Standard.
IPCC AR6 GWP100
All factors expressed in CO₂e using the latest IPCC Global Warming Potential values over 100 years.
Recognised sources
GLEC Framework, UK DEFRA, US EPA eGRID, Ember, Cornell CHSB — named in every response.
Reproducible
Pin calculations to a factor year. Re-run any historical period and get the same results.
Carbon reporting FAQ
| Scope | Category | API |
|---|---|---|
| Scope 1 | Direct emissions | Fuel API, Freight API (owned fleet) |
| Scope 2 | Purchased electricity | Electricity API (location & market-based) |
| Scope 3, Cat. 3 | Fuel & energy-related (WTT) | Fuel API, Electricity API |
| Scope 3, Cat. 4 | Upstream transport | Freight API |
| Scope 3, Cat. 6 | Business travel | Travel API, Hotel API |
| Scope 3, Cat. 9 | Downstream transport | Freight API |
Every response includes ghg_protocol_scopes with the emissions pre-mapped to the correct category.
The Electricity API returns both in the ghg_protocol_scopes.scope_2 object. Location-based is calculated automatically from grid intensity data (Ember, EPA eGRID). For market-based, pass your supplier's emission factor via the market_based_factor parameter — useful if you have renewable energy certificates or a green tariff.
If no market-based factor is provided, that field returns null with a note explaining why, so you can clearly document the gap in your report.
Yes. Every response includes the exact emission factor name, source dataset, year, and region in the source_trail. As long as you store the API responses (or just the source_trail), you can document exactly which factors were used. For consistency across a reporting period, we recommend making all calculations for a given year within the same quarter to ensure factor versions remain consistent.
| Source | Coverage | Used by |
|---|---|---|
| GLEC Framework v3.1 | Freight (all modes, global) | Freight API |
| DEFRA 2025 | UK Government factors, widely adopted | Travel, Hotel, Fuel APIs |
| Ember 2025 | 100+ country electricity grids | Electricity API |
| US EPA eGRID 2023 | 50 US state-level grids | Electricity API |
| Cornell CHSB Index | 60+ country hotel benchmarks | Hotel API |
All factors are expressed in CO₂e using IPCC AR6 GWP100 values. The exact source, dataset name, and year are included in the source_trail of every response.
No — use only the APIs relevant to your emission sources. A logistics company might only need Freight and Fuel. A consulting firm might only need Travel, Hotel, and Electricity. All five APIs share the same API key, authentication, and response format, so adding a new scope later is trivial.
For annual carbon reporting (typically a batch job), most companies need the Starter or Growth plan:
| Plan | Requests/month | Price |
|---|---|---|
| Free | 500 | $0 |
| Launch | 5,000 | $39/mo |
| Starter | 10,000 | $79/mo |
| Growth | 50,000 | $199/mo |
| Scale | 200,000 | $499/mo |
A company with 1,000 shipments, 5 offices, and 200 business trips would use roughly 1,200 API calls for a full annual report — well within the Free tier. See full pricing.
Start automating your carbon report
Get your API key in 30 seconds. Calculate your first emission in under a minute. No credit card required.