API Data Provider - Online Help

Connecting to Procore

To authenticate to Procore, and connect to your own data or to allow other users to connect to their data, you can use the OAuth standard.

Using OAuth Authentication

First, you will need to register an OAuth application with Procore. You can do so by logging to your Developer Account and going to Create New App. Follow all necessary steps to register your app. First you will need to create a new version of Sandbox Manifest and then promote it to Production in order to get your Production Credentials. Your OAuth application will be assigned a client id and a client secret.

After setting the following connection properties, you are ready to connect:

  • AuthScheme: Set this to OAuth.
  • InitiateOAuth: Set this to GETANDREFRESH. You can use InitiateOAuth to manage the process to obtain the OAuthAccessToken.
  • OAuthClientId: Set this to the client_id that is specified in you app settings.
  • OAuthClientSecret: Set this to the client_secret that is specified in you app settings.
  • CallbackURL: Set this to the Redirect URI that is specified in your app settings

Optionally, you can also set the CompanyId property in the ProfileSettings property to your Procore company id. As most tables require a CompanyId as input, this property can be used to supply this input rather than specifying it in the query. If both this property and the CompanyId filter in a table are set, the filter takes precedence. You can obtain a list of company Ids by querying the Companies table.

Optionally, set IsSandbox to true to connect to the Procore sandbox environment (sandbox.procore.com) instead of the production environment (api.procore.com).

Example connection string:

Profile=C:\profiles\Procore.apip;Authscheme=OAuth;InitiateOAuth=GETANDREFRESH;OAuthClientId=your_client_id;OAuthClientSecret=your_client_secret;CallbackUrl=your_callback_url;ProfileSettings='CompanyId=598164315669877;';

Available Tables

The Procore API Profile provides access to the following tables:

  • AccidentLogs: Returns all Accident Logs for projects
  • ActualProductionQuantities: Access actual production quantity records
  • AdminEquipmentLogs: Retrieve admin equipment log entries
  • BidBoardProjects: Query bid board project information
  • Bids: Access project bid records
  • BillingPeriods: Retrieve billing period information
  • BudgetChangeAdjustmentLineItems: Query budget change adjustment line items
  • BudgetedProductionQuantities: Access budgeted production quantities
  • CallLogs: Retrieve call log entries
  • Companies: Access company records and information
  • CompanyFolders: Query company folder structures
  • CompanyInactivePeople: Retrieve inactive people at the company level
  • CompanyInactiveUsers: Access inactive users at the company level
  • CompanyInactiveVendors: Query inactive vendors at the company level
  • CompanyInsurances: Retrieve company insurance records
  • CompanyOffices: Access company office locations
  • CompanyPeople: Query people records at the company level
  • CompanyPermissionTemplates: Retrieve company permission templates
  • CompanyUsers: Access company user records
  • CompanyVendors: Query company vendor information
  • CompanyTimecardEntries: Return timecard entries for a specified Company with comprehensive details including clock in/out times, cost codes, crews, and custom fields
  • CompanyTimecardEntryChangeHistory: Retrieve change history for specific timecard entries at the Company level
  • CostCatalogs: Access cost catalog records
  • CostCodes: Query cost code information
  • CostItems: Retrieve cost item records
  • Crews: Access crew information
  • DailyConstructionReportLogs: Query daily construction report logs
  • DelayLogs: Retrieve delay log entries
  • Departments: Access department information
  • DirectCosts: Query direct cost records
  • Drawings: Returns drawings for a specified Drawing Area
  • Equipment: Retrieve equipment records
  • EquipmentCategories: Access equipment category information
  • EquipmentMakes: Query equipment makes
  • EquipmentModels: Retrieve equipment models
  • EquipmentTypes: Access equipment types
  • FieldProductionReport: Query field production report data
  • Images: Returns images for a specified Project
  • Incidents: Retrieve incident records
  • Injuries: Access injury records
  • Locations: Query location information
  • MeetingDetails: Retrieve detailed meeting information
  • Meetings: Access meeting records
  • ObservationsAssigneeOptions: Query observation assignee options
  • Programs: Retrieve program information
  • ProjectBidTypes: Access project bid types
  • ProjectDocumentCustomTags: Query project document custom tags
  • ProjectEquipment: Retrieve project equipment records
  • ProjectInactivePeople: Access inactive people at the project level
  • ProjectInactiveUsers: Query inactive users at the project level
  • ProjectInactiveVendors: Retrieve inactive vendors at the project level
  • ProjectInsurances: Access project insurance records
  • ProjectOwnerTypes: Query project owner types
  • ProjectPeople: Retrieve people records at the project level
  • ProjectPermissionTemplates: Access project permission templates
  • ProjectRegions: Query project region information
  • ProjectRoles: Retrieve project role information
  • ProjectStages: Access project stage information
  • ProjectTaskItems: Query project task items
  • ProjectTemplates: Retrieve project templates
  • ProjectTools: Access project tools information
  • ProjectTypes: Query project types
  • ProjectUsers: Retrieve project user records
  • ProjectVendors: Access project vendor information
  • Projects: Query project records
  • ProjectTimecardEntries: Return timecard entries for a specified Project with comprehensive details including approval status, billing information, and time tracking
  • PurchaseOrderContractLineItems: Retrieve purchase order contract line items
  • PurchaseOrderContracts: Access purchase order contract records
  • PunchItems: Returns punch items for a specified Project
  • Requisitions: Query requisition information
  • Rfis: Returns RFIs for a specified Project
  • Roles: Retrieve role information
  • StandardCostCodeLists: Access standard cost code lists
  • StandardCostCodes: Query standard cost codes
  • Subjobs: Retrieve subjob records
  • SubmittalStatuses: Access submittal status information
  • TaskItemsAssigneeOptions: Query task item assignee options
  • Tasks: Retrieve task records
  • TimecardEntries: Return all timecard entries with basic information including hours, dates, and timestamps
  • Timesheets: Access timesheet records
  • Trades: Query trade information
  • WorkLogs: Retrieve work log entries
  • WorkOrderContractLineItems: Access work order contract line items
  • WorkOrderContracts: Query work order contract records
  • WorkflowActivityHistory: Retrieve workflow activity history
  • WorkflowInstances: Access workflow instance records

