Skip to main content
LinkedIn is the world’s largest professional networking platform, connecting professionals and businesses globally. The LinkedIn Community Management API provides access to organic page analytics, follower statistics, post performance, and audience demographics for your organization’s LinkedIn Page.
This connector extracts organic data from your LinkedIn Organization Page. For paid advertising data, see the LinkedIn Ads connector.

Configuring LinkedIn as a Source

In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the LinkedIn option from the list of connectors. Click Next and you’ll be prompted to add your access.

1. Add account access

You’ll need to authorize Nekt to access your LinkedIn Organization data. Click on the LinkedIn Authorization button and log in with your LinkedIn account.
Make sure you’re logged in with a LinkedIn account that has Admin or Content Admin access to the Organization Page you want to extract data from.
Once you authorize your account, add the following information:
  • Organization ID: The LinkedIn organization ID you want to extract data from. This is the numeric ID that identifies your company page.
  • Start Date: The earliest date from which records will be synced. Note that LinkedIn only returns up to 1 year of historical data for daily reports.
  • Lookback Window: (Default: 30 days) Number of days to look back on each incremental run for the posts stream. This ensures post statistics stay up to date for recently published posts. The lookback ensures that posts modified in the last N days have their latest metrics captured, while also preventing data loss during gaps between runs.
This is how you can find your Organization ID:
  1. From the Admin View URL:
    • Go to your LinkedIn Company Page
    • Click on “Admin tools” or access the admin view
    • Look at the URL - it will contain something like /company/12345678/admin/
    • The number (e.g., 12345678) is your Organization ID
Once you’re done, click Next.

2. Select streams

Choose which data streams you want to sync. For faster extractions, select only the streams that are relevant to your analysis. You can select entire groups of streams or pick specific ones. Available Streams: Organization Data:
  • Organization Details - Company profile information
Daily Statistics (Time-series):
  • Daily Follower Statistics - Daily follower gains
  • Daily Page Statistics - Daily page views and visitor analytics
  • Daily Share Statistics - Daily aggregate engagement metrics
Lifetime Statistics (Current Snapshot):
  • Lifetime Follower Statistics - Total follower count
  • Lifetime Page Statistics - Lifetime page views and analytics
  • Lifetime Share Statistics - Lifetime engagement metrics
Content:
  • Posts - All posts from your page
  • Post Statistics - Individual post performance
Tip: The stream can be found more easily by typing its name.
Select the streams and click Next.

3. Configure data streams

Customize how you want your data to appear in your catalog. Select the desired layer where the data will be placed, a folder to organize it inside the layer, a name for each table (which will contain the fetched data) and the type of sync.
  • Layer: Choose between the existing layers on your catalog. This is where you will find your new extracted tables as the extraction runs successfully.
  • Folder: A folder can be created inside the selected layer to group all tables being created from this new data source.
  • Table name: We suggest a name, but feel free to customize it. You have the option to add a prefix to all tables at once and make this process faster!
  • Sync Type: You can choose between INCREMENTAL and FULL_TABLE.
    • Incremental: Every time the extraction happens, we’ll get only the new data - which is good if, for example, you want to keep every record ever fetched.
    • Full table: Every time the extraction happens, we’ll get the current state of the data - which is good if, for example, you don’t want to have deleted data in your catalog.
Once you are done configuring, click Next.

4. Configure data source

Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can define some additional settings:
  • Configure Delta Log Retention and determine for how long we should store old states of this table as it gets updated. Read more about this resource here.
  • Determine when to execute an Additional Full Sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while.
Once you are ready, click Next to finalize the setup.

5. Check your new source

You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.
For you to be able to see it on your Catalog, you need at least one successful source run.

Streams and Fields

