LinkedIn's Pay For Performance (P4P) Reports API provides insights into how your P4P jobs have performed. There are 2 APIs, job and budget, you can call to get various information about your P4P jobs, performance, budget and daily spend.
API Authorization
All requests below require access tokens obtained via the OAuth2.0 Client Credentials flow. You MUST use the token from the same Developer Application (or clientId) as you used to create the job.
Important
We strongly recommend to use same access token for all concurrent and consecutive calls. An access token has a lifespan of 30 mins. Only on expiry of the existing token should a new token should be generated.
Check Job Reports
Job Reports API allows you to fetch daily job performance metrics by externalJobPostingId or partnerJobCode, if applicable, within a specified date range. Performance metrics include jobPostingInfo (includes jobTitle, companyDetails and more), as well as lifetimeJobBudgetInfo and performance data under jobPerformanceMetrics.
Note
Job Reports may not include data from the current UTC day and will be retained for one year. An example of the UTC cut-over is, if you posted a job at 5 PM Pacific Time on 1/1, which is 1 AM 1/2 (tomorrow) in UTC, then the job can take up to 24 hours (1/3 in UTC) to show up in the report. Please note that charge or spent-related information follows the 48-hour guideline below.
lifetimeBudgetSpent and jobPerformanceMetrics can be estimated values; it will take up to 48 hours to reflect the final amounts. If your job was CLOSED or DELETED before any charge was incurred, then the job may not appear in reports.
Calling the same date range multiple times per day will NOT result in new data as it is capped to yesterday's UTC date.
If your job is eligible to have an associated Job Campaign, partnerJobCampaign will be displayed from Linkedin-Version from & later than 202407.
Check Job Reports By IDs
Query Parameters
Field Name
Description
Type
Required
ids
List of the unique external partner job identifiers, such as externalJobPostingId for Job Distributor (JD) or ATS partners and partnerJobCode for Recruitment Advertising Agency (RAA) partners. You can query up to 10 per request.
String[]
Yes
dateRange
Date range to fetch reports. Both start and end dates are inclusive, and one should provide valid day, month and year values. The start date must fall within a 1-year retention period of the jobs. End date can not be later than yesterday. One can query a max of one month (up to 31 days) per call. If you want to query a date range that contains 2 different months, then you must query twice for each month.
Date range covered by the data point in the report. Both start and end dates are inclusive. One must provide valid day, month, and year values for both fields. The start date must fall within a one-year retention period, and the end date can not be later than yesterday in UTC. The maximum number of days requested can not exceed a 7-day time frame.
Accumulated monetary charges of the job posting from the start of the job until the job is closed or current day. Please note that Job Reports By Date Range does not display lifetimeJobBudgetInfo amounts.
External job posting id (also known as partnerJobCode) provided by the poster.
String
No
linkedInJobPostingId
LinkedIn job id to uniquely identify the job in the LinkedIn eco-system.
Long
No
closeAt
Time at which the job was closed and no longer accepts any applications. Measured in epoch milliseconds (UTC). For RAA partners, this field is not applicable to Campaign jobs.
Long
No
companyDetails
Job company details. It contains company name and LinkedIn company page url.
Total count of viewers who viewed the job on the given day.
Long
No
applyClickCount
Total count of people who clicked the apply button of the job on the given day.
Long
No
partnerJobCampaign
Only for Job Reports By IDs, partnerJobCampaign will be available in response for the eligible jobs.
String
No
CompanyDetails Object Schema
Field Name
Description
Type
Required
companyName
Name of the company.
String
No
company
Unique identifier (known as urn) of the company in LinkedIn eco-system.
Company Urn
No
Check Budget Reports
Budget Reports API allows you to fetch your lifetime budget information. Please note that the information does not include current day's in UTC.
Check Budget Reports Sample Request
Note
To retrieve the report and view the overall budget, you must utilize the {access_token} associated with the parent Developer Application, regardless of whether the jobs were posted through child applications.
This is a versioned API. Linkedin-Version is required to provide to specify the right version to call.
Calling the same date range multiple times per day will NOT result in new data as it is capped to yesterday's UTC date.
Job Campaign Reports API allows you to fetch your campaignBudgetDetails, viewCount, applyClickCount, partnerJobCampaignName and state. It can take upto 10 partnerJobCampaignIds per request. Please note that the information does not include current day's in UTC. The usage of this API is very similar to how you are expected to call Check Job Reports By IDs.
Note
Like the Job Reports, Campaign Reports may not include data from the current UTC day and will be retained for one year. An example of the UTC cut-over is, if you posted a job at 5 PM Pacific Time on 1/1, which is 1 AM 1/2 (tomorrow) in UTC, then the job can take up to 24 hours (1/3 in UTC) to show up in the report. Please note that charge or spent-related information follows the 48-hour guideline below.
campaignBudgetDetails can be estimated values; it will take up to 48 hours to reflect the final amounts. If your job was CLOSED or DELETED before any charge was incurred, then the job may not appear in reports.
Calling the same date range multiple times per day will NOT result in new data as it is capped to yesterday's UTC date.
Check Job Campaign Reports Sample Request
Note
You must use the {access_token} from a child Developer Application that you created the campaigns with.
This is a versioned API. Linkedin-Version is required to provide to specify the right version to call.
Calling the same date range multiple times per day will NOT result in new data as it is capped to yesterday's UTC date.
The aggregated count of views to all jobs that have been in the campaign.
Long
applyClickCount
The aggregated count of apply clicks to all jobs that have been in the campaign.
Long
Shared API Schema
Three schemas below are shared among LinkedIn's APIs.
PartnerReportBudgetInfo Object Schema
Field Name
Description
Type
serviceTermBudgetSpent
Accumulated monetary charge across all P4P jobs under the partner by Developer Application. The currency type is the same as in serviceTermBudgetLimit.
Day represented in integer. Valid range from 1 to 31 depending on month.
Int
Yes
month
Month represented in integer. Valid range from 1 to 12.
Int
Yes
year
Year represented in integer.
Int
Yes
API Error Details
Error Code
Http Status
Error Message
Reason
Resolution
6000
403
Caller is unauthorized to access the job reporting, unable to find valid customer developer application id.
Access Denied
Ensure that you are using the correct customer application credentials.
6001
403
Caller is unauthorized to access the budget reporting, unable to find valid parent developer application id.
Access Denied
Ensure that you are using the correct parent application credentials.
6003
500
Failed to find partner level service term metadata.
Internal server error
Please reach out to support.
6004
404
No partner level budget information found.
Resource Not Found
Ensure that you are using the correct partner application credentials.
6005
500
Failed to find partner level budget information.
Internal server error
Please reach out to support.
6006
400
Invalid DateRange! Date range query param should have start and end date.
Bad Request
Ensure that you are using the right date range parameters. Please provide start and end date as per the schema.
6007
400
Invalid DateRange! Start and end date is required with a valid day, month & year field.
Bad Request
Please refer to the schema documentation and make sure all the required fields are present for the date range param.
6008
400
Invalid DateRange! End date can not be before start date.
Bad Request
Ensure that you are not providing an end date that is outside the one year period.
6009
400
Invalid DateRange! Start date can not be outside of one year retention period.
Bad Request
Ensure that you are not providing a start date that is outside the one year period.
6010
400
Invalid DateRange! Today or future UTC date reporting metrics is not supported.
Bad Request
Ensure that you are not providing a today or future date as the start date in UTC.
6011
400
Invalid DateRange! Start and end date should be within the range of 1 calendar month.
Bad Request
Ensure that you are not providing a date range that is not within 1 calendar month, e.g. Fetching 08/26/2023 to 09/05/2023 is not acceptable. You can query API with 08/26 to 08/31 or 09/01 to 09/05.
6012
500
Failed to find job posting details for provided external job posting ids.
Internal server error
Please reach out to support.
6013
404
No job posting information found for a given externalJobPostingIds: {external-job-posting-id}.
Resource Not Found
Please ensure you are using the same developer application/OAuth token as you posted the job. If you were, the job may have de-duped due to the similarities with other LinkedIn jobs you posted.
6014
404
No active or revoke budget information found for the provided partner.
Resource Not Found
Ensure that you are using the correct partner application credentials.
6015
500
Failed to find lifetime job spend information for a provided external job posting ids.
Internal server error
Please reach out to support.
6016
500
Internal error while fetching lifetime job spend information for a provided external job posting ids.
Internal server error
Please reach out to support.
6017
500
Failed to find lifetime job budget limit information for a provided external job posting ids.
Internal server error
Please reach out to support.
6018
500
Failed to find daily job charges for a provided external job posting ids.
Internal server error
Please reach out to support.
6019
500
Internal error while fetching analytics information for provided external job posting ids.
Internal server error
Please reach out to support.
6020
500
Failed to find job performance analytics for a provided external job posting ids.
Internal server error
Please reach out to support.
6021
400
Maximum supported external job posting ids per request is 10.
Bad Request
Ensure that you are not calling this api with more than 10 external job posting ids.
6022
400
Provided application id is not supported for partner level budget reports.
Bad Request
Ensure that you are using the correct partner application credentials.
6023
400
Invalid DateRange! Number of days between start and end date should not be more than 7 days.
Bad Request
Ensure that you are not providing a date range that is within the 7 day range (Start & End dates are inclusive).
6024
500
Failed to find daily job charges for a provided partner.
Internal server error
Please reach out to support.
6025
500
Failed to find daily job analytic metrics for a provided partner.
Internal server error
Please reach out to support.
6026
500
Failed to find a set of external job posting ids for a provided partner.
Internal server error
Please reach out to support.
6028
400
No partner campaign id provided in order to fetch the campaign reports.
The input partner campaign ID is empty.
Please provide the partner campaign ID to fetch the corresponding reports.
6029
404
The provided partner campaign ids were not found for the customer contract.
Provided partner campaign IDs were not found under the customer contract of the partner.
Please provide valid partner campaign IDs which are associated with the partner.
6030
400
Maximum number of campaign reports returned at one time is {}.
The maximum partner campaign reports to fetch is 10 at one time.
Please provide less than 10 partner campaign IDs to fetch the reports at one time.
6033
400
Provided application id is not supported for campaign reports
Cannot resolve the contract by application id.
Ensure that you are using the correct customer application credentials.
6034
500
There was some issue in fetching the campaign reports.
Internal error happened.
Please ensure you are querying the campaigns of the correct child Developer Application. Please reach out to LinkedIn support.