GreenCalculusGet a free key
  1. Home
  2. Guides
  3. Comparison
  4. What API should I use to get emission factors?
Last reviewed September 2026

What API should I use to get emission factors?

Quick Answer

Run five tests against any candidate, each a command you run yourself: how long from landing page to a number in your terminal; what one response says about where the number came from; whether last year's figure reproduces; and whether the licence permits what you are building.

Feature tables are easy to win and easy to fake. Every vendor in this category, us included, can produce a comparison grid where it comes out ahead. So here are five tests instead — each one a command you run yourself, against any vendor, in about ten minutes total. We then score four APIs in public using them, including ourselves, and name the two tests we lose.

First, the obvious objection

We sell a carbon data API, and we wrote the rubric. You should assume that is a problem until shown otherwise, because it usually is: a vendor-authored scorecard is normally a list of the author’s own feature set with question marks bolted on.

Three things we did about it, which you can check rather than take on trust.

Control 1

The tests come from audits, not from our roadmap

Every one of the five is a question we have actually been asked by somebody defending a number — an auditor, a procurement reviewer, a customer’s consultant. None was chosen because we happen to do it well, and two of them we do not.

Control 2

We publish where we lose

There is a section below listing the tests we fail and who beats us on them, by name. If a rubric never costs its author anything, it is marketing wearing a lab coat.

Control 3

Measured and read-from-docs are marked differently

We ran these tests unauthenticated. Where a vendor requires a key we do not hold, we scored from their published response schema and say so in the cell rather than guessing. An unmarked score is one we executed.

Test 1 — time to first number

What it measures. Friction, and how much of the product you can see before committing. The interval between arriving and holding a real value is a fair proxy for what the whole relationship will feel like — including how long it takes to get an answer when something breaks at 4pm on a Friday.

The command. Call the vendor’s documented endpoint with no credentials at all.

curl -s -o /dev/null -w "%{http_code} in %{time_total}sn" 
  "https://api.greencalculus.com/v1/factors?search=diesel&limit=1"

What we got, 8 September 2026. Climate TRACE answered in 0.04 seconds and we answered in 0.86, both with no account. Carbon Interface, Climatiq and Ember each returned 401. CarbonAPI’s API host did not resolve from our network at all, which is a different and more concerning answer.

How to read it. A 401 is not a failure — requiring a key is entirely reasonable. What you are measuring is what happens next: is a key self-serve and instant, does it need an email exchange, or does it need a sales call? Climatiq’s pricing table marks API access unavailable on all three of its published-price plans, so for that one the honest answer to “how long to a number?” is “however long a procurement cycle takes”.

Test 2 — provenance depth

What it measures. Everything you will ever be able to tell an auditor is in the response payload. Not in the docs, not on the marketing site — in the bytes you get back and store. This is the test most people skip and the one that decides whether a number is defensible a year later.

The command. Fetch one factor and read the whole thing.

curl -s "https://api.greencalculus.com/v1/factors?search=diesel&limit=1" | python3 -m json.tool

The checklist. Score one point each. It is deliberately about what an auditor asks, not about API design:

Eleven things a response can tell you about where a number came from
# Field Why an auditor cares
1 Publisher named Whose number is this — DEFRA, EPA, ecoinvent?
2 Exact table or cell Which row of which table. “DEFRA 2026” is a citation; “Fuels sheet, cell D72” is evidence.
3 Retrieval date When you read it, which is not the same as the data year.
4 Unit stated Per litre, per kWh, per kg — explicitly, not by convention.
5 GWP basis AR4, AR5 or AR6. Mixing bases is a silent error that yields a plausible wrong number.
6 Region Which geography the factor applies to.
7 Per-gas breakdown CO₂, CH₄, N₂O separately — required to restate under a different GWP set.
8 GHG Protocol scope Where it lands in an inventory.
9 Data version Which edition of the vendor’s corpus answered.
10 Licence of the source What you may do with it — see Test 4.
11 Redistribution flag Whether you may pass the value on, decided per source.
Two honest notes on this checklist

It is ours, so it reflects what we think matters — if you disagree with a row, drop it and re-score; the tests still work without it. And items 10 and 11 are unusual enough that scoring them arguably rewards our own design, so read the scorecard with that in mind rather than treating 11/11 as an objective ceiling.

Test 3 — reproducibility

What it measures. Whether you can answer “why does this year’s number differ from last year’s?” with a pinned version rather than an explanation.

This matters more than it sounds. Across one 112-day window we recorded 2,219 published factor values changing, a median move of 5%, with 93% of them landing inside a single fortnight. If your reports are computed against “whatever the API says today”, then a restatement is not a decision you make — it happens to you, silently, whenever an upstream publisher ships.

The command. Ask for the same factor twice, pinned to two different editions, and compare. The first half looks like this — the current value, with the corpus edition that answered:

