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

Logistics Fuel Cost API

Category: Supply Chain | Industry: Logistics & Transportation

Transportation costs directly impact supply chain profitability, with fuel representing 30-40% of freight operating expenses. OilPriceAPI provides real-time diesel, gasoline, and natural gas pricing data to help logistics companies optimize routing, manage carrier rates, and improve cost forecasting. For automated workflows, explore our Zapier integration or Make integration.

The Challenge

Logistics and supply chain operators face persistent fuel cost management challenges:

  • Volatile fuel prices make freight rate negotiations difficult
  • Fuel surcharge calculations lack transparency and accuracy
  • Multi-modal operations require tracking various fuel types
  • Route optimization needs fuel cost inputs for accurate modeling
  • Contract pricing requires reliable market benchmarks
  • Cost allocation across customers needs current fuel data

Without accurate, real-time fuel price data, logistics operators struggle to maintain profitability and provide competitive pricing to customers. Looking for affordable data alternatives? See our EIA alternative comparison or Commodity Data API comparison.

The Solution

OilPriceAPI delivers comprehensive fuel price data that integrates directly into transportation management systems (TMS), freight rate calculators, and supply chain planning tools.

Key Benefits

BenefitImpact
Real-time pricingAccurate fuel cost inputs for rate calculations
Multiple fuel typesDiesel, gasoline, natural gas, and more
Historical dataTrend analysis for contract negotiations
API integrationDirect connection to logistics software
Cost transparencyDefensible fuel surcharge calculations

Relevant API Endpoints

Get Current Fuel Prices

Retrieve the latest fuel prices for logistics cost calculations:

# Get current diesel price (primary logistics fuel)
curl "https://api.oilpriceapi.com/v1/prices/latest?by_code=DIESEL_USD" \
  -H "Authorization: Token YOUR_API_KEY"

# Get multiple fuel types for multi-modal operations
curl "https://api.oilpriceapi.com/v1/prices/latest?by_code=DIESEL_USD,GASOLINE_USD,NATURAL_GAS_USD" \
  -H "Authorization: Token YOUR_API_KEY"

Response:

{
  "status": "success",
  "data": {
    "price": 3.42,
    "formatted": "$3.42",
    "currency": "USD",
    "code": "DIESEL_USD",
    "created_at": "2025-01-15T12:00:00.000Z",
    "type": "spot_price"
  }
}

Historical Price Data

Access historical data for trend analysis and contract negotiations:

# Past month of diesel prices with daily averages
curl "https://api.oilpriceapi.com/v1/prices/past_month?by_code=DIESEL_USD&interval=1d" \
  -H "Authorization: Token YOUR_API_KEY"

# Past year for annual contract planning
curl "https://api.oilpriceapi.com/v1/prices/past_year?by_code=DIESEL_USD&interval=1w" \
  -H "Authorization: Token YOUR_API_KEY"

Track Crude Oil for Forward Planning

Monitor upstream prices that drive fuel costs:

# Crude oil benchmarks
curl "https://api.oilpriceapi.com/v1/prices/latest?by_code=WTI_USD,BRENT_CRUDE_USD" \
  -H "Authorization: Token YOUR_API_KEY"

Integration Examples

Transportation Management System Integration

Build fuel cost calculations into your TMS or freight management platform. For spreadsheet integration, see our Google Sheets guide or Airtable integration:

import requests
from datetime import datetime
from typing import Dict, List