Below you’ll find all available data streams from LinkedIn and their corresponding fields:
Company profile information for your LinkedIn organization.
FieldTypeDescription
idIntegerThe LinkedIn numeric organization ID
urnStringURN for the organization
vanityNameStringThe LinkedIn public (vanity) name
localizedNameStringThe localized name of the organization
localizedDescriptionStringLocalized description of the organization
organizationTypeStringThe organization type (e.g., PRIVATELY_HELD)
primaryOrganizationTypeStringPrimary type (e.g., BRAND, NONE)
staffCountRangeStringOrganization staff count range
foundedOnObjectFounding information with year
nameObjectStructured name data with localized variants
descriptionObjectStructured description with localized variants
websiteObjectStructured website URLs with localized variants
localizedWebsiteStringLocalized website URL
specialtiesArrayList of specialties for the organization
localizedSpecialtiesArrayLocalized specialties
alternativeNamesArrayAlternative names for the organization
locationsArrayArray of organization locations with address and type
logoV2ObjectOrganization logo (cropped, original, cropInfo)
coverPhotoV2ObjectCover photo (cropped, original, cropInfo)
defaultLocaleObjectDefault locale (country, language)
createdObjectCreation metadata (actor, time)
lastModifiedObjectLast modification metadata (actor, time)
versionTagStringVersion tag of the record
autoCreatedBooleanWhether the organization was auto-created
groupsArrayList of group URNs associated with this organization
Daily follower statistics for your organization, including follower gains.
FieldTypeDescription
dateDateThe date of the report (replication key)
organizationalEntityStringThe organization URN
timeRangeObjectTime range for the statistics (start/end timestamps)
followerGainsObjectDaily follower changes with organic and paid counts
followerCountsByAssociationTypeArrayFollowers by relationship (employee, etc.)
followerCountsByGeoCountryArrayFollowers by country
followerCountsByFunctionArrayFollowers by job function
followerCountsByIndustryArrayFollowers by industry
followerCountsByGeoArrayFollowers by market area/region
followerCountsBySeniorityArrayFollowers by seniority level
followerCountsByStaffCountRangeArrayFollowers by company size
Total follower count for your organization (current snapshot).
FieldTypeDescription
dateDateThe date of the report
firstDegreeSizeIntegerTotal number of followers (network size)
This stream provides the current total follower count, not historical data. Use Daily Follower Statistics for time-series follower growth data.
Daily page view and click statistics for your organization’s LinkedIn page, with breakdowns by visitor demographics.
FieldTypeDescription
dateDateThe date of the report (replication key)
organizationStringThe organization URN
timeRangeObjectTime range for the statistics (start/end timestamps)
totalPageStatisticsObjectAggregate statistics with views and clicks
allPageViewsObjectTotal page views across all devices
allDesktopPageViewsObjectAll desktop page views
allMobilePageViewsObjectAll mobile page views
overviewPageViewsObjectOverview/home tab views (all devices)
desktopOverviewPageViewsObjectDesktop overview views
mobileOverviewPageViewsObjectMobile overview views
aboutPageViewsObjectAbout tab views (all devices)
desktopAboutPageViewsObjectDesktop about views
mobileAboutPageViewsObjectMobile about views
jobsPageViewsObjectJobs tab views (all devices)
desktopJobsPageViewsObjectDesktop jobs views
mobileJobsPageViewsObjectMobile jobs views
careersPageViewsObjectCareers tab views (all devices)
desktopCareersPageViewsObjectDesktop careers views
mobileCareersPageViewsObjectMobile careers views
lifeAtPageViewsObjectLife at [Company] views (all devices)
desktopLifeAtPageViewsObjectDesktop life at views
mobileLifeAtPageViewsObjectMobile life at views
productsPageViewsObjectProducts tab views (all devices)
desktopProductsPageViewsObjectDesktop products views
mobileProductsPageViewsObjectMobile products views
peoplePageViewsObjectPeople tab views (all devices)
desktopPeoplePageViewsObjectDesktop people views
mobilePeoplePageViewsObjectMobile people views
insightsPageViewsObjectInsights tab views (all devices)
desktopInsightsPageViewsObjectDesktop insights views
mobileInsightsPageViewsObjectMobile insights views
pageStatisticsByGeoCountryArrayViews by country
pageStatisticsByFunctionArrayViews by job function
pageStatisticsByIndustryV2ArrayViews by industry (v2)
pageStatisticsByGeoArrayViews by region/market area
pageStatisticsBySeniorityArrayViews by seniority
pageStatisticsByStaffCountRangeArrayViews by company size
pageStatisticsByTargetedContentArrayViews by targeted content
Lifetime page view statistics for your organization’s LinkedIn page. Same structure as Daily Page Statistics but represents cumulative/lifetime data.
FieldTypeDescription
dateDateThe date of the report (replication key)
organizationStringThe organization URN
Contains the same fields as Daily Page Statistics (totalPageStatistics, all page view breakdowns, and demographic breakdowns), but represents lifetime cumulative data rather than daily increments.
Daily aggregate share and engagement statistics for your organization’s content.
FieldTypeDescription
dateDateThe date of the report (replication key)
organizationalEntityStringThe organization URN
shareStringThe share URN (blank for aggregate statistics)
ugcPostStringThe UGC post URN (blank for aggregate statistics)
timeRangeObjectTime range for the statistics (start/end timestamps)
totalShareStatisticsObjectAggregate engagement metrics with clicks, comments, impressions, likes, shares, and engagement rate
Lifetime aggregate share and engagement statistics for your organization’s content.
FieldTypeDescription
dateDateThe date of the report (replication key)
organizationalEntityStringThe organization URN
shareStringThe share URN (blank for aggregate statistics)
ugcPostStringThe UGC post URN (blank for aggregate statistics)
timeRangeObjectTime range for the statistics (start/end timestamps)
totalShareStatisticsObjectCumulative engagement metrics with clicks, comments, impressions, likes, shares, and engagement rate
All posts published by your organization on LinkedIn.
FieldTypeDescription
idStringThe post ID (URN)
authorStringThe author URN (organization)
createdAtIntegerCreation timestamp (epoch milliseconds)
publishedAtIntegerPublication timestamp (epoch milliseconds)
lastModifiedAtIntegerLast modification timestamp (replication key)
lifecycleStateStringPost state (PUBLISHED, DRAFT, etc.)
commentaryStringThe post text/caption
contentObjectThe attached content object (media, article, poll, etc.)
contentCallToActionLabelStringCTA button label
contentLandingPageStringCTA landing page URL
visibilityStringVisibility setting (PUBLIC, CONNECTIONS, etc.)
distributionObjectDistribution settings including feed distribution and targeting
adContextObjectAd information if post is sponsored
reshareContextObjectIf this is a reshare, contains parent/root references
isReshareDisabledByAuthorBooleanWhether resharing is disabled
lifecycleStateInfoObjectAdditional state information
Individual post performance metrics. This stream is a child of Posts, providing statistics for each post.
FieldTypeDescription
postLastModifiedAtIntegerThe last modified time of the post (replication key)
organizationalEntityStringThe organization URN
postIdStringThe post ID (URN) - links to the Posts stream
shareStringThe share URN (for legacy shares)
ugcPostStringThe UGC post URN
timeRangeObjectTime range for the statistics (start/end timestamps)
totalShareStatisticsObjectPost performance metrics including clicks, comments, engagement rate, impressions, likes, shares, and unique impressions

