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:
- Collect prices automatically from all 218 ports twice daily
- Deliver via API in the same format as all OilPriceAPI data
- Archive historical data so you can analyze trends
- Combine with other sources — one API for all your energy data
What You Get
| Feature | Details |
|---|---|
| Port Coverage | 218 ports across Americas, EMEA, and Asia-Pacific |
| Fuel Grades | VLSFO, MGO, IFO380 |
| Update Frequency | Twice daily (6 AM and 6 PM UTC, Mon-Fri) |
| Historical Data | Archived from first connection onwards |
| Data Format | JSON via REST API, identical to all OilPriceAPI endpoints |
| Organization Scope | Your data is isolated and accessible only to your team |
Regional Coverage
| Region | Ports | Example Locations |
|---|---|---|
| Americas | ~80 ports | Houston, New York, Santos, Cartagena, Vancouver |
| EMEA | ~78 ports | Rotterdam, Fujairah, Gibraltar, Piraeus, Lagos |
| Asia-Pacific | ~60 ports | Singapore, 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 Measure | Implementation |
|---|---|
| Encryption Algorithm | AES-256-GCM (same as banks use) |
| Encryption Timing | Credentials encrypted immediately on entry |
| Storage | Never stored in plain text, ever |
| Access | Decrypted only during automated price collection |
| Scope | Read-only access to price pages only |
| Logging | Credentials 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
| Schedule | Time (UTC) | Time (EST) | Time (SGT) | Purpose |
|---|---|---|---|---|
| Primary | 6:00 AM | 1:00 AM | 2:00 PM | Catch overnight/delayed updates |
| Backup | 6:00 PM | 1:00 PM | 2:00 AM | Catch 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:
- Log into your OilPriceAPI dashboard
- Navigate to Settings > Organizations
- Create a new organization for your Ship&Bunker data
Step 3: Connect Your Ship&Bunker Account
- Go to Data Sources in your organization settings
- Click Add Data Source
- Select Ship&Bunker
- Enter your Ship&Bunker credentials
- Select ports to monitor (or leave empty for all 218)
- 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®ion=${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:
| Plan | Connector Access | Ports | Update Frequency |
|---|---|---|---|
| Professional | Included | All 218 | Twice daily |
| Business | Included | All 218 | Twice daily |
| Enterprise | Included | All 218 | Twice 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