# Procore Construction Material Prices Scraper (`parseforge/procore-construction-material-prices-scraper`) Actor

Track US construction material prices from Procore's tracker. Get current and weekly historical prices for 63 materials across 6 US regions. Covers lumber, metal, cement, roofing, electrical, plumbing, and HVAC. Data back to 2021 for trend analysis.

- **URL**: https://apify.com/parseforge/procore-construction-material-prices-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Automation, Developer tools, Other
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## Construction Material Prices Scraper

Collect real-time and historical construction material prices from Procore's Material Price Tracker without coding. This scraper extracts pricing data for 63 construction materials across 6 US regions with weekly data points going back to 2021, making it perfect for estimators building project budgets, contractors tracking material cost trends, or analysts researching construction market dynamics.

> **The Procore Construction Material Prices Scraper collects material pricing data with up to 12 data fields per item, including regional breakdowns for Northeast, Southeast, Midwest, West, South, and Northwest.**

### What Does It Do

- **Product Name** - Identify the exact construction material being tracked (lumber, steel, concrete, copper, etc.)
- **Current Price** - Get the latest national average price for each material
- **Regional Prices** - Compare prices across 6 US regions to find the best sourcing options
- **Historical Data** - Access weekly price history back to 2021 for trend analysis and forecasting
- **Product Type** - Categorize materials by type for organized reporting
- **Trade Name** - See which construction trade each material belongs to

### Input

- **Mode** - Choose "Current Prices" for latest prices of all 63 materials, or "Historical Prices" for weekly time series data on a specific product
- **Product Name** - Which material to get historical data for (e.g. "Dimensional lumber, untreated")
- **Region** - Filter by US region: National, Northeast, Southeast, Midwest, West, South, or Northwest
- **Max Items** - How many records to collect per run

