Oil and Gas Supply Chain (ME)

ONGSCM991· 144K records · 14 tables · v1.0.0 · Updated 2026-08-11
Energy Oil & Gas Dataset API
CSV JSON SQLoil-and-gassupply-chainexportsshipmentstanker-ratesmiddle-easttime-seriesreconciliationcommodity-trading

Overview

A decade of the Middle Eastern liquids export chain at cargo and parcel grain, commercial and logistics data only. The six producer countries and the destination markets are real; everything below them is invented: the operators and trading houses, every field, refinery and terminal name, and every volume, price and rate. The chain reconciles exactly in integer thousand-barrel units, and the build re-verifies five identities: field production minus refinery intake equals terminal receipts per country and month, terminal closing stock equals opening plus receipts minus exports loaded, cargo volumes sum to the loaded exports once the documented duplicate bills of lading are removed, every cargo's parcels sum to its volume, and the market summary is the exact parcel aggregate. The decade is the market's, stated generically: the 2020 demand crash with production cuts, swelling terminal stocks and a chartering squeeze that multiplies tanker rates while prices collapse, the 2022 price spike, a European buyer jump after mid 2022, growth buyers gaining share all decade and the mature buyer declining. Shipments carry terminal, month, seller, vessel class, cargo size, product, freight and charter type; parcels carry buyer, destination, differential, realized price and value against the invented monthly benchmark. Built for supply-chain analytics, trading and freight modelling, reconciliation exercises, ETL pipelines and BI logic. No reservoir, extraction or process detail appears anywhere. The licence and disclosure sections state the provenance of the data.

Row Counts by Table

Counted from the files that ship, not estimated.

TableRows
ong_companies24
ong_countries6
ong_markets11
ong_fields40
ong_refineries12
ong_terminals10
ong_field_production5,040
ong_refinery_intake1,512
ong_terminal_inventory1,260
ong_benchmark_prices126
ong_tanker_rates376
ong_shipments53,626
ong_parcels80,260
ong_market_monthly1,386

Table Relationships

One parent record and seven child tables, each joined back on the same key.

70%
Loading diagram

Schema

Every table ships with typed columns, referential integrity, and documentation.

ong_companies· Rows: 24
ColumnTypeDescription
company_idvarchar(8)Company key. Primary key. One trading house is renamed mid-series into a successor id, unlinked.
company_namevarchar(40)Generated company name. Collisions with real national oil companies, majors and traders are a build failure.
home_country_codevarchar(8)Where the company is based. Trading houses may sit outside the producer countries.
company_typevarchar(24)national_operator, joint_venture or trading_house.
founded_yearintegerYear the company was founded.
ong_countries· Rows: 6
ColumnTypeDescription
country_codevarchar(8)Producer country key, ISO 3166-1 alpha-2. Primary key. The six countries are the only real geography on the supply side.
country_namevarchar(32)The country in words.
field_countintegerGenerated fields in the country.
refinery_countintegerGenerated refineries in the country.
terminal_countintegerGenerated export terminals in the country.
country_descriptionvarchar(112)What is generated below this country.
ong_markets· Rows: 11
ColumnTypeDescription
market_codevarchar(16)Destination market key. Primary key. Real countries at market level, plus the UNKNOWN code for cargoes whose destination is undeclared at loading.
market_namevarchar(48)The market in words.
market_rolevarchar(16)destination, or undeclared for the UNKNOWN code.
ong_fields· Rows: 40
ColumnTypeDescription
field_idvarchar(8)Field key. Primary key.
field_namevarchar(24)Generated field name. Collisions with real field names of the region are a build failure.
country_codevarchar(8)The country the field sits in.
operator_company_idvarchar(8)The operating company.
productvarchar(16)crude_oil or condensate.
nameplate_kbbl_monthintegerNameplate capacity in thousand barrels per month. A commercial attribute; no reservoir detail ships anywhere.
start_yearintegerYear production started.

+1 more columns in ong_fields. The full schema ships with the download.

ong_refineries· Rows: 12
ColumnTypeDescription
refinery_idvarchar(8)Refinery key. Primary key.
refinery_namevarchar(32)Generated refinery name. Collisions with real refinery names of the region are a build failure.
country_codevarchar(8)The country the refinery sits in.
operator_company_idvarchar(8)The operating company.
capacity_kbbl_monthintegerIntake capacity in thousand barrels per month.
start_yearintegerYear the refinery started.
ong_terminals· Rows: 10
ColumnTypeDescription
terminal_idvarchar(8)Terminal key. Primary key.
terminal_namevarchar(32)Generated terminal name. Collisions with real terminal names of the region are a build failure.
country_codevarchar(8)The country the terminal sits in.
operator_company_idvarchar(8)The operating company.
storage_capacity_kbblintegerTank storage capacity in thousand barrels. Closing stock never exceeds it.
berth_classvarchar(16)VLCC_CAPABLE or SUEZMAX_MAX: the largest vessel class the terminal loads.
start_yearintegerYear the terminal started.

+1 more columns in ong_terminals. The full schema ships with the download.

