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

    • Ship&Bunker Data Connector | OilPriceAPI

Ship&Bunker Data Connector

Category: Data Connectors | Industry: Maritime & Shipping | Pilot Program

Transform your Ship&Bunker subscription into a programmable API. Access 218 ports across 3 regions with VLSFO, MGO, and IFO380 pricing—delivered directly to your systems via OilPriceAPI.

Pilot Program

We're offering early access to our Ship&Bunker Data Connector. Contact us to join the pilot program.

The Challenge

You already pay for Ship&Bunker. But you can't use the data programmatically:

  • No API access — Ship&Bunker provides a website, not an API
  • Manual data collection — Copy-pasting prices from 218 ports is impractical
  • No automation — Can't integrate bunker prices into your systems
  • No historical archive — Website shows only current prices, not trends
  • Siloed data — Can't combine with other market data sources

Your analysts waste hours manually collecting data that should flow automatically into your dashboards, voyage planning systems, and fuel procurement tools.

The Solution

OilPriceAPI's Ship&Bunker Data Connector bridges this gap. Connect your existing subscription, and we'll:

  1. Collect prices automatically from all 218 ports twice daily
  2. Deliver via API in the same format as all OilPriceAPI data
  3. Archive historical data so you can analyze trends
  4. Combine with other sources — one API for all your energy data

What You Get

FeatureDetails
Port Coverage218 ports across Americas, EMEA, and Asia-Pacific
Fuel GradesVLSFO, MGO, IFO380
Update FrequencyTwice daily (6 AM and 6 PM UTC, Mon-Fri)
Historical DataArchived from first connection onwards
Data FormatJSON via REST API, identical to all OilPriceAPI endpoints
Organization ScopeYour data is isolated and accessible only to your team

Regional Coverage

RegionPortsExample Locations
Americas~80 portsHouston, New York, Santos, Cartagena, Vancouver
EMEA~78 portsRotterdam, Fujairah, Gibraltar, Piraeus, Lagos
Asia-Pacific~60 portsSingapore, Hong Kong, Busan, Tokyo, Sydney

How Credentials Are Protected

We understand asking for your Ship&Bunker credentials is a significant trust request. Here's exactly how we protect them:

Enterprise-Grade Encryption

Your Credentials → AES-256-GCM Encryption → Encrypted Storage
                          ↓
              Decryption only at scrape time
                          ↓
              Ship&Bunker Website (read-only)
Security MeasureImplementation
Encryption AlgorithmAES-256-GCM (same as banks use)
Encryption TimingCredentials encrypted immediately on entry
StorageNever stored in plain text, ever
AccessDecrypted only during automated price collection
ScopeRead-only access to price pages only
LoggingCredentials never appear in logs