Important Notes

  • The Procore API requires CompanyId for most operations. You can set this as a connection property or provide it in queries.
  • Timecard-related tables support date range filtering using StartDate and EndDate parameters for efficient data retrieval.
  • Many tables support both Company-level and Project-level access patterns, allowing flexible data queries based on organizational hierarchy.
  • The API supports both production (api.procore.com) and sandbox (sandbox.procore.com) environments through the IsSandbox connection property.
  • Date fields use ISO-8601 format (YYYY-MM-DD for dates, YYYY-MM-DDTHH:MM:SSZ for datetimes).
  • Pagination is automatically handled with 100 items per page for optimal performance.
  • Some tables include aggregate fields (JSON objects) that can be queried as string columns.
  • Rate limiting applies - refer to Procore API documentation for current limits.

API Documentation

For more information about the Procore API, see the official Procore API documentation.

Usage Examples

AccidentLogs:

SELECT * FROM AccidentLogs WHERE ProjectId = 12345 AND StartDate = '2024-01-01' AND EndDate = '2024-12-31'

Companies:

SELECT * FROM Companies

CompanyPeople:

SELECT * FROM CompanyPeople WHERE CompanyId = 12345

CompanyTimecardEntries:

SELECT * FROM CompanyTimecardEntries WHERE CompanyId = 12345 AND Date >= '2024-01-01' AND Date <= '2024-01-31'

CompanyTimecardEntries (with specific filters):

SELECT * FROM CompanyTimecardEntries
WHERE CompanyId = 12345
  AND Date >= '2024-01-01'
  AND Date <= '2024-01-31'
  AND PartyId = 67890

CompanyTimecardEntryChangeHistory:

SELECT * FROM CompanyTimecardEntryChangeHistory WHERE CompanyId = 12345 AND Id = 98765

CostCodes:

SELECT * FROM CostCodes WHERE ProjectId = 12345

Crews:

SELECT * FROM Crews WHERE ProjectId = 12345

Projects:

SELECT * FROM Projects

Projects (with specific company):

SELECT * FROM Projects WHERE CompanyId = 12345

ProjectTimecardEntries:

SELECT * FROM ProjectTimecardEntries WHERE ProjectId = 12345 AND LogDate = '2024-01-15'

ProjectTimecardEntries (with filters):

SELECT * FROM ProjectTimecardEntries
WHERE ProjectId = 12345
  AND LogDate = '2024-01-15'
  AND CreatedById = 54321

TimecardEntries:

SELECT * FROM TimecardEntries WHERE ProjectId = 12345 AND LogDate = '2024-01-15'

Timesheets:

SELECT * FROM Timesheets WHERE ProjectId = 12345

WorkLogs:

SELECT * FROM WorkLogs WHERE ProjectId = 12345

WorkflowInstances:

SELECT * FROM WorkflowInstances WHERE CompanyId = 12345

Bids:

SELECT * FROM Bids WHERE ProjectId = 12345

CompanyUsers:

SELECT * FROM CompanyUsers WHERE CompanyId = 12345

DailyConstructionReportLogs:

SELECT * FROM DailyConstructionReportLogs WHERE ProjectId = 12345

DirectCosts:

SELECT * FROM DirectCosts WHERE ProjectId = 12345

Drawings:

SELECT * FROM Drawings WHERE DrawingAreaId = 12345 AND CompanyId = 67890 AND ProjectId = 11111