curl -s "https://api.greencalculus.com/v1/factors?key_prefix=grid.gbr.electricity.location_based&limit=1"

The second half is the whole test: the same call, pinned to an earlier edition. We cannot show you that command on our own browse route, because we do not support it there — our version pinning lives on the calculation endpoints, and per-factor history needs a key. Climatiq does support it on any request. So on this test we are demonstrating the gap rather than the feature, which is the honest way round.

What good looks like. Two calls, two documented editions, two values, no bookkeeping on your side. A vendor that cannot express “the value as it stood in June 2025” is telling you that reproducing an old report means keeping your own archive — which is the maintenance you were trying to outsource. Full detail in the tests we lose.

Test 4 — licence clarity

What it measures. Whether the terms permit the thing you are actually building, and how long it takes to find out. This is a pricing question wearing a licence question’s clothes, and it is the one that catches teams six months in.

The test. Not a command — a stopwatch. Open the vendor’s terms and search for three words:

  • “non-commercial” — does it appear anywhere near the tier you plan to use? Several free tiers in this category are explicitly non-commercial, and no quota increase fixes that.
  • “redistribute” — may you pass values on to your own customers? This is the right that separates a data licence from a data subscription, and most vendors do not grant it at any published tier.
  • “attribution” — what credit is required, and where? The usual failure is placement, not wording: an attribution on a settings screen does not travel with an exported CSV, and the export is what your customer forwards to their auditor.
The clause nobody reads

Ask what happens to data you have already fetched if you cancel. Climatiq’s licensing states that on cancellation, data retrieved while the licence was valid “can no longer be used for commercial purposes going forward”. That is clearly disclosed and not unusual — but it means the figures already in your database are governed by a licence you no longer hold. Find the equivalent clause for whichever vendor you pick, because there almost always is one.

If the terms are silent on data reuse entirely — as Carbon Interface’s are, covering the website and user content but not the estimates the API returns — that is not permission. It is an unresolved question you are carrying.

Test 5 — declared absence

What it measures. Intellectual honesty, and how much diligence sits behind the coverage claim.

Every vendor publishes what it has. Almost none publishes what it lacks. Ask a vendor for a factor they do not carry and see which of three answers you get: silence, a plausible-looking substitute, or a straight “we do not have that, and here is why”. Only the third is useful, and the second is actively dangerous — a fuzzy match returned without a flag is how the wrong number enters a report.

The command. Ask for something deliberately obscure and read the failure mode. Then look for a published gap register:

curl -s "https://api.greencalculus.com/v1/absence" | python3 -m json.tool

What good looks like. A machine-readable list of gaps, each classified by why — no publisher issues it anywhere, versus we have not got to it, versus we found it and declined on licence grounds. Ours currently holds twelve documented gaps: nine structural, one coupled to another gap, one refused, one not yet surveyed. Each carries the publishers checked and a review date.

A related signal worth ten seconds: does the vendor flag when a returned factor is a modelled or approximate match rather than a direct one? CarbonAPI does this with a matchType field, and it is the single most useful thing we have seen in any competitor’s payload.

The scorecard

Four APIs, scored on 8 September 2026. Test 1 and our own Test 2 were executed unauthenticated. Where a key was required, Test 2 is scored from the vendor’s published response schema and marked (docs) — we have not seen those payloads and would rather say so than imply we had.

Five tests, four vendors, scored in public
Test GreenCalculus Climatiq CarbonAPI Carbon Interface
1. Time to first number 0.86s, no account 401 — and API access is Enterprise-only, unpriced Host did not resolve 401; key is self-serve
2. Provenance depth 11/11 measured ~7/11 (docs) — strong on source, dataset, year, region, GWP basis, per-gas ~5/11 (docs) — plus a resolvable source URL nobody else returns ~1/11 (docs) — no source, no factor value, no vintage
3. Reproducibility Yes with a key — but not keyless, and the parameter is undocumented Yes — data_version pins any request Partial — sourceVersion in the payload No mechanism found
4. Licence clarity Clear; no non-commercial clause at any tier Clear and restrictive — free tier is non-commercial; rights end on cancellation Not stated publicly Silent on data reuse
5. Declared absence Published register, 12 gaps classified Data-quality flags, no gap register matchType flags modelled matches None found
Read that table sceptically

We score well on it, and we designed it. The controls at the top of this page are our attempt to earn the benefit of the doubt, not a claim to have eliminated the bias. The remedy is not to trust us — it is to run the five commands yourself, which takes about ten minutes.

The tests we lose

Reproducibility, to Climatiq — on discoverability more than capability. They pin a data_version on any request: a fixed value gives repeatable results, a caret-prefixed one adopts non-breaking updates, and it is documented. We do pin: as_of works on the eight calculation endpoints and on a single-factor read, where it correctly returns the archived value and reports the version it served. Two honest caveats, both ours. It needs a key — the keyless browse route does not accept it — so the answer to “can I re-read a factor as it stood last June without an account?” is no. And on the single-factor route the parameter is not listed in our own OpenAPI schema, which means a developer reading the spec would not know it exists. A capability nobody can discover is, for evaluation purposes, most of the way to not having it. We found this while writing this page, and the spec is being fixed.