What We Do (And Don't Do)

We DO:

  • Encrypt your credentials using AES-256-GCM before storing
  • Access Ship&Bunker only to read price data
  • Collect prices twice daily during market hours
  • Store prices in your organization's isolated data space
  • Allow you to disconnect at any time with one click

We DON'T:

  • Store passwords in plain text (ever)
  • Access any Ship&Bunker features besides prices
  • Share your data with other organizations
  • Modify your Ship&Bunker account settings
  • Retain credentials after you disconnect

You Stay In Control

  • Disconnect anytime — Remove the connection with one click
  • View activity logs — See every price collection attempt
  • Pause collection — Temporarily stop without disconnecting
  • Change credentials — Update if you change your Ship&Bunker password

Your Responsibility

Ensure your Ship&Bunker subscription terms permit automated access. We recommend reviewing your subscriber agreement or contacting Ship&Bunker support.


Data Freshness & Update Schedule

Ship&Bunker updates prices throughout the trading day, with final prices typically published at market close. Our collection schedule is designed to capture these updates:

Collection Schedule

ScheduleTime (UTC)Time (EST)Time (SGT)Purpose
Primary6:00 AM1:00 AM2:00 PMCatch overnight/delayed updates
Backup6:00 PM1:00 PM2:00 AMCatch same-day updates

What This Means for Your Data

  • Monday-Friday only — Markets closed weekends; weekend queries return Friday's data
  • Maximum lag: ~12 hours — If Ship&Bunker updates at 7 AM UTC, you'll see it by 6 PM UTC
  • Typical lag: <6 hours — Most updates captured in the next scheduled run
  • Historical continuity — Daily snapshots archived for trend analysis

Market Holidays

Ship&Bunker may not update on major market holidays. During these periods:

  • No new prices collected
  • API returns most recent available prices
  • Historical queries maintain continuity

API Access

Once connected, your Ship&Bunker data is available through standard OilPriceAPI endpoints:

Get Your Ship&Bunker Prices

# Get all your BYOS prices
curl "https://api.oilpriceapi.com/v1/prices/latest?source=byos" \
  -H "Authorization: Token YOUR_API_KEY"

# Get specific port/fuel combination
curl "https://api.oilpriceapi.com/v1/prices/latest?by_code=VLSFO_BYOS_{ORG_ID}_SINGAPORE_USD" \
  -H "Authorization: Token YOUR_API_KEY"

# Get all VLSFO prices from your subscription
curl "https://api.oilpriceapi.com/v1/prices/latest?source=byos&fuel_type=VLSFO" \
  -H "Authorization: Token YOUR_API_KEY"

Response Format

{
  "status": "success",
  "data": {
    "prices": [
      {
        "price": 567.50,
        "formatted": "$567.50",
        "currency": "USD",
        "code": "VLSFO_BYOS_abc123_SINGAPORE_USD",
        "port": "Singapore",
        "fuel_grade": "VLSFO",
        "source": "byos.shipandbunker",
        "created_at": "2026-01-17T06:15:00.000Z",
        "type": "spot_price"
      },
      {
        "price": 489.00,
        "formatted": "$489.00",
        "currency": "USD",
        "code": "IFO380_BYOS_abc123_SINGAPORE_USD",
        "port": "Singapore",
        "fuel_grade": "IFO380",
        "source": "byos.shipandbunker",
        "created_at": "2026-01-17T06:15:00.000Z",
        "type": "spot_price"
      }
    ],
    "meta": {
      "count": 2,
      "source": "byos.shipandbunker",
      "last_updated": "2026-01-17T06:15:00.000Z"
    }
  }
}

Historical Data

# Past month of Singapore VLSFO from your subscription
curl "https://api.oilpriceapi.com/v1/prices/past_month?by_code=VLSFO_BYOS_{ORG_ID}_SINGAPORE_USD" \
  -H "Authorization: Token YOUR_API_KEY"

Getting Started

Step 1: Contact Us for Pilot Access

The Ship&Bunker Data Connector is currently in pilot. Email us to request access.

Include:

  • Your company name
  • Approximate number of ports you need
  • Your primary use case (voyage planning, procurement, analytics, etc.)

Step 2: Create an Organization

Once approved, we'll help you set up an organization in OilPriceAPI:

  1. Log into your OilPriceAPI dashboard
  2. Navigate to Settings > Organizations
  3. Create a new organization for your Ship&Bunker data

Step 3: Connect Your Ship&Bunker Account

  1. Go to Data Sources in your organization settings
  2. Click Add Data Source
  3. Select Ship&Bunker
  4. Enter your Ship&Bunker credentials
  5. Select ports to monitor (or leave empty for all 218)
  6. Click Connect & Test

Step 4: Verify Connection

We'll immediately attempt a test scrape:

  • Success: You'll see sample prices within 2 minutes
  • Auth Failure: Check your credentials and try again
  • Partial Success: Some ports may be unavailable; we'll show which ones worked

Step 5: Start Using the API

Your Ship&Bunker data is now available via the API. Use the endpoints above to integrate with your systems.


Use Cases

Voyage Planning Systems

Integrate real-time bunker prices from 218 ports into your voyage optimization software:

import requests

class VoyageBunkerPlanner:
    def __init__(self, api_key, org_id):
        self.api_key = api_key
        self.org_id = org_id
        self.base_url = 'https://api.oilpriceapi.com/v1'

    def get_route_bunker_options(self, ports, fuel_grade='VLSFO'):
        """Get bunker prices for all ports on a route."""
        codes = [f'{fuel_grade}_BYOS_{self.org_id}_{port}_USD' for port in ports]

        response = requests.get(
            f'{self.base_url}/prices/latest',
            params={'by_code': ','.join(codes)},
            headers={'Authorization': f'Token {self.api_key}'}
        )

        prices = response.json()['data']['prices']
        return sorted(prices, key=lambda p: p['price'])

# Find cheapest bunkering on Asia-Europe route
planner = VoyageBunkerPlanner('YOUR_API_KEY', 'YOUR_ORG_ID')
route_ports = ['SINGAPORE', 'COLOMBO', 'FUJAIRAH', 'SUEZ', 'PIRAEUS', 'ROTTERDAM']
options = planner.get_route_bunker_options(route_ports)

print("Cheapest bunkering options:")
for opt in options[:3]:
    print(f"  {opt['port']}: ${opt['price']}/MT")

Procurement Dashboards

Build real-time bunker procurement dashboards with all 218 ports:

// React component for bunker price dashboard
async function fetchBunkerPrices(apiKey, orgId, region) {
  const response = await fetch(
    `https://api.oilpriceapi.com/v1/prices/latest?source=byos&region=${region}`,
    { headers: { 'Authorization': `Token ${apiKey}` } }
  );
  return response.json();
}

// Refresh every 15 minutes
setInterval(() => {
  fetchBunkerPrices(API_KEY, ORG_ID, 'apac')
    .then(data => updateDashboard(data.prices));
}, 15 * 60 * 1000);

Historical Analysis

Analyze price trends across ports to optimize bunkering timing:

import pandas as pd
import requests

def get_port_history(api_key, org_id, port, fuel_grade='VLSFO', days=30):
    """Get historical prices for trend analysis."""
    code = f'{fuel_grade}_BYOS_{org_id}_{port}_USD'
    endpoint = 'past_month' if days <= 30 else 'past_year'

    response = requests.get(
        f'https://api.oilpriceapi.com/v1/prices/{endpoint}',
        params={'by_code': code},
        headers={'Authorization': f'Token {api_key}'}
    )

    prices = response.json()['data']['prices']
    df = pd.DataFrame(prices)
    df['date'] = pd.to_datetime(df['created_at'])
    df.set_index('date', inplace=True)

    return df

# Compare Singapore vs Rotterdam VLSFO trends
singapore = get_port_history(API_KEY, ORG_ID, 'SINGAPORE')
rotterdam = get_port_history(API_KEY, ORG_ID, 'ROTTERDAM')

spread = singapore['price'] - rotterdam['price']
print(f"Singapore-Rotterdam spread: ${spread.mean():.2f} average")

Pricing

The Ship&Bunker Data Connector is included with OilPriceAPI subscriptions:

PlanConnector AccessPortsUpdate Frequency
ProfessionalIncludedAll 218Twice daily
BusinessIncludedAll 218Twice daily
EnterpriseIncludedAll 218Twice daily + on-demand

Pilot Pricing

During the pilot program, connector access is available to all plans including Professional. Contact us for details.


Frequently Asked Questions

Is it safe to enter my Ship&Bunker password?

Yes. Your credentials are encrypted using AES-256-GCM (the same encryption standard used by banks) immediately upon entry. They are never stored in plain text, never appear in logs, and are only decrypted during automated price collection. You can disconnect at any time, which removes all stored credentials.

Does this violate Ship&Bunker's terms of service?

We recommend reviewing your Ship&Bunker subscriber agreement. Our connector accesses the same web pages you would access manually, just automated. Many enterprise subscribers use similar automation tools. If you're uncertain, contact Ship&Bunker support to confirm their policy on automated access.

How quickly will I see updated prices?

Ship&Bunker updates prices throughout the trading day. Our collector runs twice daily (6 AM and 6 PM UTC, Monday-Friday). This means you'll typically see prices within 6-12 hours of Ship&Bunker publishing them.

Can I connect multiple Ship&Bunker accounts?

Yes. Each data source connection can use different credentials. This is useful if your organization has multiple Ship&Bunker subscriptions or regional accounts.

What happens if my Ship&Bunker password changes?

Update your credentials in the OilPriceAPI dashboard. We'll detect authentication failures and notify you, pausing collection until you update the credentials.

Can I limit which ports are collected?

Yes. When setting up the connection, you can specify a list of ports to monitor. Leave empty to collect all 218 ports. You can update this list at any time.

What if Ship&Bunker's website changes?

Our scraper is designed with multiple fallback selectors and adaptive parsing. If Ship&Bunker significantly changes their website structure, we'll update our scraper. During any maintenance period, we'll notify you and serve the most recent cached prices.

How is my data isolated from other customers?

All prices collected through your connector are tagged with your organization ID and stored in an isolated namespace. Other organizations cannot see or query your data, even if they also use the Ship&Bunker connector.

Can I export the data to Excel/CSV?

Yes. Use the historical API endpoints and convert to CSV:

curl "https://api.oilpriceapi.com/v1/prices/past_month?source=byos&format=csv" \
  -H "Authorization: Token YOUR_API_KEY" \
  -o bunker_prices.csv

What support is available during the pilot?

Pilot participants receive:

  • Direct email support ([email protected])
  • Setup assistance via video call if needed
  • Priority bug fixes for connector issues
  • Input into feature development

Ready to Connect Your Ship&Bunker Data?

Join our pilot program to transform your Ship&Bunker subscription into a programmable API.

Request Pilot Access{.action-button}


Related Resources

  • Maritime Bunker Fuel API — Standard OilPriceAPI bunker data
  • Power BI Integration — Build bunker price dashboards
  • Tableau Integration — Visualization for voyage planning
  • API Authentication Guide — Secure API access
  • Marine Fuel API Reference — Complete endpoint documentation
Last Updated: 1/18/26, 11:31 AM