Construction Material Pricing API
Construction material prices, price indices, supplier data, and regional comparisons across South Africa. Track input costs for cement, steel, timber, and more using data from StatsSA PPI and the Building Industries Federation.
Base URL
Authentication
Include your Construction API key in the Authorization header.
curl -H "Authorization: Bearer db_construction_live_YOUR_KEY" \
https://api.crimate.net/v1/construction/prices/latest?region=GPEndpoints
/v1/construction/materialsList construction materials with optional filters for category and subcategory
Parameters: category (cement|steel|timber|brick|aggregate|electrical|plumbing), subcategory, page, per_page
Example
GET /v1/construction/materials?category=cement/v1/construction/pricesHistorical material prices by product, region, and date range
Parameters: material (required), region (province code), from (YYYY-MM), to (YYYY-MM), page, per_page
Example
GET /v1/construction/prices?material=cement_42.5n®ion=WC&from=2025-01&to=2026-01/v1/construction/prices/latestMost recent prices per material and region
Parameters: material (optional), region (optional)
Example
GET /v1/construction/prices/latest?region=GP/v1/construction/indicesConstruction input price indices over time, based on StatsSA PPI (base year 2020 = 100)
Parameters: category, from (YYYY-MM), to (YYYY-MM), page, per_page
Example
GET /v1/construction/indices?category=steel&from=2025-01&to=2026-01/v1/construction/suppliersList construction material suppliers by region and material type
Parameters: region (province code), material (optional), verified (true|false), page, per_page
Example
GET /v1/construction/suppliers?region=WC&material=cement/v1/construction/compareCompare material prices across regions or suppliers for a given product
Parameters: material (required), regions (comma-separated province codes, optional)
Example
GET /v1/construction/compare?material=cement_42.5n®ions=WC,GP,KZN/v1/construction/statsDataset statistics (total materials, suppliers, price records, latest update)
Parameters: None
Example
GET /v1/construction/statsResponse Examples
Regional price comparison response:
{
"material": {
"code": "cement_42.5n",
"name": "Cement CEM II 42.5N",
"unit": "50kg bag",
"category": "cement"
},
"comparison": [
{
"region": "WC",
"region_name": "Western Cape",
"avg_price_zar": 89.50,
"min_price_zar": 78.00,
"max_price_zar": 105.00,
"suppliers_reporting": 14,
"period": "2026-02",
"change_mom_pct": 1.20,
"change_yoy_pct": 6.80
},
{
"region": "GP",
"region_name": "Gauteng",
"avg_price_zar": 82.00,
"min_price_zar": 72.00,
"max_price_zar": 96.00,
"suppliers_reporting": 22,
"period": "2026-02",
"change_mom_pct": 0.80,
"change_yoy_pct": 5.40
},
{
"region": "KZN",
"region_name": "KwaZulu-Natal",
"avg_price_zar": 86.00,
"min_price_zar": 75.00,
"max_price_zar": 99.00,
"suppliers_reporting": 18,
"period": "2026-02",
"change_mom_pct": 1.50,
"change_yoy_pct": 7.20
}
]
}Try It
Enter your Construction API key to make a live request. Generate a key in the dashboard.
Try It
Make a live API call from your browser
curl -H "Authorization: Bearer db_construction_live_YOUR_KEY" \
"https://crimate.net/v1/construction/stats"Data Sources
StatsSA Producer Price Index (PPI)
Monthly Producer Price Index data from Statistics South Africa covering construction material input costs. The PPI for building and construction materials tracks price changes at the producer level for cement, steel, bricks, timber, and other key inputs. Base year: 2020 = 100.
Building Industries Federation
Market pricing data from building industry associations and material suppliers across South Africa. Provides regional retail and wholesale pricing for construction materials with supplier-level granularity and monthly update cycles.
Rate Limits
| Tier | Price | Rate Limit | Daily Quota | Monthly Quota |
|---|---|---|---|---|
| Free | R0/mo | 10 req/min | 100 | 1,000 |
| Starter | R899/mo | 60 req/min | 5,000 | 50,000 |
| Pro | R3,499/mo | 300 req/min | Unlimited | 500,000 |
Error Codes
All error responses follow a consistent JSON format:
{
"error": "error_code",
"message": "Human-readable description."
}| Status | Error Code | Description |
|---|---|---|
| 400 | invalid_request | The request body or query parameters are malformed. |
| 401 | unauthorized | Missing or invalid API key. |
| 403 | no_subscription | No active subscription for this API product. |
| 403 | quota_exceeded | Daily or monthly quota exceeded. |
| 404 | not_found | The requested resource does not exist. |
| 429 | rate_limit_exceeded | Too many requests. Check X-RateLimit-Remaining header. |
| 500 | internal_error | An unexpected server error occurred. |