How to Convert TTF from €/MWh to $/MMBtu
By OilPriceAPI · Published · Example prices were pulled from the API on October 30 and carry their own timestamps
Multiply the TTF price in €/MWh by an EUR/USD rate from a nearby timestamp, then divide by 3.412142. That gives $/MMBtu, the unit Henry Hub and JKM are quoted in. With the prints the API returned at 2026-10-30 16:36:01 UTC and 2026-10-30 16:40:42 UTC: €104.17/MWh × 1.1168 = $116.34/MWh, ÷ 3.412142 = $34.10/MMBtu. Henry Hub at 2026-10-30 16:40:29 UTC was $2.88/MMBtu, so TTF was 11.8× Henry Hub.
The formula (and the reverse)
Two steps, in either order, because both are multiplications:
- Currency: €/MWh × (USD per EUR) = $/MWh
- Energy: $/MWh ÷ 3.412142 = $/MMBtu, because 1 MWh = 3.412142 MMBtu (1 MMBtu = 293.071 kWh)
Reverse it to put a dollar-per-MMBtu benchmark in TTF's unit: $/MMBtu × 3.412142 ÷ (USD per EUR) = €/MWh. Henry Hub's $2.88 becomes €8.80/MWh at the nearby rate. The factor is rounded to six decimal places; choose an exchange rate close in time to the gas print and show both timestamps.
Worked example, with timestamps
| Code | Value | Unit | Observed (UTC) |
|---|---|---|---|
DUTCH_TTF_EUR | 104.17 | €/MWh | 2026-10-30 16:36:01 UTC |
EUR_USD | 1.1168 | USD per EUR | 2026-10-30 16:40:42 UTC |
NATURAL_GAS_USD | 2.88 | $/MMBtu · NYMEX December 2026 contract (contract_month 2026-12) | 2026-10-30 16:40:29 UTC |
DUTCH_TTF_NATURAL_GAS_USD | 116.27 | $/MWh | 2026-10-30 16:38:21 UTC |
JKM_LNG_USD | 32.03 | $/MMBtu | 2026-10-30 00:01:04 UTC |
- €104.17/MWh × 1.1168 USD/EUR = $116.34/MWh
- $116.34/MWh ÷ 3.412142 MMBtu/MWh = $34.10/MMBtu
- Check against the API's own dollar series: DUTCH_TTF_NATURAL_GAS_USD printed $116.27/MWh two minutes earlier, which is $34.08/MMBtu. The two conversions differ by about 1.97 cents; the different timestamps and source calculation may contribute, so do not treat them as identical observations.
- Compare: Henry Hub $2.88/MMBtu (11.8× lower than TTF), JKM $32.03/MMBtu (11.1× Henry Hub). The JKM print was at 2026-10-30 00:01:04 UTC, roughly 16 hours before the Henry Hub print; this is a dated comparison, not a simultaneous spread.
NATURAL_GAS_USD is the NYMEX front-month futures price (the December 2026 contract on publish day), not the EIA daily spot assessment. Those are different price bases; if you need the physical spot print, say so in your own labels. The live Henry Hub page shows the current contract month.
API shortcut
Both inputs come from /v1/prices/latest, so the whole conversion is four lines. The live TTF price in €/MWh page shows the same DUTCH_TTF_EUR series the call returns.
import requests
H = {"Authorization": "Token YOUR_API_KEY"}
get = lambda c: requests.get("https://api.oilpriceapi.com/v1/prices/latest", params={"by_code": c}, headers=H, timeout=10).json()["data"]
ttf, fx = get("DUTCH_TTF_EUR"), get("EUR_USD")
print(round(ttf["price"] * fx["price"] / 3.412142, 2), "$/MMBtu at", ttf["created_at"], "and", fx["created_at"])If you would rather skip the exchange-rate step, DUTCH_TTF_NATURAL_GAS_USD is the same TTF series already converted to $/MWh; divide it by 3.412142 and you are done. The energy equivalency tool does the unit step interactively, and the natural gas data documentation lists every gas code.
Common errors
- Mismatched timestamps. A TTF close from 17:00 CET multiplied by a EUR/USD rate from the next morning is not a conversion, it is two prices from two markets. Pull both at once and print both timestamps next to the result, as the snippet does.
- Futures versus spot. NATURAL_GAS_USD is the NYMEX front month; around contract expiry the front month rolls and the series can step without the physical price moving. Comparing a TTF spot or day-ahead print to a Henry Hub futures print is fine for a ratio table, but label which is which.
- Weekend carry-forward. Gas markets do not trade on Saturday and Sunday. A daily series carries Friday's value forward; a ratio computed on a Sunday using a weekday FX print from a different source is comparing a stale number to a fresh one. The API's freshness block tells you how old each print is.
- Rounding the factor. 3.412 instead of 3.412142 moves a $34 result by about a cent and a half. Harmless for a chart, not harmless in an invoice. Use the full factor.
- MWh versus kWh versus therm. UK NBP is quoted in pence per therm (1 therm = 0.1 MMBtu, 29.3071 kWh). Convert NBP to $/MMBtu with pence ÷ 100 × GBP/USD × 10. Do not reuse the 3.412 factor for it.
How many times Henry Hub, dated
| Date | TTF, $/MMBtu | JKM, $/MMBtu | Henry Hub, $/MMBtu | TTF ÷ Henry Hub | JKM ÷ Henry Hub |
|---|---|---|---|---|---|
| Wed Oct 21, 2026 (daily average) | 28.68 | 29.55 | 2.81 | 10.2× | 10.5× |
| Thu Oct 29, 2026 (daily average) | 31.90 | 32.35 | 2.93 | 10.9× | 11.0× |
| Fri Oct 30, 2026 (latest print) | 34.10 | 32.03 | 2.88 | 11.8× | 11.1× |
The daily-average rows use the API's DUTCH_TTF_NATURAL_GAS_USD bucket for that date (TTF already in dollars, ÷ 3.412142), NATURAL_GAS_USD and JKM_LNG_USD from /v1/prices/past_month?interval=1d. The last row is the latest print at the timestamps in the table above. The multiple moved from 10.2× to 11.8× in nine days, mostly because TTF rose from €87.33 to €104.17/MWh while Henry Hub stayed under $3. A Europe-to-US gap of this size is not an LNG margin: liquefaction, shipping and regasification sit between the two.
For the background on which benchmark means what, read Henry Hub vs TTF vs NBP for developers; for the TTF series itself and its product page, see the Dutch TTF price API. This article describes prices on the dates shown. It is not a forecast.
Pull TTF, EUR/USD, Henry Hub and JKM from one API
DUTCH_TTF_EUR, DUTCH_TTF_NATURAL_GAS_USD, EUR_USD, NATURAL_GAS_USD and JKM_LNG_USD are all on the same endpoint with the same timestamp fields, so the conversion above is reproducible on any day.