procore.com APIprocore.com ↗
Search construction projects, bids, and company profiles from the Procore Construction Network. Get bid due dates, trades, funding type, and full company details.
curl -X GET 'https://api.parse.bot/scraper/104087f7-d4a7-45ef-a18f-4bfc5715e762/search_projects?page=1&query=roofing&funding_type=public' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for construction projects and bids on the Procore Construction Network. Returns rich project data including titles, locations, bid due dates, and solicitor information. The 'bidEmailMessage' field often contains detailed project scope and contact person details.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| sort | string | Sort order for results. |
| query | string | Search keyword for projects (e.g. 'electrical', 'plumbing'). When omitted, returns all recent projects. |
| page_size | integer | Number of results per page (used when query is omitted). |
| funding_type | string | Filter by funding type: 'public' or 'private'. |
{
"type": "object",
"fields": {
"count": "integer total number of matching projects",
"results": "array of project objects with title, projectLocation, bidDueDate, companyName, fundingType, primarySlug, tradesAndServices, bidEmailMessage, open",
"finalRadius": "integer search radius used"
},
"sample": {
"data": {
"count": 3,
"results": [
{
"open": true,
"title": "Grand Arena Bid",
"bidDueDate": null,
"companyName": "CALTEC Corporation",
"fundingType": "public",
"primarySlug": "8096_1337828_grand-arena-bid",
"lastUpdatedAt": "2026-05-05T15:35:30.000Z",
"bidEmailMessage": "The Scope of Work is as follows...",
"projectLocation": {
"zip": "91744",
"city": "City of Industry",
"address": "16200 Temple Avenue",
"stateCode": "CA",
"countryCode": "US"
},
"tradesAndServices": [
{
"pcn_trade_key": "electrical",
"pcn_trade_path": "utility_and_mechanical_systems#electrical",
"pcn_trade_level": "trade"
}
]
}
],
"finalRadius": 0
},
"status": "success"
}
}About the procore.com API
The Procore Construction Network API exposes 4 endpoints covering construction project bids and contractor company profiles. Use search_projects to find active bids filtered by keyword, funding type, and location, then retrieve full project scope, bidding instructions, and point-of-contact email via get_project_details. Company discovery is equally structured, with service categories, coverage areas, and business classifications returned per profile.
Project Search and Bid Discovery
The search_projects endpoint accepts a query keyword (e.g. 'electrical', 'plumbing'), a funding_type filter ('public' or 'private'), and standard page/page_size pagination. Each result in the results array includes title, projectLocation, bidDueDate, companyName, fundingType, tradesAndServices, and a primarySlug you can pass directly to get_project_details. The count field tells you the total number of matching bids across all pages.
Project Detail
get_project_details takes the slug from search results and returns the full project record. Key fields include projectDescription and biddingInstructions (both HTML), bidDueDate as an ISO date string, pointOfContactEmail, the open boolean indicating whether the project is still accepting bids, and a tradesAndServices array with typed trade keys. The location object provides city, state code, street address, and ZIP.
Company Search and Profiles
search_companies queries the contractor directory by keyword and returns count plus a results array with name, primarySlug, about, businessTypes, constructionSectors, providedServices, addresses, and website. Passing a slug from those results to get_company_details returns the full profile, adding phone, primaryAddress (city, province, postal code), coverageAreas as geographic objects, and a providedServices array with key, name, and type per entry.
Pagination and Filtering
Both search endpoints support page and sort parameters. The page_size parameter applies when no query is provided. The finalRadius field in search responses reports the geographic radius that was used to scope results, which can differ from any implicit default depending on the query.
- Monitor newly posted public bids by polling
search_projectswithfunding_type='public'and checkingbidDueDatefields. - Build a subcontractor matching tool by querying
search_companiesfor a trade keyword and filtering results byconstructionSectorsandprovidedServices. - Aggregate bid contact information by extracting
pointOfContactEmailandcompanyNamefromget_project_detailsresponses at scale. - Track which trades are required across active projects by collecting
tradesAndServicesarrays fromsearch_projectsresults. - Qualify GC or sub partners by pulling full company profiles via
get_company_detailsto inspectbusinessTypes,coverageAreas, andwebsite. - Identify private vs. public construction activity in a region by filtering
search_projectsresults on thefundingTypefield. - Cross-reference a company's stated coverage against project locations by joining
coverageAreasfromget_company_detailswithprojectLocationfrom project search results.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Procore offer an official developer API?+
What does `get_project_details` return that `search_projects` does not?+
search_projects returns summary fields: title, bidDueDate, companyName, fundingType, and tradesAndServices. get_project_details adds the full projectDescription (HTML), biddingInstructions (HTML), pointOfContactEmail, a structured location object with street address and ZIP, and the open boolean indicating current bid status.Can I filter `search_projects` by trade type or geographic radius?+
query parameter (e.g. 'electrical', 'concrete') and by funding_type ('public' or 'private'). Direct filtering by trade category or by an explicit radius is not a supported input parameter — the finalRadius field in the response reports the radius the search applied, but it is not user-controlled. You can fork the API on Parse and revise it to add a geographic or trade-specific filter endpoint.Are company profiles always available via `get_company_details`?+
primarySlug required for the call comes from search_companies results, so profiles that do not appear in search are also not reachable.Does the API expose bid documents or attachments linked to a project?+
projectDescription, biddingInstructions, pointOfContactEmail, and tradesAndServices — but does not return downloadable plan sets or attached bid documents. You can fork the API on Parse and revise it to add an endpoint that retrieves document links if they are present on a project's detail page.