Ad Budget Pricing
Warning
Deprecation Notice
The Marketing Version 202311 (Marketing November 2023) and earlier versions (excluding 202306 and 202307) have been sunset. Additionally, the unversioned APIs will be sunset soon. We recommend that you migrate to the versioned APIs as well as migrate to the new Content and Community Management APIs to avoid disruptions. See the Migration page for more details.
If you haven’t yet migrated and have questions, submit a request on the LinkedIn Developer Support Portal.
The Ad Budget Pricing API provides key insights on pricing metrics such as minimum, maximum, and suggested bids based on targeting criteria. This data helps you make the most of your LinkedIn Ads experience by ensuring that your ads are cost effective.
Permissions
There are two conditions for successful calls: (1) Scope permissions to rw_ads
and/or r_ads
, and (2) the user assigning permission holding one of the following roles in the Ad Account.
Scope permissions as follows:
rw_ads
(Read/Write)r_ads
(Read-Only)
Assigning permission for the Ad Account roles:
ACCOUNT_BILLING_ADMIN
ACCOUNT_MANAGER
CAMPAIGN_MANAGER
CREATIVE_MANAGER
VIEWER
(Read-Only, even with rw_ads scope)
For more information on Ad Account roles and permissions:
Schema
The following schema table describes the response fields. Query parameters are shown separately for the criteriaV2
finder.
Field Name | Type | Description |
---|---|---|
bidLimits.max | Money Amount | Maximum allowable bid |
bidLimits.min | Money Amount | Amount for which if the bid is below the limit, campaign delivery may be poor for Sponsored Update format campaigns. If the campaign format is not Sponsored Update, then the bid cannot be below this value. |
suggestedBid.default | Money Amount | The suggested bid |
suggestedBid.max | Money Amount | High end of suggested bid range |
suggestedBid.min | Money Amount | Low end of suggested bid range |
dailyBudgetLimits.max | Money Amount | Maximum daily budget |
dailyBudgetLimits.min | Money Amount | Minimum daily budget |
dailyBudgetLimits.default | Money Amount | Default daily budget |
Find Pricing Insights by CriteriaV2
The criteriaV2
finder uses the targetingCriteria
format to return pricing insights on specific audiences, bid types, and campaign types. For more information on Targeting Criteria, see here.
All API requests are represented in protocol 2.0.0 and require the X-Restli-Protocol-Version: 2.0.0
header.
Restli 2.0 requires URNs in query params to be URL encoded. For example, urn:li:sponsoredAccount:1245678
would become urn%3Ali%3AsponsoredAccount%3A1245678
.
Note that Postman or similar API tools may not support these types of calls. Testing with curl is recommended if you encounter a 400 error with message Invalid query parameters passed to request
.
Calls to this endpoint are structured as follows:
GET https://api.linkedin.com/rest/adBudgetPricing?account={adAccountUrn}&bidType={bidTypeEnum}&optimizationTargetType={optimizationTargetEnum}&objectiveType={objectiveTypeEnum}&campaignType={campaignTypeEnum}&q=criteriaV2&targetingCriteria=(include:(and:List((or:({encoded facet_URN_1}:List({encoded facet_URN_1_value_1},{encoded facet_URN_1_value_2}))),(or:({encoded facet_URN_2}:List({encoded facet_URN_2_value_1},{encoded facet_URN_2_value_2}))))))
GET https://api.linkedin.com/v2/adBudgetPricing?account={adAccountUrn}&bidType={bidTypeEnum}&optimizationTargetType={optimizationTargetEnum}&objectiveType={objectiveTypeEnum}&campaignType={campaignTypeEnum}&q=criteriaV2&targetingCriteria=(include:(and:List((or:({encoded facet_URN_1}:List({encoded facet_URN_1_value_1},{encoded facet_URN_1_value_2}))),(or:({encoded facet_URN_2}:List({encoded facet_URN_2_value_1},{encoded facet_URN_2_value_2}))))))
Parameters
Field Name | Description | Format | Required |
---|---|---|---|
q | Consistent field value of criteriaV2 |
String | Yes |
campaignType | Campaign type. Valid values are: |
String | Yes |
account | Sponsored account URN | String | Yes |
bidType | Valid enum values are: |
String | Yes |
currency | ISO-4217 currency code. The default value is in USD . |
String | Yes |
countryCode | Two character lower case country code | String | No |
matchType | Valid enum values are: |
String | Yes |
targetingCriteria | Specifies the targeting criteria that the member should match. This is a more advanced boolean expression than the previous targeting field. It provides a generic AND/OR construct to include and exclude different targeting facets when defining audience for campaigns. |
TargetingCriteria object | Yes |
dailyBudget | Daily campaign budget | Money amount | No |
objectiveType | Specifies the campaign's objective type. Valid objective values are: |
String | No |
optimizationTargetType | Used to optimize spending for a campaign. Depending on what value is populated in this field, the campaign will use either auto or manual bidding. Valid optimization values are: |
String | No |
For descriptions of Objective and Optimization Target type values, see Allowable Type Combinations.
Sample Request
The following sample request returns pricing for a target market of LinkedIn members working at organizations with 501 to 1000 employees. The suggested bid returned is based on the specified dailyBudget of USD 300.
Any URNs included in the parameters must be URL encoded. An unencoded sample request has also been provided for readability.
Unencoded Sample Request
GET https://api.linkedin.com/rest/adBudgetPricing?account=urn:li:sponsoredAccount:1245678&bidType=CPM&optimizationTargetType=MAX_CLICK&objectiveType=WEBSITE_VISIT&campaignType=SPONSORED_INMAILS&matchType=EXACT&q=criteriaV2&targetingCriteria=(include:(and:List((or:({encoded urn:li:adTargetingFacet:staffCountRanges}:List({encoded urn:li:staffCountRange:(501,1000)}))))))&dailyBudget=(amount:300,currencyCode:USD)
GET https://api.linkedin.com/v2/adBudgetPricing?account=urn:li:sponsoredAccount:1245678&bidType=CPM&optimizationTargetType=MAX_CLICK&objectiveType=WEBSITE_VISIT&campaignType=SPONSORED_INMAILS&matchType=EXACT&q=criteriaV2&targetingCriteria=(include:(and:List((or:({encoded urn:li:adTargetingFacet:staffCountRanges}:List({encoded urn:li:staffCountRange:(501,1000)}))))))&dailyBudget=(amount:300,currencyCode:USD)
Encoded Sample Request
GET https://api.linkedin.com/rest/adBudgetPricing?account=urn%3Ali%3AsponsoredAccount%3A1245678&bidType=CPM&optimizationTargetType=MAX_CLICK&objectiveType=WEBSITE_VISIT&campaignType=SPONSORED_INMAILS&matchType=EXACT&q=criteriaV2&&targetingCriteria=(include:(and:List((or:(urn%3Ali%3AadTargetingFacet%3AstaffCountRanges:List(urn%3Ali%3AstaffCountRange%3A%28501%2C1000%29))))))&dailyBudget=(amount:300,currencyCode:USD)
GET https://api.linkedin.com/v2/adBudgetPricing?account=urn%3Ali%3AsponsoredAccount%3A1245678&bidType=CPM&optimizationTargetType=MAX_CLICK&objectiveType=WEBSITE_VISIT&campaignType=SPONSORED_INMAILS&matchType=EXACT&q=criteriaV2&&targetingCriteria=(include:(and:List((or:(urn%3Ali%3AadTargetingFacet%3AstaffCountRanges:List(urn%3Ali%3AstaffCountRange%3A%28501%2C1000%29))))))&dailyBudget=(amount:300,currencyCode:USD)
Sample Response
Note that although this returns a collection in the elements
field, for all practical purposes, the returned collection contains only one element of pricing information.
{
"elements": [
{
"bidLimits": {
"max": {
"amount": "100.0",
"currencyCode": "USD"
},
"min": {
"amount": "4.0",
"currencyCode": "USD"
}
},
"dailyBudgetLimits": {
"default": {
"amount": "25.00",
"currencyCode": "USD"
},
"max": {
"amount": "1000000.00",
"currencyCode": "USD"
},
"min": {
"amount": "10.00",
"currencyCode": "USD"
}
},
"suggestedBid": {
"default": {
"amount": "7.10",
"currencyCode": "USD"
},
"max": {
"amount": "11.14",
"currencyCode": "USD"
},
"min": {
"amount": "7.10",
"currencyCode": "USD"
}
}
}
],
"paging": {
"count": 10,
"links": [],
"start": 0
}
}
For allowable combinations of Objective and Optimization Target types, see Allowable Type Combinations.