Inline source links, to CarbonAPI. Their factor object returns a sourceUrl pointing at the source material, per factor, in the payload. We return the publication and the exact place within it, and the resolvable link lives in the response’s licence block at the source level rather than inline on every row. Theirs is the more convenient shape for a developer building a citation UI. Their matchType flag — marking a value as a modelled prior-year match rather than a direct hit — is something we do not do at all and probably should.

Breadth, to Climatiq. Not one of the five tests, and worth stating anyway because it is the thing people actually choose on. Their catalogue is substantially larger than ours. If you need a long tail of niche activities under one roof today, they are the more complete answer and this rubric will not change that.

And a gap we share. Neither we nor Climatiq publish official client SDKs in any language. Both of us hand you HTTP and a docs page. That is fine for most teams and a genuine cost for some.

Running this on a vendor we did not score

The five tests are vendor-neutral by construction. To score anyone else:

  1. Test 1: curl their documented endpoint with no credentials and time it. Then time how long a key takes to obtain.
  2. Test 2: get one real payload and walk the eleven-row checklist above. Count honestly; do not credit a field the docs promise but the response omits.
  3. Test 3: request the same factor pinned to two editions. If there is no pinning parameter, that is the answer.
  4. Test 4: search the terms for “non-commercial”, “redistribute”, “attribution”, and find the cancellation clause.
  5. Test 5: ask for something obscure and read the failure mode. Look for a published gap register.

Two practical warnings from doing this ourselves. A curl -I can lie — several vendors return a bot-block to HEAD requests and serve fine to a normal GET with a browser user-agent, so probe properly before declaring anything dead. And check the company, not just the product: at least one API in this space names an operating company that its national register lists as dissolved. Two minutes on a corporate register is the cheapest diligence available and almost nobody does it.

If you score a vendor and get a different result from ours, tell us and we will correct this page visibly. That offer is the only thing that makes a vendor-authored rubric worth reading.

How to evaluate a carbon data API — five runnable tests and a public scorecard
Save to Pinterest Download · 1000×1500 JPG

Frequently asked questions

You should not, on its own. What you can do is run the tests yourself — that is the entire point of making each one a command rather than a claim. Every score in the table is reproducible in about ten minutes, and where we could not execute a test we have marked the cell as read from documentation. If a score is wrong, it is wrong checkably, and we will correct it.

It is until someone questions a number, at which point it is the only thing that matters. The practical test: if an auditor asks where a figure came from, can you answer from data you already stored, or do you have to go back to the vendor? If the payload carried no source, no vintage and no version, you cannot reconstruct it later — the information was never yours to keep.

Anything that names the publisher, the vintage and the GWP basis clears the bar for most reporting. Below that you are relying on the vendor’s word. The eleven-row version matters most when your figures face external assurance, or when you are redistributing values and need per-source licence facts to travel with them.

At evaluation, and then annually — this category moves fast. In the past eighteen months a widely recommended free grid-data endpoint stopped resolving in DNS, several vendors were acquired and rebranded, and at least one API endpoint was withdrawn without appearing in its own deprecation calendar. A scorecard is a snapshot, which is why this page carries the date it was checked.

Test 4, the licence one, because it is the only one that can invalidate everything else retroactively. A brilliant API you are not permitted to use commercially is worth nothing to a business, and unlike the others this failure is invisible until someone reads the terms — usually late, usually under pressure. Run it first if you only run one.

Tests 3, 4 and 5 do. Tests 1 and 2 assume you are calling an API, which a platform buyer is not. If you are unsure which you are shopping for, that distinction is worth settling first — our field guide to the alternatives sorts the category into APIs, platforms and building on open data, because comparing across those lines produces meaningless answers.

Score the candidates on the five tests above: GreenCalculus, Climatiq, Carbon Interface and any other on your shortlist. The two that separate them are whether a response tells you where the number came from and whether you can reproduce last year’s figure. Those are where most vendors quietly fail, and they are the two an auditor asks about.

There is no single best; the five tests above rank them for your case. The main options are GreenCalculus (sourced factors, keyless browse, versioned), Climatiq (broad catalogue, API access on enterprise terms), Carbon Interface (simpler, narrower), and the publishers’ own files if you can maintain them yourself. Run tests 2 and 3 before anything else.

Shortlist the ones whose licence permits use inside a product you charge for, then run the five tests. The licence test eliminates more candidates than any feature grid: several free tiers are non-commercial. GreenCalculus publishes its plan terms on the pricing page; read each vendor’s before you write a line of code.

Scroll to Top