ong_field_production· Rows: 5,040
ColumnTypeDescription
production_idvarchar(8)Production row key. Primary key.
field_idvarchar(8)The field.
year_monthvarchar(16)Month of production, 2016-01 to 2026-06. Import as text: spreadsheets convert values like 2021-05 to dates.
productvarchar(16)crude_oil or condensate, matching the field.
volume_kbblintegerProduced volume in integer thousand barrels. The 2020 cut period and maintenance dips are visible.
volume_unitvarchar(16)KBBL, thousand barrels.
ong_refinery_intake· Rows: 1,512
ColumnTypeDescription
intake_idvarchar(8)Intake row key. Primary key.
refinery_idvarchar(8)The refinery.
year_monthvarchar(16)Month of the intake. Import as text.
volume_kbblintegerIntake in integer thousand barrels, deducted from the export chain.
volume_unitvarchar(16)KBBL, thousand barrels.
ong_terminal_inventory· Rows: 1,260
ColumnTypeDescription
inventory_idvarchar(8)Inventory row key. Primary key.
terminal_idvarchar(8)The terminal.
year_monthvarchar(16)Month of the balance. Import as text.
opening_stock_kbblintegerStock at month start. Equals the prior month closing stock; the chain never breaks.
receipts_kbblintegerReceipts from the country system. Reconciles exactly to production minus refinery intake per country-month.
exports_loaded_kbblintegerVolume loaded onto cargoes during the month. Cargo volumes sum to it once the documented duplicate bills of lading are removed.
closing_stock_kbblintegerStock at month end. EXACTLY opening plus receipts minus exports; the build re-verifies every row.

+2 more columns in ong_terminal_inventory. The full schema ships with the download.

ong_benchmark_prices· Rows: 126
ColumnTypeDescription
price_idvarchar(8)Price row key. Primary key.
year_monthvarchar(16)Month of the price. Import as text.
benchmark_usd_bblnumeric(7,2)The invented monthly benchmark price in dollars per barrel. No published assessment is reproduced.
price_unitvarchar(16)USD_PER_BBL.
ong_tanker_rates· Rows: 376
ColumnTypeDescription
rate_idvarchar(8)Rate row key. Primary key.
year_monthvarchar(16)Month of the rate. One vessel class is deliberately missing two months. Import as text.
vessel_classvarchar(16)VLCC, SUEZMAX or AFRAMAX.
rate_usd_bblnumeric(6,2)The invented freight rate in dollars per barrel for the class. The 2020 chartering squeeze is in it.
price_unitvarchar(16)USD_PER_BBL.
ong_shipments· Rows: 53,626
ColumnTypeDescription
shipment_idvarchar(16)Cargo key. Primary key. A documented handful are duplicate bills of lading.
terminal_idvarchar(8)The loading terminal.
year_monthvarchar(16)Loading month. Import as text.
seller_company_idvarchar(8)The selling operator.
vessel_classvarchar(16)VLCC, SUEZMAX or AFRAMAX.
cargo_kbblintegerCargo size in integer thousand barrels. Parcels sum exactly to it.
volume_unitvarchar(16)KBBL, thousand barrels.

+4 more columns in ong_shipments. The full schema ships with the download.

ong_parcels· Rows: 80,260
ColumnTypeDescription
parcel_idvarchar(16)Parcel key. Primary key.
shipment_idvarchar(16)The cargo the parcel belongs to.
buyer_company_idvarchar(8)The buying trading house.
destination_market_codevarchar(16)The destination market, or UNKNOWN when undeclared at loading.
volume_kbblintegerParcel volume in integer thousand barrels.
volume_unitvarchar(16)KBBL, thousand barrels.
differential_usd_bblnumeric(5,2)Differential against the monthly benchmark, in dollars per barrel.

+3 more columns in ong_parcels. The full schema ships with the download.

ong_market_monthly· Rows: 1,386
ColumnTypeDescription
summary_idvarchar(8)Summary row key. Primary key.
market_codevarchar(16)The destination market.
year_monthvarchar(16)Month of the summary. Import as text.
received_kbblintegerThe exact parcel volume bound for the market that month. Re-verified by the build.
parcel_countintegerThe exact parcel count behind the volume.
avg_realized_usd_bblnumeric(7,2)Volume-weighted realized price in dollars per barrel. Empty when no parcels sailed.
volume_unitvarchar(16)KBBL, thousand barrels.

+1 more columns in ong_market_monthly. The full schema ships with the download.

Sample Data

A snapshot of real rows from the dataset (values are fully synthetic).

parcel_idshipment_idbuyer_company_iddestination_market_codevolume_kbblvolume_unitdifferential_usd_bblrealized_price_usd_bblparcel_value_usd
PC000001SH00001TR04CN2097KBBL1.6337.7779203690
PC000002SH00002TR08CN759KBBL-0.3135.8327194970
PC000003SH00002TR05CN645KBBL2.7438.8825077600

Version History

v1.0.02026-08-11First release. Six producer countries, 53,626 cargoes, 80,260 priced parcels, exact five-identity chain reconciliation, invented benchmark and tanker-rate series, 2016-01 to 2026-06.

Related Datasets