Get comprehensive marine fuel prices from all ports and all fuel grades.
Header | Required | Description |
---|
Authorization | Yes | Token authentication with your API key |
Accept | No | application/json (default) |
Parameter | Type | Required | Description | Example |
---|
port | string | No | Filter by specific port code | SGSIN , NLRTM |
fuel_type | string | No | Filter by fuel grade | VLSFO , MGO_05 , HFO_380 , HFO_180 |
region | string | No | Filter by region | asia , europe , americas |
Code | Port | Country | Region |
---|
SGSIN | Singapore | Singapore | asia |
NLRTM | Rotterdam | Netherlands | europe |
USHOU | Houston | United States | americas |
AEFUJ | Fujairah | UAE | middle_east |
HKHKG | Hong Kong | Hong Kong | asia |
USLAX | Los Angeles | United States | americas |
USNYC | New York | United States | americas |
BRSSZ | Santos | Brazil | americas |
Code | Full Name | Sulfur Content | IMO 2020 Compliant |
---|
MGO_05 | Marine Gas Oil 0.5%S | ≤ 0.5% | ✅ Yes |
VLSFO | Very Low Sulfur Fuel Oil | ≤ 0.5% | ✅ Yes |
HFO_380 | Heavy Fuel Oil 380 CST | ~3.5% | ❌ Scrubber required |
HFO_180 | Heavy Fuel Oil 180 CST | ~3.5% | ❌ Scrubber required |
async function findOptimalBunkering(voyageRoute, fuelRequired) {
const fuelType = 'VLSFO';
const prices = await getMarineFuelPrices({ fuel_type: fuelType });
const routePorts = prices.filter(port =>
voyageRoute.includes(port.port.code)
);
const options = routePorts.map(port => ({
port: port.port.name,
fuelCost: port.prices[fuelType].price * fuelRequired,
deviationCost: calculateDeviationCost(voyageRoute, port.port.code),
totalCost: (port.prices[fuelType].price * fuelRequired) +
calculateDeviationCost(voyageRoute, port.port.code)
}));
return options.sort((a, b) => a.totalCost - b.totalCost)[0];
}
def monitor_price_changes(threshold_percent=2.0):
api = MarineFuelAPI('YOUR_API_KEY')
current_prices = api.get_marine_fuels()
for port_data in current_prices:
for fuel_type, price_data in port_data['prices'].items():
change_percent = abs(price_data['change_percent'])
if change_percent >= threshold_percent:
send_alert({
'port': port_data['port']['name'],
'fuel': fuel_type,
'price': price_data['formatted'],
'change': f"{price_data['change_percent']:+.1f}%",
'timestamp': price_data['timestamp']
})
async function createMarketDashboard() {
const allPrices = await getMarineFuelPrices();
const stats = {
totalPorts: allPrices.length,
priceRanges: {},
regionalAverages: {},
volatility: {}
};
['MGO_05', 'VLSFO', 'HFO_380', 'HFO_180'].forEach(fuelType => {
const prices = allPrices
.filter(p => p.prices[fuelType])
.map(p => p.prices[fuelType].price);
stats.priceRanges[fuelType] = {
min: Math.min(...prices),
max: Math.max(...prices),
avg: prices.reduce((a, b) => a + b, 0) / prices.length,
spread: Math.max(...prices) - Math.min(...prices)
};
});
const regions = ['asia', 'europe', 'americas'];
regions.forEach(region => {
const regionPorts = allPrices.filter(p => p.port.region === region);
stats.regionalAverages[region] = calculateRegionalStats(regionPorts);
});
return stats;
}