Equipment:

SELECT * FROM Equipment WHERE CompanyId = 12345

Equipment (with filters):

SELECT * FROM Equipment WHERE CompanyId = 12345 AND TypeName = 'Excavator'

FieldProductionReport:

SELECT * FROM FieldProductionReport WHERE ProjectId = 12345

Images:

SELECT * FROM Images WHERE ProjectId = 12345 AND CompanyId = 67890

Incidents:

SELECT * FROM Incidents WHERE ProjectId = 12345

Injuries:

SELECT * FROM Injuries WHERE ProjectId = 12345

Locations:

SELECT * FROM Locations WHERE ProjectId = 12345

Meetings:

SELECT * FROM Meetings WHERE ProjectId = 12345

ProjectPeople:

SELECT * FROM ProjectPeople WHERE ProjectId = 12345

ProjectUsers:

SELECT * FROM ProjectUsers WHERE ProjectId = 12345

Projects (with status filter):

SELECT * FROM Projects WHERE Status = 'Active'

PurchaseOrderContracts:

SELECT * FROM PurchaseOrderContracts WHERE ProjectId = 12345

PunchItems:

SELECT * FROM PunchItems WHERE ProjectId = 12345 AND CompanyId = 67890

Requisitions:

SELECT * FROM Requisitions WHERE ProjectId = 12345 AND CompanyId = 67890

Rfis:

SELECT * FROM Rfis WHERE ProjectId = 12345 AND CompanyId = 67890

Tasks:

SELECT * FROM Tasks WHERE ProjectId = 12345

Trades:

SELECT * FROM Trades WHERE CompanyId = 12345

WorkOrderContracts:

SELECT * FROM WorkOrderContracts WHERE ProjectId = 12345

ActualProductionQuantities:

SELECT * FROM ActualProductionQuantities WHERE ProjectId = 12345

AdminEquipmentLogs:

SELECT * FROM AdminEquipmentLogs WHERE ProjectId = 12345

BidBoardProjects:

SELECT * FROM BidBoardProjects WHERE CompanyId = 12345

BillingPeriods:

SELECT * FROM BillingPeriods WHERE ProjectId = 12345

BudgetChangeAdjustmentLineItems:

SELECT * FROM BudgetChangeAdjustmentLineItems WHERE CompanyId = 12345 AND ProjectId = 67890

BudgetedProductionQuantities:

SELECT * FROM BudgetedProductionQuantities WHERE ProjectId = 12345

CallLogs:

SELECT * FROM CallLogs WHERE ProjectId = 12345

CompanyFolders:

SELECT * FROM CompanyFolders WHERE CompanyId = 12345

CompanyInactivePeople:

SELECT * FROM CompanyInactivePeople WHERE CompanyId = 12345

CompanyInactiveUsers:

SELECT * FROM CompanyInactiveUsers WHERE CompanyId = 12345

CompanyInactiveVendors:

SELECT * FROM CompanyInactiveVendors WHERE CompanyId = 12345

CompanyInsurances:

SELECT * FROM CompanyInsurances WHERE CompanyId = 12345

CompanyOffices:

SELECT * FROM CompanyOffices WHERE CompanyId = 12345

CompanyPermissionTemplates:

SELECT * FROM CompanyPermissionTemplates WHERE CompanyId = 12345

CompanyVendors:

SELECT * FROM CompanyVendors WHERE CompanyId = 12345

CostCatalogs:

SELECT * FROM CostCatalogs WHERE CompanyId = 12345

CostItems:

SELECT * FROM CostItems WHERE CompanyId = 12345 AND CatalogId = 67890

DelayLogs:

SELECT * FROM DelayLogs WHERE ProjectId = 12345

Departments:

SELECT * FROM Departments WHERE CompanyId = 12345

EquipmentCategories:

SELECT * FROM EquipmentCategories WHERE CompanyId = 12345

EquipmentMakes:

SELECT * FROM EquipmentMakes WHERE CompanyId = 12345

EquipmentModels:

SELECT * FROM EquipmentModels WHERE CompanyId = 12345

EquipmentTypes:

SELECT * FROM EquipmentTypes WHERE CompanyId = 12345

MeetingDetails:

SELECT * FROM MeetingDetails WHERE ProjectId = 12345 AND Id = 67890

ObservationsAssigneeOptions:

SELECT * FROM ObservationsAssigneeOptions WHERE ProjectId = 12345

Programs:

SELECT * FROM Programs WHERE CompanyId = 12345

ProjectBidTypes:

SELECT * FROM ProjectBidTypes WHERE CompanyId = 12345

ProjectDocumentCustomTags:

SELECT * FROM ProjectDocumentCustomTags WHERE ProjectId = 12345

ProjectEquipment:

