Free commodity price APIs in 2026: what each one actually gives you
By OilPriceAPI · Pricing pages checked
Most commodity APIs that call themselves free give you one of three things: a small permanent quota, a short trial, or delayed or end-of-day values. The useful question is which of those fits the app you are building, and whether the licence lets you ship it. Below are seven options, with every limit and price taken from the provider's own pricing page on October 23, 2026.
Is OilPriceAPI free?
Free plan: 50 requests/day, with no expiry. New accounts start with a 7-day trial: 10,000 requests, full API (except licensed datasets: aviation fuel pilot), no card. After the trial, you automatically continue on the Free plan. The Free plan is hard-capped and never billed.
Current paid tiers are on the pricing page.
Comparison table
Checked October 23, 2026 against each linked page. Providers change limits; follow the source link before you commit to one. "Freshness" is how old the latest value can be, as the provider describes it, which matters more for prices than response time.
| Provider | Without paying | Commodities | Freshness | Cheapest paid | Source |
|---|---|---|---|---|---|
| OilPriceAPI | Free plan, 50 requests/day, no expiry. New accounts start with a 7-day trial of 10,000 requests, no card. | Crude oil, natural gas, refined products, futures, marine fuels, carbon, metals and forex in one catalog. | Every value carries its source timestamp. WTI and Brent front-month futures are sampled several times an hour on trading days; EIA series arrive in EIA's weekly batch. | Developer: $19/month, 10,000 requests/month | oilpriceapi.com/pricing |
| EIA Open Data | No-cost government API with a registered key. JSON responses return at most 5,000 rows per request. | US government series: crude and product spot prices, inventories, production, natural gas, electricity. | Daily spot prices are published weekly. The release of Oct 21, 2026 carried WTI Cushing through Oct 20; the next release is Oct 28. | No paid tier. | eia.gov/opendata |
| Alpha Vantage | 25 API requests per day on the standard key. | WTI, Brent, natural gas, copper, aluminum, wheat, corn, cotton, sugar, coffee and a global commodities index. | WTI comes in daily, weekly and monthly horizons, sourced from EIA via FRED. | $49.99/month for 75 requests per minute. | alphavantage.co/premium |
| Twelve Data | Basic plan: 8 API credits per minute, 800 per day, internal non-display use only. | Commodities market data is listed as a Grow-plan feature, not a Basic feature. | Real-time and historical on paid plans. | Grow, listed from $29/month. | twelvedata.com/pricing |
| EODHD | Sandbox: 20 API calls per day, 1 year of end-of-day history, plus a one-time 500-call welcome bonus. | Energy, metals and agriculture listed as included on every package. | End-of-day data; live prices are 15-minute delayed on the free package. | $19.99/month (EOD Historical All-World). | eodhd.com/pricing |
| Commodities-API | No permanent no-cost plan. A 7-day trial on every plan, up to 50 requests. | Energy, metals and agricultural commodities. | 10-minute updates on PRO; 60-second updates from PRO PLUS. | PRO: $49.99/month for 1,000 API calls/month. | commodities-api.com |
| API Ninjas | 3,000 API calls per month, 100 per hour, no commercial use, attribution required. | Every commodity on its commodity price endpoint is available on all plans. | Users without a paid plan get the last completed daily settlement; paid plans get live prices. | Developer: $59/month, or $39/month billed yearly, for 100,000 calls/month. | api-ninjas.com/pricing |
EIA or OilPriceAPI?
If you only need official US weekly or monthly series and can wait for the next release, use the EIA API directly. It costs nothing, the series are authoritative, and a 5,000-row JSON page covers years of daily history for one series. The trade-off is timing: EIA publishes its daily spot prices once a week. The release of October 21, 2026 carried WTI Cushing through October 20, and the next one is due October 28.
OilPriceAPI carries some of those EIA series too (NY Harbor ULSD diesel is one, shown below with its own timestamp), and adds front-month futures for WTI, Brent and Henry Hub that are sampled several times an hour on trading days, plus marine fuels, European gas and metals that EIA does not publish. Every row comes back in one JSON shape with its unit and source timestamp. If your app needs a price from today rather than last week, or more than US government series, that is the gap a paid or capped-free API fills.
Live: oil, gas and diesel from one request
Rendered from one /v1/prices/latest call when this page loaded. Each value carries the source's own timestamp; a code that did not return a usable value is shown as unavailable, never substituted.
| by_code | Instrument | Latest | Per | Source timestamp |
|---|---|---|---|---|
| WTI_USD | WTI crude (NYMEX front-month futures) | $103.20 | barrel | |
| BRENT_CRUDE_USD | Brent crude (ICE front-month futures) | $117.38 | barrel | |
| NATURAL_GAS_USD | Henry Hub natural gas (NYMEX front-month) | $2.640 | MMBtu | |
| ULSD_DIESEL_USD | NY Harbor ULSD diesel (EIA spot) | $5.270 | gallon |
The request that produced this table
curl "https://api.oilpriceapi.com/v1/prices/latest?by_code=WTI_USD,BRENT_CRUDE_USD,NATURAL_GAS_USD,ULSD_DIESEL_USD" \
-H "Authorization: Token YOUR_API_KEY"- WTI, Brent and Henry Hub here are exchange front-month futures, not physical spot assessments.
- ULSD_DIESEL_USD is EIA's weekly-published spot series, so its timestamp is usually a few days old.
Python examples
These use requests and an API key in the OILPRICEAPI_KEY environment variable. A comma-separated by_code returns data.prices[]; a single code returns data as one object.
Oil: WTI and Brent in one call
import os
import requests
API_KEY = os.environ["OILPRICEAPI_KEY"]
resp = requests.get(
"https://api.oilpriceapi.com/v1/prices/latest",
params={"by_code": "WTI_USD,BRENT_CRUDE_USD"},
headers={"Authorization": f"Token {API_KEY}"},
timeout=10,
)
resp.raise_for_status()
for row in resp.json()["data"]["prices"]:
print(row["code"], row["price"], row["currency"], "per", row["unit"], row["created_at"])Natural gas: Henry Hub
import os
import requests
resp = requests.get(
"https://api.oilpriceapi.com/v1/prices/latest",
params={"by_code": "NATURAL_GAS_USD"},
headers={"Authorization": f"Token {os.environ['OILPRICEAPI_KEY']}"},
timeout=10,
)
resp.raise_for_status()
gas = resp.json()["data"] # a single code returns one object
print(f"Henry Hub: {gas['price']} {gas['currency']}/{gas['unit']} at {gas['created_at']}")Diesel: check the age before you use it
import os
from datetime import datetime, timezone
import requests
resp = requests.get(
"https://api.oilpriceapi.com/v1/prices/latest",
params={"by_code": "ULSD_DIESEL_USD"},
headers={"Authorization": f"Token {os.environ['OILPRICEAPI_KEY']}"},
timeout=10,
)
resp.raise_for_status()
diesel = resp.json()["data"]
# EIA publishes this spot series weekly, so check the timestamp before using it.
observed = diesel.get("observed_at") or diesel["created_at"]
age = datetime.now(timezone.utc) - datetime.fromisoformat(observed.replace("Z", "+00:00"))
print(f"NY Harbor ULSD: {diesel['price']} USD/gallon, {age.days} days old")For the full SDK walkthrough, see the Python oil price API tutorial.
Frequently asked questions
- Is OilPriceAPI free?
- Free plan: 50 requests/day, with no expiry. New accounts start with a 7-day trial: 10,000 requests, full API (except licensed datasets: aviation fuel pilot), no card. After the trial, you automatically continue on the Free plan. The Free plan is hard-capped and never billed.
- Is the EIA API really free?
- Yes. EIA data is provided free of charge with a registered API key. JSON requests return at most 5,000 rows, and EIA publishes its daily spot price series once a week.
- Which free commodity API is best for a production app?
- Check the licence before the limit. Twelve Data's Basic plan is for internal non-display use and API Ninjas' free plan excludes commercial use. EIA data is provided free of charge, subject to EIA's copyright and reuse policy, but its spot prices are published weekly. OilPriceAPI's Free plan has no expiry and is hard-capped, so it never bills.