FFB prices come before processing
A Palmoil FFB schedule states the prices published for fresh fruit bunches in one area and effective period. The schedule can vary by producer arrangement and tree age.
The Narwhal response keeps the market scope, IDR per kilogram unit, release date, effective dates, revision, and every tree-age row together.
CPO is priced after processing
CPO is produced after fresh fruit bunches are processed. A CPO benchmark, exchange contract, or mill quote describes a different product and market from an official FFB purchase schedule.
Narwhal provides Indonesian CPO government references and Malaysian CPO local-delivered averages as separate series from FFB. Malaysian FFB references use MYR per 1% oil extraction rate, not a per-tonne quote.
One schedule, several tree-age prices
The responsible authority can publish separate prices for different tree-age bands. Those rows are parts of one determination, not independent time series.
A missing or ambiguous row rejects the whole schedule. A revision replaces the whole schedule.
Read the dates literally
period_start and period_end describe the accepted interval for the observation. Indonesian effective periods are inclusive; Malaysian daily observations use the report date and the exclusive next day. History orders complete observations oldest first.
Request the latest schedule
Discover the admitted series first, then request the returned series_id. Country and area are discovery filters; they are not interchangeable with a series identity. Available with a Narwhal API key.
curl --request GET \
--url "https://api.narwhalapi.com/v1/commodities/palmoil/physical/id-ri-oil-palm-ffb-smallholder-purchase-agreement" \
--header "Authorization: Bearer $NARWHAL_API_KEY"Discover before selecting a series
The discovery response returns stable series_id values with the product, country, area, unit, producer arrangement, and effective scope. Store the selected series_id with those fields so a later request cannot silently change the meaning of the price.
For history, keep the same series_id, date bounds, and limit, then pass the returned next_cursor as cursor on the next request. A withdrawn publication returns 503 physical_price_unavailable; restart discovery. An invalid or publication-bound cursor returns 400 invalid_cursor; restart without the cursor rather than choosing a nearby area or product.
curl --request GET \
--url "https://api.narwhalapi.com/v1/commodities/palmoil/physical?product=ffb&country=IDN&area=ID-RI&limit=100" \
--header "Authorization: Bearer $NARWHAL_API_KEY"Sources and references
- Riau government Media Center TBS releases
- West Kalimantan plantation and livestock service TBS releases
- Commodity methodology
Published . Last reviewed .