Example input:
```json
{
  "mode": "currentPrices",
  "maxItems": 10
}
````

### Output

Each record includes up to 12 data fields. Download as JSON, CSV, or Excel.

**Current Prices mode:**

| Product Name | Description | Product Type |
|---|---|---|
| Trade Name | Current Price | Current Date |
| Price Northeast | Price Southeast | Price Midwest |
| Price West | Price South | Price Northwest |
| Scraped At | Error (if any) | |

**Historical Prices mode:**

| Product Name | Date | Price |
|---|---|---|
| Region | Scraped At | Error (if any) |

### Why Choose This Scraper?

| Feature | Our Actor |
|---|---|
| Fast single-request extraction (no browser needed) | Yes |
| Current prices for 63 construction materials | Yes |
| Historical weekly data back to 2021 | Yes |
| 6 US regional price breakdowns | Yes |
| CSV, Excel, and JSON export | Yes |
| Automatic retry logic with exponential backoff | Yes |
| Support for large-scale collection (1 million+ items) | Yes |
| No proxy or API key required | Yes |

### How to Use

No technical skills required. Follow these simple steps:

1. **Sign Up** - [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp)
2. **Find the Tool** - Search for "Procore Construction Material Prices Scraper" in the Apify Store and configure your input
3. **Run It** - Click "Start" and watch your results appear

That's it. No coding, no setup needed. Export your data in CSV, Excel, or JSON format.

### Business Use Cases

- **Construction Estimator** - Pull current material prices across regions to build accurate project bids with real market data instead of outdated price books
- **Procurement Manager** - Track weekly price trends for key materials to time bulk purchases when costs dip and avoid buying at seasonal peaks
- **Market Analyst** - Analyze historical construction material costs across regions to produce industry reports and forecast future pricing

### FAQ

**How does this scraper work?**
The scraper fetches Procore's publicly available Material Price Tracker page and extracts structured pricing data embedded in the page. No browser automation needed. One request gets all 63 products with full regional and historical data.

**How accurate is the price data?**
Price data comes directly from Procore's Material Price Tracker, which aggregates pricing from industry sources. Data is updated weekly. Accuracy depends on Procore's sourcing methodology.

**Can I schedule this to run automatically?**
Yes. Use the Apify scheduler to run this actor on a daily, weekly, or monthly basis. You can also integrate it with Make, Zapier, or GitHub Actions for automated price monitoring.

**Is scraping Procore allowed?**
This scraper collects publicly available data from Procore's Material Price Tracker page. Always review the site terms of service and ensure your use case complies with local laws and regulations.

**How long does a run take?**
A run takes a few seconds. All data comes from a single page request.

**Are there any limits?**
Free users get up to 10 items. Paid users can collect up to 1,000,000 results.

**What materials are tracked?**
Procore tracks 63 construction materials including dimensional lumber, plywood, rebar, steel beams, concrete, copper wire, PVC pipe, insulation, drywall, roofing materials, and more.

### Integrate with Any App

- [Make](https://docs.apify.com/platform/integrations/make) - Automate workflows
- [Zapier](https://docs.apify.com/platform/integrations/zapier) - Connect 5000+ apps
- [GitHub](https://docs.apify.com/platform/integrations/github) - Version control integration
- [Slack](https://docs.apify.com/platform/integrations/slack) - Get notifications
- [Airbyte](https://docs.apify.com/platform/integrations/airbyte) - Data pipelines
- [Google Drive](https://docs.apify.com/platform/integrations/drive) - Export to spreadsheets

### More ParseForge Actors

- [GSA eLibrary Scraper](https://apify.com/parseforge/gsa-elibrary-scraper) - Search and extract government contract data from the GSA eLibrary
- [Texas State Licensed Contractor Scraper](https://apify.com/parseforge/tdlr-texas-scraper) - Look up licensed contractors in Texas
- [California State Licensed Contractor CSLB Scraper](https://apify.com/parseforge/cslb-california-scraper) - Search California contractor license records
- [BizBuySell Scraper](https://apify.com/parseforge/bizbuysell-scraper-pay-per-event) - Extract business-for-sale listings with financials
- [Auction.com Property Scraper](https://apify.com/parseforge/auction-com-property-scraper) - Collect auction property listings and details

Browse our complete collection of [data extraction tools](https://apify.com/parseforge) for more.

### Ready to Start?

[Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) and collect your first results for free. No coding, no setup.

### Need Help?

- Check the FAQ section above for common questions
- Visit the [Apify support page](https://docs.apify.com) for documentation and tutorials
- Contact us to request a new scraper, propose a custom project, or report an issue at [Tally contact form](https://tally.so/r/BzdKgA)

### Disclaimer

> This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Procore Technologies, Inc. or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

# Actor input Schema

## `mode` (type: `string`):

currentPrices: Get the latest price for each material (63 products). historicalPrices: Get weekly price history for a specific product.

## `productName` (type: `string`):

Product name for historical prices mode (e.g. "Dimensional lumber, untreated"). Ignored in currentPrices mode.

## `region` (type: `string`):

Filter results by US region. Use "National" for the national average.

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## Actor input object example

```json
{
  "mode": "currentPrices",
  "productName": "Dimensional lumber, untreated",
  "region": "National",
  "maxItems": 10
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset with all scraped items

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "currentPrices",
    "productName": "Dimensional lumber, untreated",
    "region": "National",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/procore-construction-material-prices-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "currentPrices",
    "productName": "Dimensional lumber, untreated",
    "region": "National",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/procore-construction-material-prices-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "currentPrices",
  "productName": "Dimensional lumber, untreated",
  "region": "National",
  "maxItems": 10
}' |
apify call parseforge/procore-construction-material-prices-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/procore-construction-material-prices-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Procore Construction Material Prices Scraper",
        "description": "Track US construction material prices from Procore's tracker. Get current and weekly historical prices for 63 materials across 6 US regions. Covers lumber, metal, cement, roofing, electrical, plumbing, and HVAC. Data back to 2021 for trend analysis.",
        "version": "1.0",
        "x-build-id": "Ta5WHVi1e9CY4ueaH"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~procore-construction-material-prices-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-procore-construction-material-prices-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~procore-construction-material-prices-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-procore-construction-material-prices-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~procore-construction-material-prices-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-procore-construction-material-prices-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "currentPrices",
                            "historicalPrices"
                        ],
                        "type": "string",
                        "description": "currentPrices: Get the latest price for each material (63 products). historicalPrices: Get weekly price history for a specific product.",
                        "default": "currentPrices"
                    },
                    "productName": {
                        "title": "Product Name",
                        "type": "string",
                        "description": "Product name for historical prices mode (e.g. \"Dimensional lumber, untreated\"). Ignored in currentPrices mode."
                    },
                    "region": {
                        "title": "Region",
                        "enum": [
                            "National",
                            "Northeast",
                            "Southeast",
                            "Midwest",
                            "West",
                            "South",
                            "Northwest"
                        ],
                        "type": "string",
                        "description": "Filter results by US region. Use \"National\" for the national average.",
                        "default": "National"
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
