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.

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.

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:

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.

Customer Success Story

"Integrating OilPriceAPI into our TMS transformed our fuel surcharge process. We went from updating surcharges monthly to real-time calculations, which protected our margins during the volatile price swings and improved our customer relationships through transparent pricing."

-- [Customer Success Story Placeholder]

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

Related Resources

  • Diesel Price Data - Diesel documentation
  • API Authentication Guide - Secure API access
  • Historical Prices API - Trend analysis
  • Fleet Management Solutions - Fleet-specific use cases
  • Rate Limits and Pricing - Plan selection guide
Last Updated: 12/28/25, 12:24 AM