Zernio
Zernio
PlatformsLinkedIn Ads

Build

Boost a PostCreate AdsCreative Formats

Target

Matched AudiencesBid Pricing & Forecasts

Measure

AnalyticsLead Gen FormsConversions APIURL Tracking Tags

Operate

Ad LibraryMedia & Limits
Dashboard
llms.txtOpenAPI
OverviewPlatformsAPI ReferenceResources
LinkedIn Ads

Analytics

Read spend, clicks and firmographic breakdowns (job title, seniority, industry, company size) for a LinkedIn ad with the Insights endpoints.


When you finish this page you can read who saw a LinkedIn ad, by job title, seniority, industry and company, from GET /v1/ads/{adId}/analytics. You need the Zernio _id of an ad (Create ads). Standard metrics (spend, impressions, clicks, CPC, CPM) come rolled up on GET /v1/ads, GET /v1/ads/tree and GET /v1/ads/{adId}; the firmographic layer is what is LinkedIn-specific.

Firmographic breakdowns

Call GET /v1/ads/{adId}/analytics with breakdowns, a comma-separated list of LinkedIn dimensions. breakdowns is optional: without it the response is summary and daily for the range and no breakdowns object. Each dimension you list costs one more call to LinkedIn, so ask for the ones you read:

DimensionLinkedIn pivot
job_titleMEMBER_JOB_TITLE
job_functionMEMBER_JOB_FUNCTION
seniorityMEMBER_SENIORITY
industryMEMBER_INDUSTRY
companyMEMBER_COMPANY
company_sizeMEMBER_COMPANY_SIZE
countryMEMBER_COUNTRY_V2
regionMEMBER_REGION_V2
import Zernio from '@zernio/node';

const zernio = new Zernio();

const { data: insights } = await zernio.adinsights.getAdAnalytics({
  path: { adId: '66f0a1b2c3d4e5f6a7b8c9d0' },
  query: { fromDate: '2027-01-01', toDate: '2027-01-31', breakdowns: 'job_title,seniority,company_size' }
});

console.log(insights.analytics.breakdowns.seniority);

Response (200), trimmed to the summary and one breakdown:

{
  "ad": { "id": "66f0a1b2c3d4e5f6a7b8c9d0", "name": "Spring launch (single image)", "platform": "linkedin", "status": "active", "currency": "USD" },
  "analytics": {
    "summary": { "spend": 412.5, "impressions": 38210, "clicks": 512, "ctr": 1.34, "cpc": 0.81, "cpm": 10.8, "engagement": 640, "conversions": 12 },
    "daily": [
      { "date": "2027-01-01", "spend": 13.4, "impressions": 1240, "clicks": 17 }
    ],
    "breakdowns": {
      "seniority": [
        { "value": "urn:li:seniority:6", "name": "Senior", "spend": 210.1, "impressions": 19800, "clicks": 270, "ctr": 1.36, "cpc": 0.78, "cpm": 10.6, "engagement": 330 }
      ]
    }
  }
}

Each breakdown row carries value (LinkedIn's URN) and a name resolved server-side (job titles, companies and industries all come back human-readable), sorted by impressions. Without fromDate and toDate the range is the last 90 days, capped at 730 days.

The same breakdowns parameter works at the campaign level on GET /v1/ads/campaigns/{campaignId}/analytics; for LinkedIn, the campaign id is the Campaign Group. It is also the endpoint that serves Meta's demographic breakdowns, so both endpoints validate against every platform's dimensions at once. A Meta or TikTok dimension such as age on a LinkedIn ad is accepted and then dropped: the response is a 200 with no breakdowns object.

LinkedIn constraints

  • Firmographic pivots are aggregated over the whole requested range: LinkedIn only serves them with timeGranularity: ALL, so there is no per-day series per job title.
  • Demographic pivots lag 12 to 24 hours.
  • LinkedIn omits segments with fewer than 3 events, so small campaigns return short lists.

Conversion attribution

Conversion-level metrics (post-click and view-through conversions, conversion value, cost) are read per conversion rule from the attribution metrics endpoint.

If it fails

A 400 names the dimension no platform defines and lists every accepted one:

{
  "error": "Invalid breakdown: job_titles. Supported: age, gender, country, publisher_platform, device_platform, region, platform_position, impression_device, video_asset, image_asset, body_asset, title_asset, country_code, platform, ac, language, job_title, job_function, seniority, industry, company, company_size.",
  "type": "invalid_request_error",
  "code": "invalid_field_value",
  "param": "breakdowns"
}

Related

  • Conversions API: attribution read-back per rule.
  • Get ad analytics and Get campaign analytics: every metric in summary.
  • Get campaign tree: rolled-up metrics per level.
Was this page helpful?

Bid Pricing & Forecasts

Get LinkedIn's suggested bid, budget bounds and an impressions, clicks and spend forecast for a targeting spec before you create a campaign.

Lead Gen Forms

Create LinkedIn Lead Gen Forms with POST /v1/ads/lead-forms and pull their responses with GET /v1/ads/leads.

On this page

Firmographic breakdownsLinkedIn constraintsConversion attributionIf it failsRelated