Home Projects Cebu Logistics Analysis
⚓ Logistics & Ports Python GeoSpatial 2022-2024 Dataset

Cebu Logistics Analysis

Cebu Port Authority + OpenStreetMap (2022 - 2024)

End-to-end look at how cargo, containers, passengers and ships move through the Cebu Port System — combined with 82,888 OpenStreetMap road segments clipped to Cebu Province for a network-level view of the regional logistics backbone. Built on Cebu Port Authority's open Power BI datasets and HOTOSM road exports.

71.9M
Metric Tons (2024)
993K
Container TEUs (2024)
19.6M
Passengers (2024)
147K
Ship Calls (2024)
Coverage
9 PMOs · Cebu Province · Monthly granularity, 2022 → Q3 2025
Tech Stack
Python Pandas Shapely ijson Chart.js
Key Takeaways

Cebu's port system handled 71.9 Mmt of cargo in 2024 — up 8.4% from 2022 — and is overwhelmingly a domestic, RoRo-first inter-island gateway rather than a foreign-trade port.

  • RoRo (rolling) cargo accounts for 55.8% of all throughput, dwarfing bulk (19.0%), containerized (16.7%) and breakbulk (8.5%).
  • Domestic shipping (inbound + outbound) makes up ~79% of cargo volume; foreign trade (import + export) is only ~21%.
  • PMO Argao and PMO Toledo together handle 37% of system cargo by mt, mostly bulk; PMO CIP dominates containers with 41% of all TEUs.
  • Passenger volume jumped 31% in two years (14.9M → 19.6M) — full post-pandemic recovery and then some.
  • The OSM road network for Cebu Province has 82,888 segments; only ~6,800 are tertiary or higher — the actual freight-grade backbone is small.

Cargo Across the System

How the Cebu Port System's cargo volume has moved month-by-month and year-over-year.

2024 Total Cargo
Highest of the modern series
71.9M mt
2-Year Growth
2022 → 2024 cargo throughput
+8.4%
2024 Peak Month
Single-month volume
May · 6.6M mt
Daily Average
2024, system-wide
~196K mt/day

Monthly Cargo Throughput

Metric tons per month, 2022 - 2024 (2025 partial)

Annual Totals

Cargo (Mmt), Containers (K TEU), Passengers (M)

Ship Calls per Year

Vessel arrivals across all 9 PMOs

Rolling Cargo Dominates

RoRo / rolling cargo — vehicles, trucks and trailers that drive on and off ferries — accounts for over half of everything that moves through Cebu's ports.

Cargo Mix by Type (2024)

Share of 71.9M metric tons

Domestic vs Foreign Movement (2024)

Inbound / outbound (domestic) vs import / export (foreign)

Domestic Inter-Island

79% of cargo
Inbound (mt) 29,751,864
Outbound (mt) 27,373,798
Domestic total 57,125,662 mt
Net flow direction ~Balanced (+2.4M in)

Foreign Trade

21% of cargo
Imports (mt) 13,414,874
Exports (mt) 1,360,483
Foreign total 14,775,357 mt
Import / export ratio 9.9 : 1

Where Cargo Actually Lands

The Cebu Port System is split across 9 Port Management Offices — and the load is far from evenly distributed.

Top PMOs by Cargo (2024)

Metric tons handled, all cargo types

Top PMOs by Containers (2024)

TEUs handled — concentrated in three city ports

PMO Detail (2024)

Cargo, container TEU and share for each Port Management Office

PMO Cargo (mt) Cargo Share Containers (TEU) Profile
PMO Argao 14,767,609 20.5% 4,815 Bulk & rolling cargo (south Cebu)
PMO Toledo 12,102,420 16.8% Mineral & bulk (west coast)
PMO Mandaue 8,622,415 12.0% 52,769 Industrial & mixed
PMO Pier 4 7,992,131 11.1% 257,934 Cebu City — major container terminal
PMO Sta Fe 7,574,731 10.5% Bantayan — RoRo gateway
PMO Pier 1 5,693,209 7.9% 252,454 Cebu City — container & passenger
PMO Danao 5,640,043 7.8% RoRo to Camotes & Leyte
PMO CIP 5,345,713 7.4% 404,271 Cebu Int'l Port — top container terminal
PMO Pier 3 4,162,749 5.8% 21,027 Cebu City — passenger & mixed

Post-Pandemic Recovery

Passenger volumes jumped 31% in two years as inter-island ferry travel rebuilt to and beyond pre-pandemic levels.

Annual Passenger Volume

Total embarking + disembarking passengers

Container Quarterly Trend (2024)

TEUs per quarter — accelerating growth

The Road Backbone

Throughput numbers only matter if cargo can reach the hinterland. Here's what the OSM road network looks like across Cebu Province.

Total Road Segments
All highway tags, Cebu Province
82,888
Trunk + Primary
National-grade arteries
1,935
Secondary + Tertiary
Regional & city distributors
4,857
Freight-Grade Share
Tertiary or higher
8.2%

Road Network Composition

OSM highway-class breakdown — most segments are residential or service roads, not freight corridors

What the Data Says

Five takeaways for anyone doing logistics planning, market sizing, or infrastructure work in the Visayas.

Cebu is a RoRo port first, container port second

Rolling cargo at 55.8% of throughput means trucks-on-ferries shape the network — not container cranes. Capacity planning that ignores RoRo will mis-size everything downstream.

Containers are concentrated in three terminals

CIP, Pier 4 and Pier 1 together handle 92% of all TEUs. Outages or congestion at any one of these has system-wide knock-on effects on shipping schedules.

Imports dwarf exports 9.9-to-1

For every metric ton of foreign exports leaving Cebu, almost ten metric tons of imports arrive. Empty-container repositioning is structurally significant.

Ship calls grew 31% — but cargo only 8%

Average load per call is dropping. More frequent, smaller-cargo voyages suggests rising passenger / RoRo dominance and potentially over-tonnaged container services.

Last-mile is the constraint, not port capacity

Only ~6,800 of 82,888 OSM road segments are tertiary or above. Once cargo leaves the gate, the genuinely freight-rated network is small — and traffic-shared with everything else.

How This Was Built

Open data only, reproducible end-to-end.

📥

Cebu Port Authority datasets

Five CSVs from CPA's public Power BI folder — cargo, container, passenger, rolling cargo, ship calls. Monthly granularity, 2022 → Q3 2025, broken down by PMO, port type, cargo / ship type and movement.

🗺️

OSM road network clip

HOTOSM Philippines roads (988 MB GeoJSON, 1.54M features) streamed with ijson, intersected with the geoBoundaries Cebu Province polygon using a shapely.prepared geometry. Output: 82,888 features in 47 MB.

🧹

Data quality fixes

CPA's movement_type column mixes casing (Inbound vs inbound); aggregations normalize to lowercase before grouping. Numeric columns parsed with thousands separators stripped.

🔄

Reproducible pipeline

Both clip and profiling scripts are in the repo's data/cebu-logistics/_build/. Re-running them against fresh CPA Drive exports refreshes the analysis.

⚖️

PPA is not Cebu

An important gotcha: the Philippine Ports Authority's national stats do not include Cebu — the port is run by the independent Cebu Port Authority. Using PPA data for Visayas freight will silently miss Cebu's volume entirely.

📦

Files in the repo

cpa_cargo.csv, cpa_container.csv, cpa_passenger.csv, cpa_rolling.csv, cpa_shipcall.csv, plus cebu_roads.geojson.gz (6.2 MB compressed) and cebu_roads_summary.csv.