API

LinkedIn

Be great at what you do.

Manage Company Pages

It’s easier than ever to make sure you’re maximizing
your company's presence on LinkedIn

We’ve brought some of our most popular tools for companies together, to create a holistic way for developers to build tools that manage company pages on LinkedIn – and get access to valuable engagement analytics.

Use Manage Company Pages to:

  • Grow user bases and increase engagement by making it easy to post regular updates to Company Pages
  • Reach the exact audience you want by targeting updates to particular company followers
  • Learn what’s working and what isn’t by accessing page analytics

Learn more about the features of LinkedIn Company Pages on the Company Pages FAQ.

Permissions

Required permission: rw_company_admin

Whether set as a default permission in your app settings or requested specifically via the scope argument during your authentication process, you will need to request the rw_company_admin member permission in order for your application to successfully make these API calls to LinkedIn.

In order to perform any of the company page management API calls below, the authenticated LinkedIn user making the requests must be an administrator of the target company.

If the company's LinkedIn page does not exist yet, you can become the administrator by creating one now.  Alternatively, if it does exist, you will have to request administrative access from one of the page's current administrators.

How will you manage company pages on LinkedIn

  • REST API
  • JavaScript SDK
  • Android SDK
  • Plugins
  • iOS SDK
  • Before you get started …

    Please make sure to read the Getting Started with the REST API guide.  It contains important information to successfully share company content with LinkedIn from within your application.

    How to test your work

    A special test company has been setup for you to test Company Pages API calls against.  Learn more about how to test your Company Page integrations.

    I would like to

    • Check if sharing is enabled for a company
    • Check if the member is a company administrator
    • List all companies that the member is an administrator of
    • Get a company's profile
    • Get a company's updates
    • Get a specific company update
    • Get comments for a specific company update
    • Get likes for a specific company update
    • Create a company share
    • Get a company's followers, by segment
    • Add a comment as a company
    • Get historical follower statistics about a company
    • Get historical status update statistics about a company
    • Get statistics for a company page

    Check if sharing is enabled for a company

    This call returns a simple boolean value that indicates whether the company specified by the {id} value in the request has sharing enabled or disabled.  Sharing is enabled (i.e. true) by default.

    GET
    https://api.linkedin.com/v1/companies/{id}/is-company-share-enabled?format=json
    Sample response
    true

    Check if the member is a company administrator

    The API calls listed on this page require the member to be an administrator of the target company.  This call returns a simple boolean value that indicates whether the currently authenticated user is configured to be an administrator of the company specified by the {id} value in the request.

    GET
    https://api.linkedin.com/v1/companies/{id}/relation-to-viewer/is-company-share-enabled?format=json
    Sample response
    false

    List all companies that the member is an administrator of

    The API calls listed on this page require the member to be an administrator of the target company.  This call returns a list of all of the companies that the authenticated user is currently configured to be an administrator of.  If the user is an administrator of more than 10 companies, you will need to use the optional start and count parameters to page through the complete result set.  The total number of companies that the member is an administrator of is returned in the body of the request.  You can use this value to determine whether you need to make additional paged requests to retrieve the complete list of companies for the user.

    Optional Parameters

    NameDescription
    startThe offset value for paginating update results by.
    countMaximum number of updates to return.
    GET
    https://api.linkedin.com/v1/companies?format=json&is-company-admin=true
    Sample response
    {
      "_count": 2,
      "_start": 0,
      "_total": 5
      "values": [
        {
          "id": 1337,
          "name": "LinkedIn"
        },
        {
          "id": 2414183,
          "name": "DevTestCo"
        }
      ]
    }

    Get a company's profile

    This call will return profile information about the company specified by the {id} value in the request.

    Throttle LimitsDaily Call Limit (UTC)
    Application maximum                                                                        
    100,000
    Per individual user500
    Per individual developer500
    GET
    https://api.linkedin.com/v1/companies/{id}?format=json
    sample response
    {
      "id": 1337,
      "name": "LinkedIn"
    }

    There are additional company profile fields available that are not returned as part of the default call.  The following example illustrates how you modify your request to ask for additional profile fields beyond the default values:

    GET
    https://api.linkedin.com/v1/companies/{id}:(id,name,ticker,description)?format=json
    sample response
    {
      "description": "Founded in 2003, LinkedIn connects the world's professionals to...",
      "id": 1337,
      "name": "LinkedIn",
      "ticker": "LNKD"
    }

    Get a company's updates

    This call returns a list of update events from the from the LinkedIn company page of the company identified by the {id} value in the request.

    There are several types of events that can be returned by this call:

    • job-posting— New job postings on LinkedIn by the specified company.
    • new-product— A product is added to the company's product page.
    • status-update— An update on the company's status or content shared by the company.

    Each event type has a unique set of fields that will be returned.

    Only the most recent 50 updates for events of type status-update will be returned.  For all other event types, the request will return all the updates within the past 20 days, or 250 total updates - whichever comes first.

    Throttle LimitsDaily Call Limit (UTC)
    Application maximum                                                                        
    30,000
    Per individual user700
    Per individual developer700

    Optional parameters

    NameDescription
    event-type

    Filter the results to only return updates of the specified event type.


    Valid values are:

    • job-posting
    • new-product
    • status-update
    startThe offset value for paginating update results by.
    countMaximum number of updates to return.
    GET
    https://api.linkedin.com/v1/companies/{id}/updates?format=json
    sample response
    {
      "_count": 1,
      "_start": 0,
      "_total": 1,
      "values": [
        {
          "isCommentable": true,
          "isLikable": true,
          "isLiked": false,
          "likes": {
            "_total": 1,
            "values": [
              {
                "person": {
                  "firstName": "Frodo",
                  "id": "12345678",
                  "lastName": "Baggins"
                }
              }
            ]
          },
          "numLikes": 1,
          "timestamp": 1423270834567,
          "updateComments": {
            "_total": 1,
            "values": [
              {
                "comment": "Great comment!",
                "id": 987654321,
                "person": {
                  "apiStandardProfileRequest": {
                    "headers": {
                      "_total": 1,
                      "values": [
                        {
                          "name": "x-li-auth-token",
                          "value": "name:Ff1A"
                        }
                      ]
                    },
                    "url": "https://api.linkedin.com/v1/people/12345678"
                  },
                  "firstName": "Samwise",
                  "headline": "Journeyman",
                  "id": "23456789",
                  "lastName": "Gamgee",
                  "pictureUrl": "https://media.licdn.com/mpr/mprx/…",
                  "siteStandardProfileRequest": {
                    "url": "https://www.linkedin.com/profile/view?id=…"
                  }
                },
                "sequenceNumber": 0,
                "timestamp": 1423281179569
              }
            ]
          },
          "updateContent": {
            "company": {
              "id": 1337,
              "name": "LinkedIn"
            },
            "companyStatusUpdate": {
              "share": {
                "comment": "This is a test comment.",
                "content": {
                  "description": "Test description",
                  "eyebrowUrl": "http://linkd.in/…",
                  "shortenedUrl": "http://linkd.in/…",
                  "submittedImageUrl": "http://m.c.lnkd.licdn.com/…",
                  "submittedUrl": "http://linkd.in/…",
                  "thumbnailUrl": "https://media.licdn.com/…",
                  "title": "Best Advice: Take Jobs Others Don't Want"
                },
                "id": "s132435465768",
                "source": {
                  "serviceProvider": {
                    "name": "LINKEDIN"
                  },
                  "serviceProviderShareId": "s97867564534231"
                },
                "timestamp": 1423270834567,
                "visibility": {
                  "code": "anyone"
                }
              }
            }
          },
          "updateKey": "UPDATE-c1337-998877665544332211",
          "updateType": "CMPY"
        }
      ]
    }

    Get a specific company update

    This call will return a single specific company update record for the company identified by the {id} value and the update identified by the {update-key} value in the request.

    Note that the format of the response is dependent on the event type (e.g. status update, job posting, new product) of the update that was requested.

    Throttle LimitsDaily Call Limit (UTC)
    Application maximum                                                                        
    30,000
    Per individual user700
    Per individual developer700
    GET
    https://api.linkedin.com/v1/companies/{id}/updates/key={update-key}?format=json
    sample response
    {
      "isCommentable": true,
      "isLikable": true,
      "isLiked": false,
      "likes": {
        "_total": 1,
        "values": [
          {
            "person": {
              "firstName": "Frodo",
              "headline": "2nd Generation Adventurer",
              "id": "12345678",
              "lastName": "Baggins",
              "pictureUrl": "https://media.licdn.com/mpr/mprx/…"
            }
          }
        ]
      },
      "numLikes": 1,
      "timestamp": 1423270834567,
      "updateComments": {
        "_total": 1,
        "values": [
          {
            "comment": "Great comment!",
            "id": 987654321,
            "person": {
              "apiStandardProfileRequest": {
                "headers": {
                  "_total": 1,
                  "values": [
                    {
                      "name": "x-li-auth-token",
                      "value": "name:Ff1A"
                    }
                  ]
                },
                "url": "https://api.linkedin.com/v1/people/12345678"
              },
              "firstName": "Samwise",
              "headline": "Journeyman",
              "id": "23456789",
              "lastName": "Gamgee",
              "pictureUrl": "https://media.licdn.com/mpr/mprx/…",
              "siteStandardProfileRequest": {
                "url": "https://www.linkedin.com/profile/view?id=…"
              }
            },
            "sequenceNumber": 0,
            "timestamp": 1423281179569
          }
        ]
      },
      "updateContent": {
        "company": {
          "id": 1337,
          "name": "LinkedIn"
        },
        "companyStatusUpdate": {
          "share": {
            "comment": "This is a test comment.",
            "content": {
              "description": "Test description",
              "eyebrowUrl": "http://linkd.in/…",
              "shortenedUrl": "http://linkd.in/…",
              "submittedImageUrl": "http://m.c.lnkd.licdn.com/…",
              "submittedUrl": "http://linkd.in/…",
              "thumbnailUrl": "https://media.licdn.com/…",
              "title": "Best Advice: Take Jobs Others Don't Want"
            },
            "id": "s132435465768",
            "source": {
              "serviceProvider": {
                "name": "LINKEDIN"
              },
              "serviceProviderShareId": "s97867564534231"
            },
            "timestamp": 1423270834567,
            "visibility": {
              "code": "anyone"
            }
          }
        }
      },
      "updateKey": "UPDATE-c1337-998877665544332211",
      "updateType": "CMPY"
    }

    Get comments for a specific company update

    This call will return all of the comments for the company update identified by {update-key} for the company identified by the {id} value in the request.  A maximum of 100 comments will be returned.

    GET
    https://api.linkedin.com/v1/companies/{id}/updates/key={update-key}/update-comments?format=json
    sample response
    {
      "_total": 1,
      "values": [
        {
          "comment": "Great comment!",
          "id": 987654321,
          "person": {
            "apiStandardProfileRequest": {
              "headers": {
                "_total": 1,
                "values": [
                  {
                    "name": "x-li-auth-token",
                    "value": "name:Ff1A"
                  }
                ]
              },
              "url": "https://api.linkedin.com/v1/people/12345678"
            },
            "firstName": "Samwise",
            "headline": "Journeyman",
            "id": "23456789",
            "lastName": "Gamgee",
            "pictureUrl": "https://media.licdn.com/mpr/mprx/…",
            "siteStandardProfileRequest": {
              "url": "https://www.linkedin.com/profile/view?id=…"
            }
          },
          "sequenceNumber": 0,
          "timestamp": 1423281179569
        }
      ]
    }

    Get likes for a specific company update

    This call will return all of the likes for the company update identified by {update-key} for the company identified by the {id} value in the request.  By default, the most recent 100 likes will be returned.

    GET
    https://api.linkedin.com/v1/companies/{id}/updates/key={update-key}/likes?format=json
    sample response
    {
      "_total": 1,
      "values": [
        {
          "person": {
            "firstName": "Frodo",
            "headline": "2nd Generation Adventurer",
            "id": "12345678",
            "lastName": "Baggins",
            "pictureUrl": "https://media.licdn.com/mpr/mprx/…"
          },
          "timestamp": 1423415040071
        }
      ]
    }

    Create a company share

    There are two methods for sharing content via the REST API.  The API endpoint is the same, regardless of the method you choose — only the format of the request body differs.

    • Post a plain text comment.  Note that if the comment includes a fully-qualified URL in it, LinkedIn analyzes the included URL and automatically identifies the title, description, image, etc., to be used as part of the share.
    • Share with specific values — You provide the title, description, image, etc., directly in the body of the request.
    Throttle LimitsDaily Call Limit (UTC)
    Application maximum                                                                        
    100,000
    Per individual user20
    Per individual developer80
    POST
    https://api.linkedin.com/v1/companies/{id}/shares?format=json

    Request body

    Field Description
    Max Length (chars)
    contentA collection of fields describing the shared content.
    titleThe title of the content being shared.
    200
    descriptionThe description of the content being shared.
    256
    submitted-urlA fully qualified URL for the content being shared.
    n/a
    submitted-image-urlA fully qualified URL to a thumbnail image to accompany the shared content.

    The image should be at least 80 x 150px for best results.
    n/a
    comment

    A comment by the member to associated with the share.

    If none of the above content parameters are provided, the comment must contain a URL to the content you want to share.  If the comment contains multiple URLs, only the first one will be analyzed for content to share.

    700
    visibilityA collection of visibility information about the share.
    code

    One of the following values:

    • anyone:  Share will be visible to all members.
    • connections-only:  Share will only be visible to connections of the member performing the share.

      This field is required in all sharing calls.
    n/a
    share-target-reachshare-targetsA collection of targeting codes and values used to ensure that the shared content reaches a specific audience.

    See targeting company shares for additional information about how to structure a targeted share request.
    n/a

    Below are sample POST bodies that illustrate how to submit the share data to LinkedIn in JSON and XML formats, for the two different styles of content sharing.

    Rememeber that, while XML-format requires no special steps, if you are going to POST data in JSON-format to LinkedIn, your request must include the following headers:

    POST request headers for JSON-formatted bodies
    Content-Type: application/json
    x-li-format: json

    For submitting a plain text comment via POST:

    JSON
    {
        "visibility": { "code": "anyone" },
        "comment": "There are a lot of great career opportunities here!"
    }
    XML
    <share>
      <visibility>
        <code>anyone</code>
      </visibility>
      <comment>There are a lot of great career opportunities here!</comment>
    </share>

    For submitting a fully described share via POST:

    JSON
    {
        "visibility": { "code": "anyone" },
        "comment": "Testing a full company share!",
        "content": {
           "submitted-­url": "https://www.example.com/content.html",
           "title": "Test Share with Content",
           "description": "content description",
           "submitted‐image-­url": "https://www.example.com/img.jpg"
        }
    }
    xml
    <share>
      <visibility>
        <code>anyone</code>
      </visibility>
      <comment>Testing a full company share!</comment>
      <content>
        <submitted-­url>https://www.example.com/content.html</submitted-­url>
        <title>Test Share with Content</title>
        <description>content description</description>
        <submitted‐image-­url>https://www.example.com/img.jpg</submitted-­image-­url>
      </content>
    </share>

    Targeting company shares

    Company shares can be targeted to reach a very specific audience.  When opting to share to a targeted segment of LinkedIn members, it is important to note that the defined segment of people must comprise at least 100 members to be valid.  See get company followers by segment for an API call that will help you ensure that your segment is large enough to use.

    Targeting allows you focus on the following specific data types:

    SegmentCodeValuesMax length (chars)
    GeographygeosSee Geography codes.10
    Company size
    companySizesSee Company Size targeting codes.10
    Job functionjobFuncSee Job Function targeting codes.10
    IndustryindustriesSee Industry codes.
    10
    Seniority levelsenioritiesSee Seniority targeting codes.10

    To target a share, modify the POST body of the share request to describe the various segments and values that you want to target by defining one or more share-target elements within the share-target-reach share-targets lists.  A share-target contains a code and a list of tvalues which represent the various segment values you wish to target.

    The following examples illustrate how to modify a company share to target members in Information Technology positions:

    JSON
    {
      "visibility": {
        "code": "anyone"
      },
      "comment": "Testing a full company share!",
      "content": {
        "submitted-url": "https://www.example.com/content.html",
        "title": "Test Share with Content",
        "description": "content description",
        "submitted‐image-­url": "https://www.example.com/img.jpg"
      },
      "shareTargetReach": {
        "shareTargets": {
          "shareTarget": {
            "tvalues": {
              "tvalue": "na"
            },
            "code": "geos"
          }
        }
      }
    }
    xml
    <share>
      <visibility>
        <code>anyone</code>
      </visibility>
      <comment>Testing a full company share!</comment>
      <content>
        <submitted-url>https://www.example.com/content.html</submitted-url>
        <title>Test Share with Content</title>
        <description>content description</description>
        <submitted‐image-url>https://www.example.com/img.jpg</submitted-image-­url>
      </content>
    
      <share-target-reach>
        <share-targets>
          <share-target>
            <tvalues>
              <tvalue>na</tvalue>
            </tvalues>
            <code>geos</code>
          </share-target>
        </share-targets>
      </share-target-reach>
    </share>

    Get a company's followers, by segment

    If you choose to target content that you share on behalf of a company, there is a minumum number of followers that must make up the segment you are targeting before you will be able to successfully share the targeted content.  This request allows you to get a follower-count for a specific segment to ensure you are at or over the minimum requirement for the target segment for the company specified by the {id} value in the request.

    Optional Parameters

    NameDescriptionMax length (chars)
    geosSegment by a particular geographic area.
    10
    companySizesSegment by a particular company size targeting code.
    10
    jobFuncSegment by member job function targeting code.
    10
    industriesSegment by member industry.10
    senioritiesSegment by member seniority level targeting code.
    10
    GET
    https://api.linkedin.com/v1/companies/{id}/num-followers?format=json
    sample response
    1147037

    You can create a complex segments by combining multiple segments and values per segment into a single request.  For example, the following request returns the number of company followers who hold VP or Director-level Information Technology positions in Canada:

    GET
    https://api.linkedin.com/v1/companies/{id}/num-followers?format=json&seniorities=vp,d&jobFunc=it&geos=na.ca

    Add a comment on behalf of a company

    This call will allow you to submit a comment on a company update on behalf of a company, rather than a member.  The comment is submitted for the update identified by {update-key} under the company identified by {id} in the request.



    POST PUT
    https://api.linkedin.com/v1/companies/{id}/updates/key={update-key}/update-comments-as-company/

    Below are sample POST PUT bodies that illustrate how to submit a comment to LinkedIn in JSON and XML formats.

    Rememeber that, while XML-format requires no special steps, if you are going to POST PUT data in JSON-format to LinkedIn, your request must include the following headers:

    POST
    PUT request headers for JSON-formatted bodies
    Content-Type: application/json
    x-li-format: json
    json
    {
      "comment": "Posting as a company!"
    }
    xml
    <update-comment> 
      <comment>Posting as a company!</comment>
    </update-comment>

    Get historical follower statistics about a company

    This call retrieves statistics about followers for a particular company page identified by the {id} value in the request.  The request returns a follower count for both paid and organic followers within all of the days or months in the selected date range, based on the requested granularity. 

    Statistics retrieved by this API are up-to-date in real time.

    Parameters

    NameRequiredDescription
    time-granularityYes

    Granularity of statistics. Supported values are:

    • day
    • month
    start-timestampYesStarting timestamp of when the stats search should begin (milliseconds since epoch)  
    end-timestampNoEnding timestamp of when the stats search should end (milliseconds since epoch). The current time will be used if parameter not set.
    GET
    https://api.linkedin.com/v1/companies/{id}/historical-follow-statistics?format=json
    Sample response
    {
      "_total": 4,
      "values": [
        {
          "total-follower-count": 63911,
          "organic-follower-count":6000,
          "paid-follower-count":3911,
          "time": 1399334400000
        },
        {
          "total-follower-count": 64023,
          "organic-follower-count":6000,
          "paid-follower-count":4023,
          "time": 1399420800000
        },
        {
          "total-follower-count": 64023,
          "organic-follower-count":6000,
          "paid-follower-count":4023,
          "time": 1399507200000
        },
        {
          "total-follower-count": 64048,
          "organic-follower-count":6000,
          "paid-follower-count":4048,
          "time": 1399593600000
        }
      ]
    }

    Get historical status update statistics about a company

    The Historical Status Update Statistics API provides impression and engagement data on company shares for a given company page. The API provides much better flexibility and granularity levels on company share stats compared to the existing Company Statistics API. The API can support statistics at both the aggregate and individual status update level. In addition, statistics retrieved by this API are up-to-date in real time.

    Parameters

    NameRequiredDescription
    time-granularityYes

    Granularity of statistics. Supported values are:

    • day
    • month
    start-timestampYesStarting timestamp of when the stats search should begin (milliseconds since epoch)  
    end-timestampNoEnding timestamp of when the stats search should end (milliseconds since epoch). The current time will be used if parameter not set.
    update-keyNoOptionally provide an update key value to return statistics for a specific company update.
    GET
    https://api.linkedin.com/v1/companies/{id}/historical-status-update-statistics?format=json
    Sample response
    {
      "_total": 3,
      "values": [
        {
          "impressionCount": 496111,
          "time": 1378080000000
        },
        {
          "impressionCount": 857282,
          "time": 1378166400000
        },
        {
          "impressionCount": 1539285,
          "time": 1378252800000
        }
      ]
    }

    Get statistics for a company page

    This call will provide general statistics for a company identified by the {id} value in the request. These statistics can give you insights on both company share and follower metrics.

    Currently, the numbers provided are not real-time. The analytics breakdown for a company page is provided on a daily basis.

    The response contains several entryKey elements, whos values are presented as codes.  You will need to look up the values in the following tables to make sense of the responses:

    • Company Size analytics codes
    • Region codes
    • Job Function analytics codes
    • Employee Seniority analytics codes
    GET
    https://api.linkedin.com/v1/companies/{id}/company-statistics
    sample response
    {
      "followStatistics": {
        "companySizes": {
          "_total": 2,
          "values": [
            {
              "entryKey": "C",
              "entryValue": "79027"
            },
            {
              "entryKey": "E",
              "entryValue": "59788"
            }
          ]
        },
        "count": 386420,
        "countries": {
          "_total": 1,
          "values": [
            {
              "entryKey": "us",
              "entryValue": "386420"
            }
          ]
        },
        "countsByMonth": {
          "_total": 1,
          "values": [
            {
              "date": {
                "month": 1,
                "year": 2015
              },
              "newCount": 44868,
              "totalCount": 1111157
            }
          ]
        },
        "employeeCount": 3992,
        "functions": {
          "_total": 2,
          "values": [
            {
              "entryKey": "25",
              "entryValue": "100"
            },
            {
              "entryKey": "15",
              "entryValue": "3892"
            }
          ]
        },
        "nonEmployeeCount": 107253,
        "regions": {
          "_total": 1,
          "values": [
            {
              "entryKey": "us-84",
              "entryValue": "107253"
            }
          ]
        },
        "seniorities": {
          "_total": 2,
          "values": [
            {
              "entryKey": "4",
              "entryValue": "326866"
            },
            {
              "entryKey": "3",
              "entryValue": "319703"
            }
          ]
        }
      },
      "statusUpdateStatistics": {
        "viewsByMonth": {
          "_total": 1,
          "values": [
            {
              "clicks": 81333,
              "comments": 1203,
              "date": {
                "month": 1,
                "year": 2015
              },
              "engagement": 0.003203537929382338,
              "impressions": 32797489,
              "likes": 20387,
              "shares": 2145
            }
          ]
        }
      }
    }
  • Before you get started …

    Please make sure to read the Getting Started with the JavaScript SDK guide.  It contains important information to successfully share content with LinkedIn from within your application.

    Step 1 - Initialize the SDK

    In order to use any of the functionality provided by the JavaScript SDK, it must be included in your webpage's <head> section. Follow the directions in the getting started guide to initialize the SDK.

    Step 2 - Authenticate the user

    Place the following special block in your HTML wherever you want the "Sign in with LinkedIn" button to be rendered: 

    javascript
    <script type="in/Login"></script>

    This will generate a button that looks like the image below.  Note that the text on the button is presented in English by default, but can be localized to other languages using the lang argument when initializing the SDK.

    Step 3 - Handle async authentication & share content

    When a user clicks the sign in button, a pop-up window containing the LinkedIn authentication dialog will be presented.  Once the user has accepted the request and provided their LinkedIn account credentials, the window will be dismissed and the SDK will perform the back-end call to LinkedIn to silently complete the authentication process for you.  Since this request happens asynchronously, you must define a function that will listen for an auth event to be thrown so that you know that the authentication process has completed and that it is safe for your application to make further API calls.

    Use the onLoad argument in the SDK's <script> block when you initialize the SDK to choose a function to execute once the SDK has finished loading.  This function should then setup the auth event listener, as shown below.  Once an auth event is thrown, it's safe to use the SDK's generic API call wrapper, IN.API.Raw(), to make a REST API call to share content with LinkedIn on the member's behalf.

    You can find additional details about requesting shared content analytics, reading company posts and what the POST payloads for sharing content look like on in the REST API documentation section of Companies on LinkedIn.

    javascript
    <script type="text/javascript" src="//platform.linkedin.com/in.js">
      api_key: YOUR_API_KEY_HERE
      authorize: true
      onLoad: onLinkedInLoad
    </script>
    
    <script type="text/javascript">
        
      // Setup an event listener to make an API call once auth is complete
        function onLinkedInLoad() {
          IN.Event.on(IN, "auth", shareContent);
        }
    
      // Handle the successful return from the API call
      function onSuccess(data) {
        console.log(data);
      }
    
      // Handle an error response from the API call
      function onError(error) {
        console.log(error);
      }
    
      // Use the API call wrapper to share content on LinkedIn
      function shareContent() {
            
        // Build the JSON payload containing the content to be shared
        var payload = { 
          "comment": "Check out developer.linkedin.com! http://linkd.in/1FC2PyG", 
          "visibility": { 
            "code": "anyone"
          } 
        };
    
        var cpnyID = 1234;
    
        IN.API.Raw("/companies/" + cpnyID + "/shares?format=json")
          .method("POST")
          .body(JSON.stringify(payload))
          .result(onSuccess)
          .error(onError);
      }
    
    </script>
  • Before you get started …

    Please make sure to read the Getting Started with the Mobile SDK for Android guide. It contains important information to successfully incorporate applying in with LinkedIn within your application.

    Step 1 - Authenticate the user

    Authenticating a user in a mobile Android environment is described in detail in the Authenticating using the Mobile SDK for Android guide. Once you have successfully authenticated your mobile user, you can continue to the next step of the workflow.

    Step 2 - Make authenticated API calls

    Once your mobile users have authenticated or you have otherwise established an LISession on their behalf, you can use the various HTTP method calls in the SDK's ApiHelper class to perform any of the calls documented in the REST API section of this document.

    For example, the following code demonstrates POSTing a company share from your mobile device:

    java
    String url = "https://api.linkedin.com/v1/companies/1234/shares?format=json";
    
    String payload = "{" +
        "\"comment\":\"Check out developer.linkedin.com! " +
        "http://linkd.in/1FC2PyG\"," +
        "\"visibility\":{" +
        "    \"code\":\"anyone\"}" +
        "}";
                    
    String url = "https://api.linkedin.com/v1/people/~";
                    
    APIHelper apiHelper = APIHelper.getInstance(getApplicationContext());
    APIHelper.postRequest(this, url, payload, new ApiListener() {
        @Override
        public void onApiSuccess(ApiResponse apiResponse) {
            // Success!
        }
    
        @Override
        public void onApiError(LIApiError liApiError) {
            // Error making GET request!
        }
    });
  • Company Profile

    Bring LinkedIn company profiles to your site to display key company information at-a-glance.

    Make your site content richer by showing the summary, location, logo, and number of employees for companies featured on your site. Also, help users discover who they know at a company and enable them to track news and insights by using the follow button.

    Get the Company Profile plugin.

    Follow Company

    Make it easy for prospective customers, job seekers, and business partners to engage with your company. 

    Adding a Follow Company button to your website lets you quickly and easily grow your LinkedIn Company Page or Showcase Page community.

    When a user clicks the Follow Company button, they'll automatically become a follower of your page and start seeing your updates on their LinkedIn homepage. Encourage your followers to like, share, and comment on your posts to help spread the word to their networks.

    Get the Follow Company plugin.

    Company Insider

    Enhance your content and show rich personalized insights about companies featured on your site.

    Show users customized information, including who in their network works at a particular company, and the list of new hires and job changes at the company. Users can also follow a company with one click to track news and insights.

    Get the Company Insider plugin.

    Alumni Information

    A one-of-a-kind window into the career outcomes of alumni from your school.  View career outcome information for alumni at a particular higher-education institution via their current employer, location, and industry.

    Get the Alumni Tool plugin.

  • Before you get started …

    Please make sure to read the Getting Started with the Mobile SDK for iOS guide. It contains important information to successfully incorporate applying in with LinkedIn within your application.

    Step 1 - Authenticate the user

    Authenticating a user in a mobile iOS environment is described in detail in the Authenticating using the Mobile SDK for iOS guide. Once you have successfully authenticated your mobile user, you can continue to the next step of the workflow.

    Step 2 - Make authenticated API calls

    Once your mobile users have authenticated or you have otherwise established an LISession on their behalf, you can use the various HTTP method calls in the SDK's ApiHelper class to perform any of the calls documented in the REST API section of this document.

    For example, the following code demonstrates POSTing a company share from your mobile device:

    Objective-C
    NSString *url = [NSString initWithString:@"https://api.linkedin.com/v1/companies/1234/shares?format=json"];
    
    NSString *payload = [NSString initWithString:@"{
        \"comment\":\"Check out developer.linkedin.com! http://linkd.in/1FC2PyG\",
        \"visibility\":{ \"code\":\"anyone\" }
    }"];
    
    if ([LISDKSessionManager hasValidSession]) {
        [[LISDKAPIHelper sharedInstance] postRequest:url stringBody:payload
        success:^(LISDKAPIResponse *response) {
            // do something with response
        }
        error:^(LISDKAPIError *apiError) {
            // do something with error
        }];
    ]}

Testing content sharing

In order to help you test code that shares content on LinkedIn company pages, we have created a special sandboxed company page to work with.

This company page doesn't require the authenticated user making the API call to be an administrator of the company, so you can share content to it without the risk of posting unwanted material to your company's live LinkedIn page(s).

When testing targeted sharing, the minimum followers-per-segment requirement has been lowered to 1 when testing against this company.

Company Name
DevTestCo
Company URL
https://www.linkedin.com/company/devtestco
Company ID
2414183

Important

Anyone can view content that has been shared on DevTestCo's company page!  Please ensure you are not sharing sensitive information or inappropriate content during your testing.

Some of the companies using Manage Company Pages