CIDB N3C Building Material Price API — Monthly Prices by State & Specification
Datadory delivers cidb n3c building material price api data covering monthly average prices for Malaysian construction material specifications - cement, aggregate, bricks and adjacent groups - across every state plus East Malaysia divisions such as Sarawak - Sibu, each record keyed by material group, specification, unit and payment terms. Delivered daily, weekly, or hourly.
- Where it covers
- Malaysia - all states plus East Malaysia divisions (e.g. Sarawak - Sibu)
- How far back
- Monthly price observations; documented samples Nov-2024 through Nov-2025
- How fine
- Per specification x state x month - ~16 state series
What is the CIDB N3C Building Material Price API?
Malaysia's Construction Industry Development Board operates the National Construction Cost Centre (N3C), which publishes monthly average prices for construction material specifications, state by state. Datadory delivers those records as analysis-ready rows: one observation per material specification, per state, per month, each carrying its material group, unit of measure and payment terms.
The catalogue runs to dozens of material groups and specifications - ordinary Portland cement in 50 kg bags, autoclaved aerated concrete blocks cut at 100mm x 200mm x 600mm, crusher run sold by the metric tonne - priced for Peninsular Malaysian states and East Malaysia divisions alike, roughly sixteen state-level series in total. N3C also documents companion series for labour wage rates and machinery hire rates, which tells you these material prices sit inside a working national cost-statistics programme rather than a one-off spreadsheet.
For anyone buying, selling or estimating against Malaysian construction inputs, this is the reference panel tenders get argued over. Get a sample of this dataset with your states and material groups pre-selected.
What does a sample row look like?
Flat, typed and joinable - one price observation per specification, state and month. Illustrative rows in the delivered column order:
group : Cement
code : 1.4
specification : Hume Panda / Tasek Buaya, 50kg/bag
unit : Bag pay_terms: 60 Del
state : Sarawak - Sibu
month_year : Nov-2024 average_price: 29.75
group : Cement
code : 1.4
specification : Hume Panda / Tasek Buaya, 50kg/bag
unit : Bag pay_terms: 60 Del
state : Selangor
month_year : Nov-2024 average_price: 21.50The same specification also arrives in a wide layout - one row per specification with a column per month:
code : 1.1
specification : Ordinary Portland Cement, 50 kg bag
unit : Bag pay_terms: 60 Del
Jan : 20.40 Feb: 20.40 Mar: 20.40Values above illustrate the shape of a row rather than quote a certified extract; your sample pulls live records. The long layout suits time-series joins and dashboards; the wide layout drops straight into a spreadsheet for a quantity surveyor who thinks in months. Both carry the group, code, unit and payment-term columns, so neither loses provenance.
What fields does each record include?
Eleven documented fields make up the core schema, verified against the publisher's own documentation. Identity fields (group, code, specification) describe what was priced; context fields (state, unit, payment terms) describe how; the rate fields (monthly averages plus publication metadata) carry the number itself.
What does coverage look like across geography, time and granularity?
Geography - all Malaysian states plus selected East Malaysia divisions such as Sarawak - Sibu, roughly sixteen state-level series. Every location carries an id, a name and a state code (Selangor is SGR), so mapping to your own regions is a lookup, not a fuzzy match.
Temporal - monthly price observations. Documented sample series run November 2024 through November 2025; the publisher does not state how deep the archive reaches before that, so treat per-state depth as something to confirm at the sample stage rather than assume. Month-level publication metadata flags which months were formally released, along with the underlying sample counts.
Granularity - one average price per material specification, per state, per month. Specifications roll up to material groups (Cement, Aggregate, Bricks and siblings), and each carries its own unit - bag, metric tonne or piece - so a cement price never gets averaged into an aggregate tonnage.
How is the data delivered?
API, files, or your warehouse. Daily, weekly, or hourly.
Who uses this data, and for what?
- Procurement and tender pricing - contractors benchmark supplier quotes against state-level averages before signing; the November 2024 cement pair (29.75 in Sarawak - Sibu versus 21.50 in Selangor, a 38 percent gap) is exactly the kind of spread that decides where to buy. More workflows like this on our price monitoring use case page.
- Cost estimation and escalation clauses - monthly specification-level series feed escalation calculations in multi-year contracts, replacing flat-percentage assumptions with observed movement per material.
- Producer and distributor strategy - cement and aggregates suppliers read state-by-state average levels and month-over-month shifts to spot where their pricing sits versus the national benchmark; pattern work for this lives on our competitor tracking use case page.
- Market entry and demand planning - materials vendors sizing Malaysian regions use price levels alongside project pipelines as a demand signal; forecasting methods sit on our demand forecasting use case page.
- Index construction and academic research - specification-level, state-level monthly averages are the raw layer for building Malaysia construction-cost indices or studying pass-through from input prices to tender outcomes.
- Cross-border cost comparison - analysts benchmarking Southeast Asian construction costs anchor on a government-published national series instead of vendor black-box indices.
Which personas get the most value?
Procurement and estimating teams get the benchmark layer for Malaysian material spend - specification-matched, state-matched, month-stamped - without assembling it from trade chatter. Market researchers and consultants get a government-published price panel spanning Peninsular and East Malaysia, usable in client work without reconciling inconsistent private sources; sector framing on our market researchers construction materials page. Data scientists and analysts get a tidy long-format table with stable state codes and group identifiers that joins cleanly onto project or company data; methods on our data scientists construction materials page. Journalists, academics and students get citable monthly numbers behind claims about construction inflation in a market where such series are rarely public.
How does it compare to other construction materials datasets?
Most material-price coverage in our catalog tracks developed markets - US producer indexes and UK materials price series dominate. A government-published, specification-level panel for Malaysia fills a different slot: emerging-market construction input prices at state resolution, which global index providers rarely reach below the national line.
It also pairs naturally with the cost siblings N3C publishes alongside it - labour wage rates and machinery hire rates - so a full tender-cost model can draw materials, labour and plant from one consistent statistical framework. Where the whole industry sits, see our best construction materials datasets ranking; for how a comparable national series stacks up method-for-method, see our ONS vs building materials price indexes comparison.
What should I know before requesting a sample?
Four things. First, a zero is an absence, not a bargain: it marks a month with no published price for that specification-state pair, and the publication metadata - including sample counts per month - lets you separate thin months from missing ones.
Second, payment terms ride with every record (for example '60 Del'), which is a feature: comparisons hold the commercial basis constant instead of mixing cash and credit pricing.
Third, archive depth is asserted, not guaranteed: documented samples run November 2024 through November 2025, and earlier history is undocumented, so test the years you actually need during the sample stage.
Fourth, both layouts ship - the long specification-state-month shape for pipelines, the wide one-column-per-month shape for estimators - so decide which lands closer to your workflow and ask for it in the sample.
Field dictionary
Every field below is documented against real records. The full dictionary ships with the sample.
| field | type | definition | example |
|---|---|---|---|
id | integer | Numeric identifier of a material group, specification or state, used to key records and joins. | 116 |
name | string | Name of the material group or state the record belongs to. | Cement |
code | string | Material group code (M1, M2, ...) in group listings, or material code (e.g. 1.4) in price responses; empty where unassigned. | 1.4 |
specification | string | Priced material specification description, at product granularity. | Ordinary Portland Cement, 50 kg bag |
unit | string | Unit of measure for the specification - bag, metric tonne (MT) or piece. | Bag |
pay_terms | string | Commercial payment terms attached to the specification, held constant across comparisons. | 60 Del |
material_group_id | integer | Foreign key linking a specification to its parent material group. | 6 |
states | text | Grouping of results per selected state, each carrying the state name and its monthly rate records. | [{"name":"Selangor","month_year_rates":[...]}] |
month_year_rates | text | Monthly rate records per state, each holding month, year, average price and a month-year label. | {"month":"Nov","year":2024,"average_price":29.75,"month_year":"Nov-2024"} |
average_price | number | Average price of the specification for that state and month; zero indicates no price published. | 29.75 |
data_months | text | Publication metadata for a state and year: month, year, release status ('Published') and underlying sample count. | {"state_id":13,"month":"January","year":2024,"status":"Published","sample":3} |
additional fields on request | varies | Per-state archive depth, full group-to-specification catalog listings, companion labour wage rate and machinery hire rate fields, and derived aggregates beyond the core eleven can be specified when you request a sample. | per-request |
Questions buyers ask
Which construction materials does the dataset cover?
Material groups such as Cement, Aggregate and Bricks, each holding individually priced specifications - ordinary Portland cement in 50 kg bags, autoclaved aerated concrete blocks at 100mm x 200mm x 600mm, crusher run sold by the metric tonne. Dozens of groups and specifications carry units (bag, metric tonne, piece) and payment terms on every record.
How far back does the Malaysia material price history go?
The earliest available month is not published. Documented sample series run November 2024 through November 2025, and publication metadata flags which months were formally released. Confirm the depth you need for your specific states and material groups during the sample stage.
Does coverage include East Malaysia?
Yes. Peninsular Malaysian states ship alongside East Malaysia divisions such as Sarawak - Sibu, roughly sixteen state-level series in total. Each location is identified by id, name and state code, so regional joins stay stable across the whole panel.
Why do some months show a zero price?
A zero marks a month where no price was published for that specification and state - it is an absence flag, not a real quote. Month-level publication metadata distinguishes formally released months and carries the underlying sample counts, so zeros are easy to filter rather than misread.
Can I compare one specification across states?
That is the dataset's core shape: series group specification-first, then by state, then by month. In November 2024 the same Hume Panda / Tasek Buaya 50 kg cement bag averaged 29.75 in Sarawak - Sibu against 21.50 in Selangor - a 38 percent spread visible in a single side-by-side pull.
What does the payment terms field capture?
Each priced specification carries commercial settlement terms - for example '60 Del' - alongside its unit of measure. Because the terms travel with every record, cross-state and cross-month comparisons hold the commercial basis constant instead of mixing cash and credit prices.
See the rows before you pay anything.
Name this dataset and we send real records from it — scoped to the fields you asked for.