class LogisticsFuelManager:
    def __init__(self, api_key):
        self.api_key = api_key
        self.base_url = 'https://api.oilpriceapi.com/v1'
        self.headers = {'Authorization': f'Token {api_key}'}

        # Industry standard fuel efficiency rates (miles per gallon)
        self.mpg_standards = {
            'dry_van': 6.5,
            'reefer': 5.8,
            'flatbed': 6.2,
            'tanker': 5.5,
            'ltl': 7.0,
            'sprinter_van': 14.0,
            'box_truck': 10.0
        }

    def get_diesel_price(self) -> float:
        """Get current diesel price."""
        response = requests.get(
            f'{self.base_url}/prices/latest',
            params={'by_code': 'DIESEL_USD'},
            headers=self.headers
        )
        data = response.json()
        return data['data']['price']

    def calculate_lane_fuel_cost(self, distance_miles: float,
                                  equipment_type: str = 'dry_van') -> Dict:
        """Calculate fuel cost for a specific lane."""
        mpg = self.mpg_standards.get(equipment_type, 6.5)
        diesel_price = self.get_diesel_price()

        gallons_needed = distance_miles / mpg
        fuel_cost = gallons_needed * diesel_price
        cost_per_mile = fuel_cost / distance_miles

        return {
            'distance_miles': distance_miles,
            'equipment_type': equipment_type,
            'mpg': mpg,
            'gallons_needed': round(gallons_needed, 2),
            'diesel_price': diesel_price,
            'total_fuel_cost': round(fuel_cost, 2),
            'cost_per_mile': round(cost_per_mile, 3)
        }

    def calculate_fuel_surcharge(self, base_fuel_price: float,
                                  distance_miles: float,
                                  base_surcharge_per_mile: float = 0.0) -> Dict:
        """Calculate fuel surcharge based on current vs base fuel price."""
        current_price = self.get_diesel_price()
        price_difference = current_price - base_fuel_price

        # Standard surcharge calculation: price difference * miles / mpg
        standard_mpg = 6.0  # Industry standard for surcharge calculations
        surcharge = (price_difference / standard_mpg) * distance_miles

        # Alternative: per-mile surcharge based on price tiers
        if current_price <= base_fuel_price:
            tier_surcharge_per_mile = base_surcharge_per_mile
        elif current_price <= base_fuel_price + 0.50:
            tier_surcharge_per_mile = base_surcharge_per_mile + 0.05
        elif current_price <= base_fuel_price + 1.00:
            tier_surcharge_per_mile = base_surcharge_per_mile + 0.12
        else:
            tier_surcharge_per_mile = base_surcharge_per_mile + 0.20

        return {
            'base_fuel_price': base_fuel_price,
            'current_fuel_price': current_price,
            'price_difference': round(price_difference, 3),
            'distance_miles': distance_miles,
            'calculated_surcharge': round(surcharge, 2),
            'tier_surcharge_per_mile': tier_surcharge_per_mile,
            'tier_surcharge_total': round(tier_surcharge_per_mile * distance_miles, 2)
        }

    def estimate_shipment_fuel_cost(self, shipments: List[Dict]) -> Dict:
        """Estimate total fuel cost for multiple shipments."""
        diesel_price = self.get_diesel_price()
        total_miles = 0
        total_gallons = 0
        total_fuel_cost = 0

        shipment_details = []
        for shipment in shipments:
            mpg = self.mpg_standards.get(shipment.get('equipment', 'dry_van'), 6.5)
            miles = shipment['distance_miles']
            gallons = miles / mpg
            fuel_cost = gallons * diesel_price

            total_miles += miles
            total_gallons += gallons
            total_fuel_cost += fuel_cost

            shipment_details.append({
                'shipment_id': shipment.get('id', 'unknown'),
                'origin': shipment.get('origin', ''),
                'destination': shipment.get('destination', ''),
                'distance_miles': miles,
                'fuel_cost': round(fuel_cost, 2)
            })

        return {
            'diesel_price': diesel_price,
            'total_miles': total_miles,
            'total_gallons': round(total_gallons, 2),
            'total_fuel_cost': round(total_fuel_cost, 2),
            'average_cost_per_mile': round(total_fuel_cost / total_miles, 3) if total_miles > 0 else 0,
            'shipments': shipment_details
        }

    def get_price_trend(self, days: int = 30) -> Dict:
        """Get fuel price trend for forecasting."""
        endpoint = 'past_week' if days <= 7 else 'past_month' if days <= 30 else 'past_year'
        response = requests.get(
            f'{self.base_url}/prices/{endpoint}',
            params={'by_code': 'DIESEL_USD', 'interval': '1d'},
            headers=self.headers
        )
        data = response.json()
        prices = [p['price'] for p in data['data']['prices']]

        current = prices[0]
        avg = sum(prices) / len(prices)
        change = current - prices[-1]
        change_pct = (change / prices[-1]) * 100

        return {
            'current_price': current,
            'period_average': round(avg, 3),
            'period_low': min(prices),
            'period_high': max(prices),
            'price_change': round(change, 3),
            'change_pct': round(change_pct, 2),
            'trend': 'rising' if change_pct > 2 else 'falling' if change_pct < -2 else 'stable',
            'volatility': round((max(prices) - min(prices)) / avg * 100, 2)
        }

# Usage example
logistics = LogisticsFuelManager('YOUR_API_KEY')

