Oil Price API Documentation - Quick Start in 5 Minutes | REST API
GitHub
GitHub
  • Interactive Explorer

    • Interactive API Explorer
  • Price Data

    • API Reference
    • Get Latest Prices
    • Historical Prices
  • Commodities

    • List Commodities
    • Get Commodity Details
  • Marine Fuels

    • List Marine Fuel Ports
    • Get Port Details with Prices
  • Premium Endpoints

    • All Prices API - One Call, All Commodities
    • Cushing Oil Storage Intelligence API
    • Drilling Intelligence API
    • Marine Fuels API
    • ICE Brent Futures API

Get Latest Prices

Returns the most recent prices for all or specific commodities.

GET/v1/prices/latest

Authentication

See Authentication Guide for API key setup.

Parameters

ParameterTypeRequiredDescription
by_codestringNoCommodity code(s), comma-separated
fieldsstringNoSpecific fields to return, comma-separated

Response

Success (200)

{
  "status": "success",
  "data": {
    "price": 62.56,
    "formatted": "$62.56",
    "currency": "USD",
    "code": "WTI_USD",
    "created_at": "2025-09-30T20:27:42.177Z",
    "type": "spot_price",
    "source": "oilprice.business_insider",
    "metadata": {
      "source": "oilprice.business_insider",
      "source_description": "Business Insider - Most accurate source matching ICE exchange prices (within $0.27)"
    }
  }
}

Response Fields

Note: The response contains a single price object directly in the data field, not nested by commodity code.

FieldTypeDescription
pricenumberCurrent price value (rounded to 2 decimals)
formattedstringPrice formatted with currency symbol (e.g., "$62.56")
currencystringPrice currency code (USD, EUR, GBP)
codestringCommodity code (e.g., "WTI_USD")
created_atstringISO 8601 timestamp with milliseconds (UTC)
typestringPrice type: "spot_price", "daily_average", "weekly_average", etc.
sourcestringData source identifier
metadata.sourcestringData source identifier (duplicate for backwards compatibility)
metadata.source_descriptionstringHuman-readable description of data source accuracy

Errors

CodeStatusDescription
INVALID_COMMODITY400Invalid commodity code provided
INVALID_API_KEY401Missing or invalid API key
RATE_LIMIT_EXCEEDED429Rate limit exceeded

Examples

# Get all latest prices
curl "https://api.oilpriceapi.com/v1/prices/latest" \
  -H "Authorization: Token YOUR_API_KEY"

# Get specific commodity
curl "https://api.oilpriceapi.com/v1/prices/latest?by_code=WTI_USD" \
  -H "Authorization: Token YOUR_API_KEY"

# Get multiple commodities with specific fields
curl "https://api.oilpriceapi.com/v1/prices/latest?by_code=WTI_USD,BRENT_CRUDE_USD&fields=price,timestamp" \
  -H "Authorization: Token YOUR_API_KEY"
// JavaScript
async function getLatestPrice() {
  const response = await fetch('https://api.oilpriceapi.com/v1/prices/latest?by_code=WTI_USD', {
    headers: {
      'Authorization': 'Token YOUR_API_KEY'
    }
  });

  const data = await response.json();

  // Access the price directly from data object
  console.log(`Current price: ${data.data.formatted}`); // "$62.56"
  console.log(`Numeric value: ${data.data.price}`);     // 62.56
  console.log(`Source: ${data.data.metadata.source_description}`);

  return data.data.price;
}
# Python
import requests

def get_latest_price(commodity_code='WTI_USD'):
    url = 'https://api.oilpriceapi.com/v1/prices/latest'
    headers = {'Authorization': 'Token YOUR_API_KEY'}
    params = {'by_code': commodity_code}

    response = requests.get(url, headers=headers, params=params)
    data = response.json()

    price = data['data']['price']
    formatted = data['data']['formatted']

    print(f"Current {commodity_code}: {formatted}")
    return price

# Get multiple commodities
def get_multiple_prices(codes=['WTI_USD', 'BRENT_CRUDE_USD', 'NATURAL_GAS_USD']):
    url = 'https://api.oilpriceapi.com/v1/prices/latest'
    headers = {'Authorization': 'Token YOUR_API_KEY'}
    params = {'by_code': ','.join(codes)}

    response = requests.get(url, headers=headers, params=params)
    return response.json()['data']
# Ruby
require 'net/http'
require 'json'
require 'uri'

def get_latest_price(commodity_code = 'WTI_USD')
  uri = URI("https://api.oilpriceapi.com/v1/prices/latest?by_code=#{commodity_code}")

  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true

  request = Net::HTTP::Get.new(uri)
  request['Authorization'] = 'Token YOUR_API_KEY'

  response = http.request(request)
  data = JSON.parse(response.body)

  price = data['data']['price']
  puts "Current #{commodity_code}: $#{price}"

  price
end

Rate Limits

PlanRequests/MonthRequests/Minute
Free1,00010
Hobby10,000100
Professional100,0001,000

Rate limit headers are included in responses:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1736784000

Best Practices

  • Cache responses: Prices update every 5 minutes
  • Request specific commodities: Use by_code parameter when possible
  • Use field selection: Request only needed fields with fields parameter
  • Handle rate limits: Check X-RateLimit-* headers and implement backoff

Related Endpoints

  • Historical Prices - Past price data
  • Commodities List - Available commodity codes
  • WebSocket Streaming - Real-time updates
Last Updated: 12/10/25, 11:48 AM
Prev
API Reference
Next
Historical Prices