Bid Pricing & Forecasts
Suggested bids, budget bounds, and supply forecasts before you spend
Bid Pricing & Forecasts
Two pre-flight planning endpoints, both taking the same spec targeting object as reach estimate. Non-LinkedIn accounts return {"available": false} at HTTP 200, so a multi-platform UI can call them unconditionally.
Suggested bid and budget bounds
POST /v1/ads/targeting/bid-pricing answers "what should I bid, and what budget does LinkedIn accept" for a given targeting + campaign type:
const { data } = await zernio.adtargeting.getLinkedInBidPricing({
body: {
accountId: 'ACCOUNT_ID',
adAccountId: '517258773',
spec: { countries: ['US'] },
campaignType: 'SPONSORED_UPDATES',
bidType: 'CPM',
currency: 'USD',
objectiveType: 'WEBSITE_VISIT',
dailyBudget: 50,
},
});
// data.pricing: { bidLimits, suggestedBid, dailyBudgetLimits } — each min/default/max {amount, currencyCode}data = client.ad_targeting.get_linked_in_bid_pricing(
account_id="ACCOUNT_ID",
ad_account_id="517258773",
spec={"countries": ["US"]},
campaign_type="SPONSORED_UPDATES",
bid_type="CPM",
currency="USD",
objective_type="WEBSITE_VISIT",
daily_budget=50,
)curl -X POST "https://zernio.com/api/v1/ads/targeting/bid-pricing" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"accountId": "ACCOUNT_ID",
"adAccountId": "517258773",
"spec": { "countries": ["US"] },
"campaignType": "SPONSORED_UPDATES",
"bidType": "CPM",
"currency": "USD",
"objectiveType": "WEBSITE_VISIT",
"dailyBudget": 50
}'Use it before creating a campaign to pick a unitCost inside bidLimits, and to warn the user when their daily budget sits below dailyBudgetLimits.min (the account-and-targeting-specific version of LinkedIn's flat $10/day minimum).
Impressions, clicks and spend forecast
POST /v1/ads/targeting/supply-forecast projects delivery over a future window:
{
"accountId": "ACCOUNT_ID",
"adAccountId": "517258773",
"spec": { "countries": ["US"] },
"campaignType": "SPONSORED_UPDATES",
"timeRangeStart": 1784160000000,
"timeRangeEnd": 1786752000000,
"objectiveType": "WEBSITE_VISIT",
"dailyBudget": 50,
"competingBid": { "bidType": "CPM", "amount": 10 }
}timeRangeStart/timeRangeEnd: Unix milliseconds; the start must be in the future.- Either
dailyBudgetortotalBudgetis required. competingBidis required for manual-bid forecasts. Omit it and passoptimizationTargetinstead for an auto-bid forecast.
objectiveType is required in practice. LinkedIn's docs mark it optional, but the live API returns a 422 ("The objective type is not supported") without it. Any valid objective works, e.g. WEBSITE_VISIT.
The response forecast is an array of series, each { metricType, granularity, timeSeries }. Metric types include IMPRESSION, CLICK, SPENDING, MAX_POTENTIAL_BUDGET, COST_PER_MILLION_IMPRESSIONS, COST_PER_MILLION_CLICKS, plus reach and lead variants. Granularities: DAILY, SEVEN_DAY, THIRTY_DAY, and CUSTOM (the sum over the requested range, the number you'd quote to a client).