# Calculate fuel cost for a lane
lane_cost = logistics.calculate_lane_fuel_cost(
    distance_miles=1500,
    equipment_type='reefer'
)
print(f"Lane fuel cost: ${lane_cost['total_fuel_cost']}")

# Calculate fuel surcharge
surcharge = logistics.calculate_fuel_surcharge(
    base_fuel_price=3.00,
    distance_miles=1500
)
print(f"Fuel surcharge: ${surcharge['calculated_surcharge']}")

JavaScript/Node.js Freight Rate Calculator

class FreightFuelCalculator {
  constructor(apiKey) {
    this.apiKey = apiKey;
    this.baseUrl = 'https://api.oilpriceapi.com/v1';

    // Equipment fuel efficiency (MPG)
    this.mpgRates = {
      'dry_van': 6.5,
      'reefer': 5.8,
      'flatbed': 6.2,
      'tanker': 5.5,
      'ltl': 7.0,
      'sprinter': 14.0
    };
  }

  async getDieselPrice() {
    const response = await fetch(
      `${this.baseUrl}/prices/latest?by_code=DIESEL_USD`,
      {
        headers: { 'Authorization': `Token ${this.apiKey}` }
      }
    );
    const data = await response.json();
    return data.data.price;
  }

  async calculateFreightRate(params) {
    const {
      distanceMiles,
      equipment = 'dry_van',
      baseRatePerMile,
      baseFuelPrice = 3.00
    } = params;

    const currentDieselPrice = await this.getDieselPrice();
    const mpg = this.mpgRates[equipment] || 6.5;

    // Base freight calculation
    const baseCost = distanceMiles * baseRatePerMile;

    // Fuel cost calculation
    const gallonsNeeded = distanceMiles / mpg;
    const fuelCost = gallonsNeeded * currentDieselPrice;
    const fuelCostPerMile = fuelCost / distanceMiles;

    // Fuel surcharge (difference from base)
    const fuelSurcharge = ((currentDieselPrice - baseFuelPrice) / 6.0) * distanceMiles;

    return {
      distanceMiles,
      equipment,
      dieselPrice: currentDieselPrice,
      baseCost: Math.round(baseCost * 100) / 100,
      fuelCost: Math.round(fuelCost * 100) / 100,
      fuelSurcharge: Math.max(0, Math.round(fuelSurcharge * 100) / 100),
      totalRate: Math.round((baseCost + Math.max(0, fuelSurcharge)) * 100) / 100,
      breakdown: {
        baseRatePerMile,
        fuelCostPerMile: Math.round(fuelCostPerMile * 1000) / 1000,
        totalPerMile: Math.round((baseCost + Math.max(0, fuelSurcharge)) / distanceMiles * 1000) / 1000
      }
    };
  }

  async calculateMultiStopRoute(stops) {
    const dieselPrice = await this.getDieselPrice();
    let totalMiles = 0;
    let totalFuelCost = 0;
    const legs = [];

    for (let i = 0; i < stops.length - 1; i++) {
      const legMiles = stops[i].distanceToNext;
      const mpg = this.mpgRates[stops[i].equipment || 'dry_van'];
      const fuelCost = (legMiles / mpg) * dieselPrice;

      totalMiles += legMiles;
      totalFuelCost += fuelCost;

      legs.push({
        from: stops[i].location,
        to: stops[i + 1].location,
        miles: legMiles,
        fuelCost: Math.round(fuelCost * 100) / 100
      });
    }

    return {
      dieselPrice,
      totalMiles,
      totalFuelCost: Math.round(totalFuelCost * 100) / 100,
      averageCostPerMile: Math.round((totalFuelCost / totalMiles) * 1000) / 1000,
      legs
    };
  }

  async getBenchmarkData() {
    const response = await fetch(
      `${this.baseUrl}/prices/past_month?by_code=DIESEL_USD&interval=1d`,
      {
        headers: { 'Authorization': `Token ${this.apiKey}` }
      }
    );
    const data = await response.json();
    const prices = data.data.prices.map(p => p.price);

    return {
      current: prices[0],
      monthAverage: Math.round(prices.reduce((a, b) => a + b, 0) / prices.length * 1000) / 1000,
      monthLow: Math.min(...prices),
      monthHigh: Math.max(...prices),
      trend: prices[0] > prices[prices.length - 1] ? 'rising' : 'falling'
    };
  }
}