Data Model

The following diagram illustrates the relationships between the core data streams in LinkedIn. The arrows indicate the join keys that link the different entities.

Use Cases for Data Analysis

This guide outlines valuable business intelligence use cases when consolidating LinkedIn organic data, along with ready-to-use SQL queries that you can run on Explorer.

Content Performance Analysis

1. Post Engagement Overview

Track the performance of your LinkedIn posts to identify top-performing content. Business Value:
  • Identify which content types drive the most engagement
  • Understand optimal posting patterns
  • Inform content strategy with data-driven insights

SQL query

WITH post_metrics AS (
    SELECT
        p.id AS post_id,
        p.commentary AS post_text,
        FROM_UNIXTIME(p."publishedAt" / 1000) AS published_date,
        p."lifecycleState" AS status,
        CASE
            WHEN p.content.media IS NOT NULL THEN 'MEDIA'
            WHEN p.content.article IS NOT NULL THEN 'ARTICLE'
            WHEN p.content.poll IS NOT NULL THEN 'POLL'
            WHEN p.content."multiImage" IS NOT NULL THEN 'MULTI_IMAGE'
            WHEN p.content.carousel IS NOT NULL THEN 'CAROUSEL'
            ELSE 'TEXT_ONLY'
        END AS content_type,
        ps."totalShareStatistics"."impressionCount" AS impressions,
        ps."totalShareStatistics"."uniqueImpressionsCount" AS unique_impressions,
        ps."totalShareStatistics"."clickCount" AS clicks,
        ps."totalShareStatistics"."likeCount" AS likes,
        ps."totalShareStatistics"."commentCount" AS comments,
        ps."totalShareStatistics"."shareCount" AS shares,
        ps."totalShareStatistics".engagement AS engagement_rate
    FROM
        nekt_raw.linkedin_posts p
        LEFT JOIN nekt_raw.linkedin_post_statistics ps 
            ON p.id = ps."postId"
    WHERE
        p."lifecycleState" = 'PUBLISHED'
)
SELECT
    post_id,
    SUBSTRING(post_text, 1, 100) AS post_preview,
    published_date,
    content_type,
    impressions,
    unique_impressions,
    clicks,
    likes,
    comments,
    shares,
    ROUND(engagement_rate * 100, 2) AS engagement_rate_pct,
    (likes + comments + shares) AS total_engagements
