All APIs

Palm oil prices: CPO and FFB

Crude Palm Oil and Fresh Fruit Bunch prices from Indonesia and Malaysia via API.

First request

Quickstart
curl --request GET \
  --url "https://api.narwhalapi.com/v1/commodities/palmoil/physical/idn-cpo-reference-price" \
  --header "Authorization: Bearer $NARWHAL_API_KEY"
Example response Illustrative response · not a live request

Indonesian Ministry of Trade reference · USD per metric tonne.

{
  "series_id": "idn-cpo-reference-price",
  "currency": "USD",
  "unit": "metric_ton",
  "period_start": "2026-09-01",
  "period_end": "2026-09-30",
  "revision": 1,
  "price": "1007.51"
}

Endpoints

GETDiscover approved physical series/v1/commodities/palmoil/physical
GETRead one latest physical observation/v1/commodities/palmoil/physical/{series_id}
GETRead oldest-first physical history/v1/commodities/palmoil/physical/{series_id}/observations

Sources and methodology

Four distinct price types

CPO reference and market prices. FFB purchase schedules and regional references.

Read the methodology

History with context

Dated observations, quote months and revisions preserve what each price means.

Native units

IDR per kilogram, USD or MYR per tonne, and MYR per 1% OER stay distinct.

Price seriesNative unitHistorical coverage
Indonesia · CPO referenceUSD / metric tonne68 effective periods · 9 August 2022–30 September 2026.
Indonesia · FFB purchase schedulesIDR / kilogram7 accepted series · 60 complete schedules. History and current availability vary by area.
Malaysia · CPO local deliveredMYR / metric tonne1 national + 7 regional series · 1,457 daily reports · 2 January 2020–9 September 2026. Each report retains its quote months.
Malaysia · FFB referenceMYR / 1% OER6 regions · 71 monthly reports containing daily prices · July 2020–September 2026.

Coverage snapshot: 10 September 2026. Missing or conflicting reports are excluded.

Response fields

series_id
Stable identity for one product, price type and geographic scope.
period_startperiod_end
Inclusive effective dates for Indonesian prices; a report date and exclusive next-day end for Malaysian prices.
priceprices[]
One decimal-string price, or a complete tree-age schedule for Indonesian FFB.
price_month
The quoted month, included only for Malaysian CPO.
revision
Revision of the price or complete schedule.
currencyunit
The original currency and measure, with no assumed conversion.

Developer guides

Common questions

Is this a CPO price API?

Yes. The release covers Indonesian CPO government references and Malaysian CPO local-delivered market averages, alongside separate FFB prices. FCPO futures are not included.

Why are there several prices in one response?

One authority schedule can publish different prices by tree age. Narwhal keeps those rows together.

How far back does the history go?

Indonesian CPO starts in August 2022. The Malaysian CPO archive starts in January 2020 and Malaysian FFB in July 2020. Coverage varies by region, with missing or conflicting reports excluded.

Make your first request

Get a free API key