SELECT * FROM ProjectEquipment WHERE ProjectId = 12345

ProjectInactivePeople:

SELECT * FROM ProjectInactivePeople WHERE ProjectId = 12345

ProjectInactiveUsers:

SELECT * FROM ProjectInactiveUsers WHERE ProjectId = 12345

ProjectInactiveVendors:

SELECT * FROM ProjectInactiveVendors WHERE ProjectId = 12345

ProjectInsurances:

SELECT * FROM ProjectInsurances WHERE ProjectId = 12345

ProjectOwnerTypes:

SELECT * FROM ProjectOwnerTypes WHERE CompanyId = 12345

ProjectPermissionTemplates:

SELECT * FROM ProjectPermissionTemplates WHERE ProjectId = 12345

ProjectRegions:

SELECT * FROM ProjectRegions WHERE CompanyId = 12345

ProjectRoles:

SELECT * FROM ProjectRoles WHERE ProjectId = 12345

ProjectStages:

SELECT * FROM ProjectStages WHERE CompanyId = 12345

ProjectTaskItems:

SELECT * FROM ProjectTaskItems WHERE ProjectId = 12345

ProjectTemplates:

SELECT * FROM ProjectTemplates WHERE CompanyId = 12345

ProjectTools:

SELECT * FROM ProjectTools WHERE ProjectId = 12345

ProjectTypes:

SELECT * FROM ProjectTypes WHERE CompanyId = 12345

ProjectVendors:

SELECT * FROM ProjectVendors WHERE ProjectId = 12345

PurchaseOrderContractLineItems:

SELECT * FROM PurchaseOrderContractLineItems WHERE ProjectId = 12345 AND PurchaseOrderContractId = 67890

Roles:

SELECT * FROM Roles WHERE CompanyId = 12345

StandardCostCodeLists:

SELECT * FROM StandardCostCodeLists WHERE CompanyId = 12345

StandardCostCodes:

SELECT * FROM StandardCostCodes WHERE CompanyId = 12345 AND StandardCostCodeListId = 67890

Subjobs:

SELECT * FROM Subjobs WHERE ProjectId = 12345

SubmittalStatuses:

SELECT * FROM SubmittalStatuses WHERE CompanyId = 12345

TaskItemsAssigneeOptions:

SELECT * FROM TaskItemsAssigneeOptions WHERE ProjectId = 12345

WorkOrderContractLineItems:

SELECT * FROM WorkOrderContractLineItems WHERE ProjectId = 12345 AND WorkOrderContractId = 67890

WorkflowActivityHistory:

SELECT * FROM WorkflowActivityHistory WHERE CompanyId = 12345 AND WorkflowInstanceId = 67890

Connection Properties

The connection string properties are the various options that can be used to establish a connection. This section provides a complete list of the options you can configure in the connection string for this provider.


Property Description
AuthScheme The scheme used for authentication. Accepted entries are None, OAuth, or OAuthClient.
Allowed values are: BASIC, NONE, NTLM, OAUTH, APIKEY, OAUTH_CLIENT, OAUTH_PASSWORD
CallbackURL Identifies the URL users return to after authenticating to API via OAuth (Custom OAuth applications only).
CompanyId Your Procore company id.
InitiateOAuth Specifies the process for obtaining or refreshing the OAuth access token, which maintains user access while an authenticated, authorized user is working.
Allowed values are: OFF, REFRESH, GETANDREFRESH
IsSandbox A boolean used to instruct the driver which account to access: sandbox or production. Set it to true to access your sandbox data.
OAuthAccessToken Specifies the OAuth access token used to authenticate requests to the data source. This token is issued by the authorization server after a successful OAuth exchange.
OAuthClientId Specifies the client ID (also known as the consumer key) assigned to your custom OAuth application. This ID is required to identify the application to the OAuth authorization server during authentication.
OAuthClientSecret Specifies the client secret assigned to your custom OAuth application. This confidential value is used to authenticate the application to the OAuth authorization server. (Custom OAuth applications only.).
OAuthExpiresIn Specifies the duration in seconds, of an OAuth Access Token's lifetime. The token can be reissued to keep access alive as long as the user keeps working.
OAuthRefreshToken Specifies the OAuth refresh token used to request a new access token after the original has expired.
OAuthSettingsLocation Specifies the location of the settings file where OAuth values are saved.
OAuthTokenTimestamp Displays a Unix epoch timestamp in milliseconds that shows how long ago the current access token was created.
OAuthVerifier Specifies a verifier code returned from the OAuthAuthorizationURL . Used when authenticating to OAuth on a headless server, where a browser can't be launched. Requires both OAuthSettingsLocation and OAuthVerifier to be set.
Scope Scope(s) to use when authenticating, that control access to specific information.

Copyright (c) 2026 CData Software, Inc. - All rights reserved.
Build 26.0.9770.0