Advertiser Transparency API
LinkedIn’s Advertiser Transparency API enables advertisers based in the European Economic Area or Switzerland to carry out verification of their LinkedIn advertisements inventory, through their verification vendor. LinkedIn is providing the Advertiser Transparency API in response to the Digital Markets Act (DMA) - a new EU law that regulates large online platforms to ensure fair competition, protect consumer rights, and foster innovation in the digital economy. The Advertiser Transparency API returns verification data at the ad account level which can be used to verify that ads in LinkedIn Feed and other LinkedIn owned and operated placements were viewed by real persons in a brand safe environment. These insights help advertisers make the most of their LinkedIn ads experience and ensure the safety and compliance of their campaigns on LinkedIn.
Note: This is a private API, available only to qualified developers who meet certain criteria. To learn more about qualifications and how to request access, please see the FAQ. If you believe you are a qualified developer and need access to this API, please submit a Zendesk support ticket.
Permissions
Permission | Description |
---|---|
r_dma_advertiser_trust | Allow access to LinkedIn Ads Data to perform independent verification |
The Advertiser Transparency API requires a 3-legged OAuth member token and your developer application needs to be provisioned with the Advertiser Transparency Data qualification, as outlined above. Once you have been approved for access, you can use the valid member access token to access the API.
Eligibility for Access
The Advertiser Transparency API is a private API and can only be accessed by developers who meet the eligibility criteria defined here.
Request
GET https://api.linkedin.com/rest/advertiserTransparencyData/{sponsoredAccountUrn}?month={month}
Path Parameter
Field | Format | Description | Required |
---|---|---|---|
sponsoredAccountUrn | SponsoredAccountUrn | URN of the sponsoredAccount for which the data should be retrieved. It is of type urn:li:sponsoredAccount:{sponsoredAccountId} . |
Yes |
Query Parameter
Field | Format | Description | Required |
---|---|---|---|
month | int | monthYear for which the data is requested for. It is of format YYYYMM example, month=202309 |
Yes |
Validations and Minimum Requirements
- Data retrieval can only be done for advertisers whose billing information is in the EEA or Switzerland region.
- At any given time, once the developer is approved for access to the Advertiser Transparency API, the developer gets access to the prior six calendar months of data. For example, if a developer is approved for access in November of 2024, they would have access to the previous six months (from May 2024 - October 2024).
- The earliest available data is from March 6, 2024. The only exception here is for viewability data for display ads - the earliest available data is from the day the access is approved for the ad account. For example, if a developer is approved for access in November of 2024, they would have access to display viewability data from November 2024 onwards. We will not be able to backfill data outside of our retention policy.
- Reports for the preceding month will be available 12 days after the month ends [eg: the monthly report for September will be available after 12th October].
Sample Request
GET https://api.linkedin.com/rest/advertiserTransparencyData/urn%3Ali%3AsponsoredAccount%3A509090297?month=202311
X-Restli-Protocol-Version: 2.0.0
Linkedin-Version: {version number}
Authorization: Bearer {token}
Response Schema
Field | Format | Description |
---|---|---|
downloadUrl | Url | Provides the Ambry URL endpoint for downloading advertiser transparency data. This URL will only be valid for 15 mins and will expire post that |
The URL will point to a CSV file, with the following content. Please note that access to the specific data fields below is based on your specific access rights.
Field | Format | Description | Nullable |
---|---|---|---|
CampaignId | Integer | CampaignId associated with the creative | No |
Page URL | String | URL where ad appeared. It can be null or have possible values - Linkedin home page (https://www.linkedin.com/feed/) or Company page URL (https://www.linkedin.com/company/ernstandyoung/) | Yes |
Category of posts | Array[String] | List of categories of adjacent posts, it will be populated only if the ad was shown in Feed. Data shared is only limited to LinkedIn’s categorization of organic content (High/Mid) according to GARM brand safety floor and suitability frameworks Eg:[HATE_SPEECH_HIGH_RISK,GRAPHIC_CONTENT_MEDIUM_RISK] |
Yes |
IPAddress | String | IPAddress where the entity was served, it could be IPv4 or IPv6 | No |
UserAgent | String | UserAgent of the request | Yes |
Platform type | Enum(String) | String enum with possible values as - WEB/ANDROID/IOS | Yes |
Serving timestamp | Long | Epoch timestamp when request was served | No |
Viewability AdFormat | Boolean | Signals the video ad occured, possible values are true/false | No |
Video Started | Boolean | When the client video started or an individual creative within the ad was loaded and playback began. | Yes |
Video viewed | Boolean | Playing for at least 2 continuous seconds 50% in-view. | Yes |
Video First Quartile | Boolean | The creative played at 25% of the total duration at normal speed, including play that skipped to this point. | Yes |
Video Second Quartile | Boolean | The creative played at 50% of the total duration at normal speed, including play that skipped to this point. | Yes |
Video Third Quartile | Boolean | The creative played at 75% of the total duration at normal speed, including play that skipped to this point. | Yes |
Video Completed | Boolean | The creative was played 97-100% of the total duration at normal speed in which the event will start firing at 97%. | Yes |
Video Fully Completed | Boolean | The creative was played to 100% of the total duration at normal speed. | Yes |
Ad Paused | Boolean | The user clicked the pause control and stopped the creative. | Yes |
Ad Resumed | Boolean | The user activated the resume control after the creative had been stopped or paused. | Yes |
Full Screen | Boolean | The user activated a control to full screen. | Yes |
Seek | Boolean | The user activated a control to scrub over the video. | Yes |
Click on play video | Boolean | The user clicked the play control for the video ad. | Yes |
Replay video | Boolean | The user activated the replay control during playing the video ad. | Yes |
One-pixel continuous time (ms) | Boolean | Maximum milliseconds of continuous time in which at least 1 pixel of the ad is in-view | Yes |
50 Percent continuous time (ms) | Boolean | Maximum milliseconds of continuous time in which at least 50% of the pixels of the ad are in-view | Yes |
80 Percent continuous time (ms) | Boolean | Maximum milliseconds of continuous time in which at least 80% of the pixels of the ad are in-view | Yes |
100 Percent continuous time (ms) | Boolean | Maximum milliseconds of continuous time in which at least 100% of the pixels of the ad are in-view | Yes |
One-pixel cumulative time (ms) | Boolean | Milliseconds of cumulative time in which at least 1 pixel of the ad is in-view for any period | Yes |
50 Percent cumulative time (ms) | Boolean | Milliseconds of cumulative time in which at least 50% of the pixels of the ad are in-view | Yes |
80 Percent cumulative time (ms) | Boolean | Milliseconds of cumulative time in which at least 80% of the pixels of the ad are in-view | Yes |
100 Percent cumulative time (ms) | Boolean | Milliseconds of cumulative time in which at least 100% of the pixels of the ad are in-view | Yes |
Sample Response
{
"downloadUrl": "https://www.linkedin.com/ambry/?x-li-ambry-ep=AQJ5NgSW2VNjnwAAAYtliYavvNBT1RRBcug-ZsQATuFPj9B2gz-c71hhjTVbh1S02AX6RX4jQp0E_t8taTQgeMrv5PV8fmUK1kKWJS9BrEeGUg-sifqWApxFxtKgHKbCAXVfwRG2iGwM9gOo4IBVMqgf-g9lVINkDDqljL1v5KcNAeV4oQ_hs8nkLtCc_O6fTQj2p5CHnTz3vW7E4zSplAs4-J5dj0rvBePFH_R6_zPmtS892J7H0oJq3afYz-OlO7NzDa-kGHvIEq6HrrwF9vHSfrDAA19XbqYe55nTnhsKEkCAStlTzQwboFhlUjXudb2VRs_MtJvA9LO9D0eY7NInItp992pED8Us9t8YNJoTtHpxsNnwFSe2197k3GF3XWT-7Cg9VegO6AiyDQEnQ5ZsGz9173VscYWdOAtEfh9EHI5sEPFUzDmCqmSCVJ1YhZsxB0SGeJLB_vxAMpmVMSMOTrp8EdLba_Q6qbDAHq3KHk8_CWpZQ9X975kZZQ21AdcVGVTiZNB3J_oElv7alF4"
}
API Error Details
HTTP Status Code | ERROR MESSAGE | DESCRIPTION | ERROR RESOLUTION |
---|---|---|---|
400 | INVALID_ACCOUNT | Account present in the API request is of incorrect format | Make sure that sponsoredAccountUrn is of correct format |
400 | DATE_OLDER_THAN_SIX_MONTHS | Date can’t be older than 6 months | Request data for month within last 6 months of current date |
400 | ADVERTISER_NOT_IN_EEA_OR_SWITZERLAND | Advertiser is not eligible for retrieving data since they are not present in Switzerland/EEA region | Request data retrieval for advertisers that are present in EEA/Switzerland |
400 | Invalid monthYear parameter, should be of yyyyMM format | Invalid monthYear parameter, should be of yyyyMM format | Enter monthYear in yyyyMM format |
401 | EMPTY_ACCESS_TOKEN | Empty oauth2 access token | Use a valid member access token |
401 | INVALID_ACCESS_TOKEN | Invalid oauth2 access token | Use a valid member access token |
401 | REVOKED_ACCESS_TOKEN | The token used in the request has been revoked by the user | Make sure user has granted you access to their data |
403 | ACCESS_DENIED | Not enough permissions to access the resource | Make sure your developer application is provisioned with the required permissions. |
403 | USER_NOT_AUTHORIZED | Member present in the request does not have sufficient access to the Ad Account | Make sure the member associated with access token has a user role on the provided Ad Account |
404 | NOT_FOUND | Could not find entity. | Verify the provided entity ID is correct. |
404 | UNABLE_TO_FETCH_ADVERTISER_DETAILS | Unable to fetch billing details for the requested advertiser account | Make sure that the account is valid and has been configured correctly. |
500 | INTERNAL_SERVER_ERROR | Server encountered an unexpected condition that prevented it from fulfilling the request. | N/A |
Frequently Asked Questions
Please review our Advertiser Transparency FAQ