FROM
    post_metrics
ORDER BY
    total_engagements DESC
LIMIT 20
post_idpost_previewpublished_datecontent_typeimpressionsunique_impressionsclickslikescommentssharesengagement_rate_pcttotal_engagements
urn:li:share:123456We’re excited to announce our new product…2024-11-15 14:30:00MEDIA45,23038,4501,234892156784.821,126
urn:li:ugcPost:789012Join us for our upcoming webinar on…2024-11-12 09:00:00ARTICLE32,15028,32095654389453.21677
urn:li:share:345678Proud to share that our team has been…2024-11-10 16:45:00MULTI_IMAGE28,90024,6704456782341235.121,035

2. Follower Growth Analysis

Track your organization’s follower growth over time and understand the source of new followers. Business Value:
  • Monitor organic vs paid follower acquisition
  • Track growth trends over time
  • Measure the impact of content and campaigns on follower growth

SQL query

WITH daily_followers AS (
    SELECT
        DATE(date) AS report_date,
        "followerGains"."organicFollowerGain" AS organic_gained,
        "followerGains"."paidFollowerGain" AS paid_gained,
        ("followerGains"."organicFollowerGain" + "followerGains"."paidFollowerGain") AS total_gained
    FROM
        nekt_raw.linkedin_daily_follower_statistics
    WHERE
        date >= CURRENT_DATE - INTERVAL '30' DAY
),
running_totals AS (
    SELECT
        report_date,
        organic_gained,
        paid_gained,
        total_gained,
        SUM(total_gained) OVER (ORDER BY report_date) AS cumulative_growth,
        AVG(total_gained) OVER (
            ORDER BY report_date 
            ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
        ) AS seven_day_avg
    FROM
        daily_followers
)
SELECT
    report_date,
    organic_gained,
    paid_gained,
    total_gained,
    cumulative_growth,
    ROUND(seven_day_avg, 1) AS seven_day_moving_avg,
    ROUND(organic_gained * 100.0 / NULLIF(total_gained, 0), 1) AS organic_pct
