Quick Start
Base URL: https://estimationpro.ai/api/v1
# Get roofing costs in Los Angeles curl "https://estimationpro.ai/api/v1/costs?trade=roofing&zip=90210" # Get the cost index for all metros curl "https://estimationpro.ai/api/v1/index" # Check material price trends (currently returns null values, see the Trends endpoint below) curl "https://estimationpro.ai/api/v1/trends"
Turning a response into a line item: the roofing call above returns architectural-installed
at typical $6.22/sq ft in the 90210 ZIP. For a 2,000 sq ft roof: 2,000 × $6.22 = $12,440 (range $9,040-$15,820 low to high),
before tear-off, disposal and your markup.
Get the Data
Three ways to access U.S. construction cost data, all free:
Kaggle
Download a snapshot of the dataset (CSV and JSON): 385 items, regional multipliers, and the EPCI cost index.
Get on Kaggle →Embed
Embed interactive cost calculators on your site. 250+ tools for contractors and homeowners.
Browse calculators →Rate Limits
Each IP gets 100 requests per day in total, shared across /trades, /costs, /costs/:itemId, /trends and /multipliers, plus a separate 500 per day on /api/v1/index. Both daily counts reset at midnight UTC.
A site-wide limit of 100 requests per minute per IP also applies, resetting every minute.
Counts are kept in memory on each server instance, so they are loosely enforced and may not count down reliably between requests. Please cache responses and keep usage modest.
| Endpoint | Limit |
|---|---|
| All other endpoints (combined) | 100 requests/day |
/api/v1/index | 500 requests/day |
The /api/v1 endpoints return X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (seconds until the daily reset). Responses also carry RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset for the per-minute limit; a 429 from the per-minute limit carries only those.
Response Format
Successful responses are JSON with a data field containing the result and a meta field with attribution. Errors (400, 404, 429, 503) return {"error": "message"} only:
{
"data": { ... },
"meta": {
"source": "EstimationPro.ai Construction Cost API",
"url": "https://estimationpro.ai/api",
"methodology": "BLS OEWS + PPI + contractor feedback",
"updated": "2026-09-24",
"license": "Free for non-commercial use with attribution"
}
} meta.updated is the date of your request, not the date the underlying data last changed. For an item's actual freshness, check its own lastVerified field.
Endpoints
Clicking "Try it live" counts against your daily rate limit above.
Returns all 34 construction trades with item counts.
Example Response
{
"data": {
"trades": [
{ "trade": "concrete", "itemCount": 13 },
{ "trade": "roofing", "itemCount": 14 },
{ "trade": "electrical", "itemCount": 23 }
],
"totalItems": 411
},
"meta": { "source": "EstimationPro.ai Construction Cost API", ... }
}
Try it live →
Returns all pricing items for a trade. Optionally adjusted for regional pricing by ZIP code or state. Only items with regionallyAdjusted: true are adjusted. Items the database flags as non-regional (mostly retail material prices such as shingle bundles, tile and paint, but also about 20 installed items such as thermostat, smart switch and garage door opener installs, plus percentage items like contractor markup) return the national price whatever location you pass, so check regionallyAdjusted on each item.
Parameters
| Name | Required | Description |
|---|---|---|
trade | Required | Trade name (e.g., "roofing", "concrete", "electrical") |
zip | Optional | ZIP code for regional price adjustment |
state | Optional | State code (e.g., "CA", "TX") for regional adjustment |
Example Response
{
"data": {
"trade": "roofing",
"location": "Los Angeles-Long Beach-Anaheim, CA",
"multiplier": 1.13,
"itemCount": 14,
"items": [
{
"id": "architectural-installed",
"description": "Architectural shingles, installed per sq ft",
"unit": "sq ft",
"low": 4.52,
"typical": 6.22,
"high": 7.91,
"volatility": "standard",
"lastVerified": "2026-06-11",
"regionallyAdjusted": true
}
]
}
}
Try it live →
Returns full detail for a specific pricing item including sources.
Parameters
| Name | Required | Description |
|---|---|---|
itemId | Required | Item ID (e.g., "ready-mix-standard", "outlet-installation") |
Example Response
{
"data": {
"trade": "concrete",
"id": "ready-mix-standard",
"description": "Ready-mix concrete (3000-4000 PSI), delivered",
"unit": "cubic yard",
"low": 110,
"high": 200,
"typical": 150,
"tolerance": 0.35,
"regional": true,
"volatility": "volatile",
"sources": [
"Concrete Network 2026 ($160-195/cy, natl avg $179.89 per NRMCA)",
"Angi 2026 concrete cost per yard",
"concretecalculate.com 2026 ready-mix by state ($120-165, avg ~$140)"
],
"lastVerified": "2026-08-30"
}
}
Try it live →
Returns the EstimationPro Cost Index for 50 states plus DC and 50 metro areas. EPCI = 100 at national average. Includes project-specific costs for bathroom remodels, kitchen remodels, deck builds, interior paint, and roof replacements. The index is a snapshot generated 2026-03-16 from the multipliers and prices at that time. It is not updated when item prices change, so use /costs for current prices.
Example Response
{
"data": {
"meta": { "methodology": "EPCI = 100 * regional multiplier..." },
"index": {
"metro:new-york-newark-jersey-city": {
"name": "New York-Newark-Jersey City, NY-NJ-PA",
"epci": 118,
"projects": {
"bathroom_remodel": { "low": 14160, "typical": 23600, "high": 35400 }
}
},
"state:TX": { "name": "TX", "epci": 90, ... }
}
}
}
Try it live →
Returns commodity prices (copper, aluminum, lumber, steel), FRED economic indicators (construction spending, housing starts, building permits, Case-Shiller), and BLS PPI series data. The data pipeline that populates these values is currently disabled. Until it is turned back on, price and value fields return null, trendDirection returns "unknown", and PPI changePercent returns 0 with lastChecked "never" (0 here means no data, not no change).
Example Response
// No live data until the next refresh (see note above).
{
"data": {
"commodities": [
{ "commodity": "copper", "unit": "USD/lb", "latestPrice": null, "trendDirection": "unknown" }
],
"economicIndicators": [
{ "seriesId": "HOUST", "title": "Housing Starts", "latestValue": null, "yearOverYearChange": null }
],
"ppiSeries": [
{ "id": "WPU08", "name": "Lumber & Wood Products", "changePercent": 0, "lastChecked": "never" }
]
}
}
Try it live →
Returns the regional cost multiplier for a ZIP code or state. Use this to adjust national average prices to an estimated regional level (derived from BLS OEWS construction wages).
Parameters
| Name | Required | Description |
|---|---|---|
zip | Optional | ZIP code (one of zip or state required) |
state | Optional | State code (one of zip or state required) |
Example Response
{
"data": {
"location": "98101",
"resolvedState": "WA",
"region": "pacific",
"multiplier": 1.21,
"label": "Seattle-Tacoma-Bellevue, WA",
"source": "metro",
"stateDetail": { "multiplier": 1.12, "region": "pacific" },
"regionDetail": { "name": "Pacific", "multiplier": 1.15, "laborMultiplier": 1.33 }
}
}
Try it live →
Data Sources
- Material pricing: 411 items, each citing its published sources (mostly Angi, HomeGuide, HomeAdvisor, Homewyse and Fixr cost guides plus Home Depot/Lowe's retail prices), with a last-verified date on every item.
- Regional multipliers: BLS Occupational Employment and Wage Statistics (OEWS) wages for carpenters, electricians and plumbers, for all 50 states plus DC and 50 metros.
- Material trends: BLS Producer Price Index (PPI) for 11 commodity series. The scheduled monthly update job is currently disabled, so the
/trendsendpoint returns null values (see above). - Economic indicators: Federal Reserve Economic Data (FRED) for construction spending, housing starts, building permits, and Case-Shiller home prices. Same disabled-pipeline caveat applies.
- Commodity prices: Alpha Vantage (copper, aluminum), FRED (lumber PPI, steel PPI). Same disabled-pipeline caveat applies.
- Contractor feedback: Anonymous aggregation from EstimationPro user edits, which can be graduated into the database when enough contractors agree.
Kaggle Dataset
A snapshot of the construction cost dataset (version 1, generated 2026-03-19) is available on Kaggle for download, analysis, and use in your own projects. It is licensed CC BY 4.0 (attribution required, commercial use allowed), which is more permissive than this API's non-commercial license below. It includes 385 pricing items across 32 trades, regional multipliers for all 50 states, and the EPCI cost index for 50 metro areas. For current data, use the live API above.
- 385 pricing items with low/typical/high ranges, units, volatility tiers, and source citations
- Regional multipliers for all 50 states plus DC and 50 metro areas (each state tagged with its Census division), derived from OEWS wage data
- EPCI cost index (EstimationPro Cost Index) for 50 metro areas with project-specific cost breakdowns
- CSV and JSON formats for easy import into Excel, Google Sheets, Python, R, or any data tool
GitHub
We've submitted this API to the public-apis directory on GitHub (pending review). Star or follow the PR to stay updated.
View on GitHub →Attribution
This API is free for non-commercial use. Please include attribution when displaying data from this API:
Data from <a href="https://estimationpro.ai/tools/api">EstimationPro.ai Construction Cost API</a>