Africa Commodity Prices
Pricing
from $0.20 / latest commodity snapshot
Africa Commodity Prices
Monthly prices for 70+ commodities from the World Bank Pink Sheet enriched with African trade context — relevance tier, YoY/MoM change, and trade profiles showing top exporters/importers and Africa's world trade share for 15 key commodities including cocoa, gold, crude oil, coffee, and copper.
Pricing
from $0.20 / latest commodity snapshot
Rating
0.0
(0)
Developer
Simon M
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Africa Commodity Prices — World Bank Pink Sheet
Monthly commodity prices for 70 commodities (January 1960 – present) from the World Bank Commodity Price Data (The Pink Sheet) — the most widely cited global commodity price reference.
Every record is annotated with an Africa-relevance tier, a trade-flow profile (top exporters/importers by world share), a year-on-year price change, and a dependence-weighted terms-of-trade impact — i.e. how each price move actually hits the economies that export the commodity (exportImpactPct = YoY% × the commodity's share of the country's exports). This makes the data immediately useful for African economic research, procurement analysis, and investment screening. Pass a country code to see just that economy's commodity-export exposure.
Data source & licence
| Source | Coverage | Licence |
|---|---|---|
| World Bank Commodity Price Data (The Pink Sheet) | 71 commodities, Jan 1960–present, monthly | CC BY 4.0 — The World Bank |
Attribution requirement (CC BY 4.0): Every output record carries source.licenseNote with the required attribution text. If you use this data in a product or publication, cite: World Bank Commodity Price Data (The Pink Sheet).
Trade-flow profiles are derived from UN Comtrade (public API, annual data). Profiles are year-matched: a price row for, say, 2003-04 is enriched with 2003 trade flows, not a single fixed snapshot. See Trade enrichment for coverage.
Modes
latest (default) — $0.05 flat
Returns one record per commodity for the most recently published month (~71 records). Updated monthly by the World Bank, typically in the first week of each month.
historical — $0.008 per (commodity × month) record
Returns all records in a date range. Full history (70 commodities × 797 months) is ~$446; filtering by africaRelevanceFilter: ["high", "explicit"] (31 commodities) reduces this to ~$197.
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | "latest" | "historical" | "latest" | See above |
dateFrom | YYYY-MM | — | Start month (historical mode, required) |
dateTo | YYYY-MM | — | End month (historical mode, required). Earliest: 1960-01 |
commodities | string[] | all 71 | Filter to specific commodity codes, e.g. ["COCOA", "GOLD"] |
africaRelevanceFilter | string[] | all | Filter by tier: explicit, high, medium, low |
country | string (ISO-2/3) | — | Export-exposure filter. When set, returns only the commodity that country depends on (its curated primary export), with exportDependence highlighting it. Resolves for the ~10 countries in the export-dependence table (e.g. CI→cocoa, ZM→copper, NG→crude). |
maxItems | integer | 10000 | Hard cap on output records |
Output fields
| Field | Type | Description |
|---|---|---|
id | string | "COMMODITYCODE:YYYY-MM" |
commodityCode | string | Normalised slug: COCOA, GOLD, CRUDE_OIL_BRENT, etc. |
commodityName | string | Exact Pink Sheet name |
period | string | "YYYY-MM" |
price | number | null | Nominal USD price. Null if not published for that month — record is still included, check warnings |
unit | string | $/kg, $/mt, $/bbl, $/mmbtu, $/troy oz, etc. |
changeYoyPct | number | null | Year-on-year price change %, vs ~12 months earlier (nearest within ±1mo). Null when no prior point exists. |
africaRelevance | string | explicit / high / medium / low |
tradeProfile | object | null | Trade profile for this row's year (see sub-fields); null if the commodity is unmapped or no trade data exists for that year |
tradeProfile.dataYear | number | The Comtrade year the profile is built from (equals tradeProfileYear) |
tradeProfile.topExporters | CountryShare[] | Top global exporters (≤5) — ISO alpha-3, name, world share % |
tradeProfile.topImporters | CountryShare[] | Top global importers (≤5) — ISO alpha-3, name, world share % |
tradeProfile.africaExportSharePct | number | null | Africa's combined share of world exports %; null if no African country in Comtrade data |
tradeProfile.africaImportSharePct | number | null | Africa's combined share of world imports %; null if no African country in Comtrade data |
tradeProfile.topAfricanExporters | CountryShare[] | All African exporters ranked by world share — no length cap |
tradeProfile.topAfricanImporters | CountryShare[] | All African importers ranked by world share — no length cap |
tradeProfileYear | number | null | Calendar year whose trade flows were applied, or null when no enrichment was available |
exportDependence | object[] | Dependence-weighted terms-of-trade impact — for each exporting economy: countryIso3, countryName, dependencePct, basis, exportImpactPct (= changeYoyPct × dependencePct / 100). Sorted most-adverse first. Empty when no exporters are known. |
exportDependence[].basis | string | oec = the commodity's real share of that country's total exports (OEC — accurate); world-share = proxy = the country's share of world exports of the commodity (indicative only — world-share ≠ true export dependence). Filter to oec for the rigorous figures. |
source.name | string | "World Bank Commodity Price Data (The Pink Sheet)" |
source.url | string | URL of the Excel file used for this run |
source.retrievedAt | ISO 8601 | When the actor fetched the data |
source.licenseNote | string | CC BY 4.0 attribution |
warnings | string[] | "price_null" (price absent in source); "trade_profile_unavailable" (mapped commodity, but no trade data for this row's year) |
Trade enrichment coverage
Trade-flow profiles are year-matched to each price row, derived from UN Comtrade (HS classification, annual). Because trade data is annual while prices are monthly, all twelve months of a year share that year's profile.
| Price period | Enrichment |
|---|---|
| 1992 – 2024 | ✅ Year-matched profile (where Comtrade reports the commodity that year) |
| before 1992 | ❌ tradeProfile: null, warnings: ["trade_profile_unavailable"] — HS trade data does not exist that far back |
| after the last refreshed year | ❌ null + trade_profile_unavailable until the profiles are refreshed |
30 of the 71 commodities are mapped to an HS code and carry trade profiles — all explicit and high Africa-relevance commodities with a clean HS heading, plus nickel and rubber. The other ~41 (mostly low/medium-relevance, e.g. WTI crude, Malaysian timber, Mexican shrimp) have tradeProfile: null with no warning — enrichment was never offered for them.
The profile never carries a different year's flows onto a row: if the exact year is missing, the field is null. This keeps the data faithful (no fabricated context).
Africa relevance tiers
| Tier | Count | Criteria |
|---|---|---|
explicit | 4 | Named after an African location: Coal South African, Tea Mombasa, Logs Cameroon, Sawnwood Cameroon |
high | 27 | Africa is a major global producer/exporter, or it is a primary food-security staple for SSA |
medium | 26 | Some African trade significance |
low | 13 | Limited direct connection to African economies |
Key high-relevance commodities: Cocoa, Coffee (Arabica/Robusta), Tea avg, Groundnuts, Palm oil, Maize, Sorghum, Rice, Wheat, Cotton, Tobacco, Phosphate, Copper, Gold, Platinum, Aluminum, Iron ore, Sugar world, Crude oil avg/Brent.
Commodity codes
Full list of all 71 commodity codes available in the actor. Use these in the commodities input filter.
CRUDE_OIL_AVG · CRUDE_OIL_BRENT · CRUDE_OIL_DUBAI · CRUDE_OIL_WTI · COAL_AUSTRALIAN · COAL_SOUTH_AFRICAN · NATURAL_GAS_US · NATURAL_GAS_EUROPE · LNG_JAPAN · COCOA · COFFEE_ARABICA · COFFEE_ROBUSTA · TEA_AVG · TEA_COLOMBO · TEA_KOLKATA · TEA_MOMBASA · COCONUT_OIL · GROUNDNUTS · FISH_MEAL · GROUNDNUT_OIL · PALM_OIL · PALM_KERNEL_OIL · SOYBEANS · SOYBEAN_OIL · SOYBEAN_MEAL · RAPESEED_OIL · SUNFLOWER_OIL · BARLEY · MAIZE · SORGHUM · RICE_THAI_5 · RICE_THAI_25 · RICE_THAI_A1 · RICE_VIETNAM_5 · WHEAT_SRW · WHEAT_HRW · BANANA_EUROPE · BANANA_US · ORANGE · BEEF · CHICKEN · LAMB · SHRIMPS_MEXICAN · SUGAR_EU · SUGAR_US · SUGAR_WORLD · TOBACCO · LOGS_CAMEROON · LOGS_MALAYSIAN · SAWNWOOD_CAMEROON · SAWNWOOD_MALAYSIAN · PLYWOOD · COTTON · RUBBER_TSR20 · RUBBER_RSS3 · PHOSPHATE · DAP · TSP · UREA · POTASSIUM_CHLORIDE · ALUMINUM · IRON_ORE · COPPER · LEAD · TIN · NICKEL · ZINC · GOLD · PLATINUM · SILVER
Notes
- Prices are nominal USD — no real/inflation-adjusted series.
- Data is delayed: the actor fetches the World Bank's published Excel file; there is typically a 1–5 day lag from the calendar month-end.
- Monthly cadence: schedule this actor once per month, around the 5th (after the World Bank publishes the update).
- Trade profiles are static (UN Comtrade, HS, 1992–2024) and bundled with the actor image; they are year-matched to each row but do not change per run. Refreshed ~annually via
scripts/refresh-trade-profiles.ts.