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.

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
  • 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
  • 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
  • Requisitions: Query requisition information
  • 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 StartDate = '2024-01-01' AND EndDate = '2024-01-31'

CompanyTimecardEntries (with specific filters):

SELECT * FROM CompanyTimecardEntries
WHERE CompanyId = 12345
  AND StartDate = '2024-01-01'
  AND EndDate = '2024-01-31'
  AND FilterPartyId = '67890'

CompanyTimecardEntryChangeHistory:

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

CostCodes:

SELECT * FROM CostCodes WHERE ProjectId = 12345

Crews:

SELECT * FROM Crews WHERE CompanyId = 12345

Projects:

SELECT * FROM Projects

Projects (with specific company):

SELECT * FROM Projects WHERE CompanyId = 12345

ProjectTimecardEntries:

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

ProjectTimecardEntries (with specific date):

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

ProjectTimecardEntries (with filters):

SELECT * FROM ProjectTimecardEntries
WHERE ProjectId = 12345
  AND StartDate = '2024-01-01'
  AND EndDate = '2024-01-31'
  AND FilterCreatedById = '54321'

TimecardEntries:

SELECT * FROM TimecardEntries WHERE ProjectId = 12345 AND CompanyId = 67890 AND StartDate = '2024-01-01' AND EndDate = '2024-01-31'

TimecardEntries (with specific date):

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

Timesheets:

SELECT * FROM Timesheets WHERE ProjectId = 12345

WorkLogs:

SELECT * FROM WorkLogs WHERE ProjectId = 12345

WorkflowInstances:

SELECT * FROM WorkflowInstances WHERE ProjectId = 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

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

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

Requisitions:

SELECT * FROM Requisitions WHERE ProjectId = 12345

Tasks:

SELECT * FROM Tasks WHERE ProjectId = 12345

Trades:

SELECT * FROM Trades WHERE CompanyId = 12345

WorkOrderContracts:

SELECT * FROM WorkOrderContracts WHERE ProjectId = 12345

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
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
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.9655.0