// Calculate freight rate with fuel
const calculator = new FreightFuelCalculator(process.env.OILPRICE_API_KEY);

const rate = await calculator.calculateFreightRate({
  distanceMiles: 1200,
  equipment: 'reefer',
  baseRatePerMile: 2.50,
  baseFuelPrice: 3.00
});

console.log(`Total freight rate: $${rate.totalRate}`);
console.log(`Fuel surcharge: $${rate.fuelSurcharge}`);

Use Cases

1. Automated Fuel Surcharge Calculations

Calculate and update fuel surcharges automatically based on current market prices, ensuring accurate and defensible customer billing.

2. Lane Cost Analysis

Evaluate true lane profitability by incorporating real-time fuel costs into rate calculations for specific origin-destination pairs.

3. Carrier Rate Negotiations

Use current and historical fuel price data to negotiate fair rates with carriers based on transparent market benchmarks.

4. Route Optimization

Factor fuel costs into routing decisions to minimize total transportation cost, not just distance or time.

5. Customer Quoting

Generate accurate freight quotes by including real-time fuel cost estimates rather than outdated averages.

6. Budget Forecasting

Use price trends and volatility data to create more accurate transportation budget forecasts.

ROI and Value Proposition

MetricTypical Improvement
Fuel surcharge accuracy+25% improvement vs. monthly averages
Quote win rate+10-15% with competitive, accurate pricing
Admin time reduction75% less time on manual fuel tracking
Margin protectionFaster reaction to fuel price changes

For a logistics operation with $5M annual fuel spend, improved surcharge recovery and cost forecasting can add $100,000-250,000 in annual margin.

Why Companies Choose OilPriceAPI

Our API helps logistics businesses save time and improve accuracy in fuel cost management. With real-time data integration, companies can automate fuel surcharge calculations, improve quoting accuracy, and protect margins during volatile market conditions.

Getting Started

  1. Sign up at oilpriceapi.com/signup
  2. Get your API key from the dashboard
  3. Test fuel endpoints using the examples above
  4. Integrate with your TMS or freight management system
  5. Automate fuel surcharge calculations and cost tracking

Frequently Asked Questions

How often is logistics fuel price data updated?

OilPriceAPI updates prices every 15 minutes during market hours, with diesel prices refreshed multiple times per hour. This frequency enables real-time fuel surcharge calculations and accurate freight rate quotes throughout the business day.

What fuel types are most relevant for logistics operations?

Logistics operators typically track diesel (DIESEL_USD) as the primary fuel for trucking and rail, gasoline (GASOLINE_USD) for light-duty delivery vehicles, and natural gas (NATURAL_GAS_USD) for alternative fuel fleets. All are available through our single API.

Can I access historical price data for contract negotiations?

Yes, all plans include historical data access. Use the /v1/prices/past_month or /v1/prices/past_year endpoints to establish baseline pricing for carrier contracts and demonstrate market-based fuel surcharge calculations to customers.

How quickly can I integrate the API into our TMS?

Most developers integrate within 1-2 hours using our code examples. The free tier is available immediately after signup, allowing you to test fuel endpoints with your transportation management system before committing to a paid plan.

How do I calculate automated fuel surcharges?

Query the API for current diesel price and compare against your contracted base price. Our code examples above demonstrate standard industry surcharge formulas based on price per gallon difference divided by MPG standards, multiplied by lane distance.

Does the API support multi-modal logistics operations?

Yes, we provide pricing for diesel (trucking), jet fuel (air freight), and marine fuels (ocean shipping) in a single API. This enables comprehensive fuel cost tracking across your entire supply chain network regardless of transportation mode.

Related Resources

  • Zapier Integration - Automate fuel price workflows
  • Make Integration - Build custom automation scenarios
  • Google Sheets Integration - Spreadsheet tracking
  • Airtable Integration - Database integration
  • Power BI Integration - Create logistics dashboards
  • EIA Alternative - Compare vs. EIA data
  • Commodity Data API - Market comparison
  • Fleet Management API - Fleet-specific use cases
  • Maritime Bunker API - Ocean freight fuel costs
  • Fleet Cost Calculator - Estimate fleet expenses
  • Fuel Cost Estimator - Trip cost calculations
  • Diesel Price Data - Diesel documentation
  • API Authentication Guide - Secure API access
Last Updated: 12/28/25, 11:07 AM