FROM
    running_totals
ORDER BY
    report_date DESC
report_dateorganic_gainedpaid_gainedtotal_gainedcumulative_growthseven_day_moving_avgorganic_pct
2024-11-274512571,23448.378.9
2024-11-26388461,17746.782.6
2024-11-255215671,13145.177.6
2024-11-24285331,06443.984.8
2024-11-23317381,03144.281.6

3. Page Visitor Demographics

Analyze who is visiting your LinkedIn page to understand your audience. Business Value:
  • Understand your audience composition
  • Identify high-value visitor segments
  • Inform content targeting decisions

SQL query

WITH seniority_stats AS (
    SELECT
        s.seniority,
        SUM(s."pageStatistics".views."allPageViews"."pageViews") AS total_views,
        SUM(s."pageStatistics".views."allPageViews"."uniquePageViews") AS unique_views
    FROM
        nekt_raw.linkedin_daily_page_statistics ps
        CROSS JOIN UNNEST(ps."pageStatisticsBySeniority") AS t(s)
    WHERE
        DATE(ps.date) >= CURRENT_DATE - INTERVAL '30' DAY
    GROUP BY
        s.seniority
),
total AS (
    SELECT SUM(total_views) AS grand_total FROM seniority_stats
)
SELECT
    seniority,
    total_views,
    unique_views,
    ROUND(total_views * 100.0 / grand_total, 1) AS pct_of_total
FROM
    seniority_stats, total
ORDER BY
    total_views DESC
senioritytotal_viewsunique_viewspct_of_total
urn:li:seniority:512,4509,23028.4
urn:li:seniority:69,8707,45622.5
urn:li:seniority:48,2346,12318.8
urn:li:seniority:36,5434,89014.9
urn:li:seniority:74,3213,2109.9

Implementation Notes

LinkedIn analytics data typically has a delay of 24-48 hours. The most recent data available may be from 1-2 days ago.
  • Daily reports: Updated once per day
  • Post statistics: Updated as engagement occurs, with some delay
  • Lifetime demographics: Represent current state, not historical
LinkedIn limits historical data access:
  • Daily statistics (Follower, Page, Share): Up to 1 year of historical data
  • Posts: All published posts are available
  • Post statistics: Available for all posts, but metrics are cumulative (not daily)
This connector requires the following LinkedIn permissions:
  • r_organization_social - Read organization posts and social data
  • Access to Community Management API
The LinkedIn account used for authorization must have Admin or Content Admin access to the organization page.
LinkedIn uses URNs (Uniform Resource Names) to identify entities:
  • Organizations: urn:li:organization:{id}
  • Posts: urn:li:share:{id} or urn:li:ugcPost:{id}
  • Seniority levels: urn:li:seniority:{id}
  • Industries: urn:li:industry:{id}
  • Functions: urn:li:function:{id}
  • Countries: urn:li:geo:{id} or urn:li:country:{code}
These URNs are used as identifiers and can be decoded to get the underlying IDs.
LinkedIn’s engagement field is calculated as:
engagement = (clicks + likes + comments + shares) / impressions
This is returned as a decimal (e.g., 0.0482 = 4.82%). Multiply by 100 to get the percentage.
The Posts and Post Statistics streams now support incremental sync with a lookback window:
  • Posts: Uses lastModifiedAt as the replication key for incremental sync
  • Post Statistics: Uses postLastModifiedAt as the replication key, derived from the parent post’s modification time
  • Lookback Window: Configurable number of days (default: 30) to look back on each run to ensure recently modified posts have up-to-date statistics
  • API Rate Limiting: The connector handles LinkedIn’s daily rate limits gracefully, stopping extraction when limits are reached and resuming from the current state on the next run
This ensures that post performance metrics stay current for recently published content while maintaining efficient incremental syncs.

Skills for agents

Download LinkedIn skills file

LinkedIn connector documentation as plain markdown, for use in AI agent contexts.