Query real-time full container rates by POL + POD. Covers 53 carriers and 1,200+ ports, with 20GP/40GP/40HQ container types, surcharges, schedules, and validity periods.
Endpoint Info
Endpoint
POST /api/openapi/v1/freight/fcl/search
Credit cost
1 credits / call
Data freshness
Daily
Timeout suggestion
Client timeout ≥ 3s
Request Parameters
Field
Type
Required
Description
Example
pol
string
Yes
Port of Loading, accepts 5-letter code (exact) / Chinese / English (fuzzy)Look up code ↗
CNSHA / Shanghai
pod
string
Yes
Port of Discharge, accepts 5-letter code (exact) / Chinese / English (fuzzy)Look up code ↗
USLSA / Los Angeles
carrier
string
No
Carrier, accepts code (exact) / Chinese / English (fuzzy)Look up code ↗
MSK / Maersk
page
int
No
Page number, default 1
1
limit
int
No
Page size, default 20, max 50
20
pol_country
string
No
Origin country code (2-letter ISO, optional); pins the country when pol matches multiple same-name ports
CN
pod_country
string
No
Destination country code (2-letter ISO, optional). When pod matches multiple same-name ports (e.g. San Antonio in CL/US/AR), without it the endpoint returns rates for all same-name ports and charges per matched port; pass it to pin a single country
US
Response Fields
Field
Type
Description
resolved.pol / pod
object
Echo of the parsed port (with input as raw input, code as parsed code, name in Chinese, name_en in English), for client confirmation
list[].id
string
Unique rate record ID
list[].pol / pod
object
Port of Loading / Port of Discharge { code, name, name_en }
list[].carrier
object
Carrier { code, name } (e.g. EMC Evergreen, MSK Maersk, ONE Ocean Network Express)
list[].transit
object
{ is_direct: whether direct sailing, days: transit days, port/port_en: transshipment port in Chinese/English }
list[].schedule.cutoff_date
string
Cut-off date (YYYY-MM-DD; cargo and SI must arrive by this date after booking)
list[].schedule.departure_date
string
Departure date (ETD) (YYYY-MM-DD)
list[].schedule.arrival_date
string
Estimated arrival date (ETA)
list[].schedule.vessel_name / voyage
string
Vessel name / voyage number (may be empty for some carriers)
list[].schedule.service_code
string
Service route code (carrier-assigned route code, e.g. TP6 = TransPacific route 6; useful for predicting fixed schedules; may be empty for some carriers)
list[].prices
object
Base ocean freight for three container types { 20GP, 40GP, 40HQ, currency: USD } (includes BAF/EBS)
Multiple POD matches: rates for all same-name ports
When pod matches multiple same-name ports (e.g. San Antonio in Chile / US / Argentina), the endpoint automatically queries each port and merges the rates; every item in list carries a pod field marking its port, and you are charged per port that returned rates (N ports = N× credits; ports with no rate data are not charged). To narrow to one country, pass pod_country (2-letter ISO code) to pin a single port and pay only once. If pol matches multiple ports, the main port is auto-selected and not expanded.