Company details · by URL, slug or EnvoAPI ID

LinkedIn Company API for CRM Enrichment

EnvoAPI’s LinkedIn Company API retrieves public LinkedIn company data as JSON for developers building CRM integrations and B2B applications. Look up a company by its LinkedIn URL, slug or EnvoAPI ID to retrieve available website, industry, employee count, size range, follower count, logo and headquarters data. If you have only a domain or company name, search for the company first.

Company details cost 1 credit per request. New accounts receive 100 free credits once, with no credit card required.

COMPANY URL…/company/microsoftCOMPANY SLUGmicrosoftENVOAPI ID · PUBLICIDcompany_4T4tWjDOMAINmicrosoft.comCOMPANY NAMEMicrosoftRESULTCARDS{ data, meta }one envelope, every routeMMicrosoftSoftware Development · Redmond, WashingtonpublicIdcompany_4T4tWjslugmicrosoftwebsiteUrlnews.microsoft.comemployeeCount232,066employeeCountRange10,001+foundedOnnullproducts[]200 OKcreditCost 1details/by-urlCOMPANY URL…/company/microsoftRESULT CARDS{ data, meta }every routeMMicrosoftSoftware Development · Redmond, WashingtonpublicIdcompany_4T4tWjslugmicrosoftwebsiteUrlnews.microsoft.comemployeeCount232,066employeeCountRange10,001+foundedOnnullproducts[]200 OKcreditCost 1details/by-url
  • Have the URL, slug or EnvoAPI ID: one request
  • Have only a domain or a name: search, then one request
Look up by
URL, slug or ID
Search first by
Domain or name
Cost per request
1 credit
Free to start
100 credits

EnvoAPI is an independent service, not an official LinkedIn product.

Access options

Compare official LinkedIn API access with EnvoAPI

LinkedIn’s official Organization Lookup API and EnvoAPI use different credentials and identifiers. Choose the access option that matches your company data integration.

Official LinkedIn Organization Lookup compared with EnvoAPI company details
Access optionAuthenticationLookup inputsScope
LinkedIn Organization Lookup3-legged OAuthOrganization ID, vanity name or email domainOfficial organization data access. Available fields depend on the call and permissions. Some calls require the authenticated member to hold the ADMINISTRATOR role; calls that allow non-admin access return a limited field set.
EnvoAPI company detailsEnvoAPI Bearer API keyLinkedIn company URL, slug or EnvoAPI publicIdPublic company profiles for enrichment. These lookup endpoints retrieve data; they do not manage or publish to a LinkedIn Page.

For an integration using LinkedIn’s official permissions, start with the LinkedIn Organization Lookup documentation. For company enrichment with EnvoAPI, use the routes below. Read more about official and unofficial LinkedIn API access if you are still choosing an approach.

Lookup routes

Choose a company API endpoint by URL, slug or EnvoAPI ID

Use the base URL https://api.envoapi.com with the matching GET endpoint below to retrieve a company profile.

Company details routes by available input
Available inputGET routeParameterNext step
LinkedIn company URL/v1/companies/details/by-urlurl, for example https://www.linkedin.com/company/microsoft/Send the Page URL using company lookup by URL.
Company slug/v1/companies/details/by-slugslug=microsoftUse the identifier after /company/ in the Page URL for company lookup by slug.
EnvoAPI company ID/v1/companies/details/by-idpublicId=company_4T4tWjReuse the ID from an earlier company response for lookup by EnvoAPI ID.

The publicId parameter takes an EnvoAPI ID. Do not substitute LinkedIn’s numeric company ID. Use a LinkedIn company URL or slug when you do not have an EnvoAPI ID.

Quickstart

Retrieve a LinkedIn company profile with one API request

  1. Get an API key

    Create an EnvoAPI account and get an API key.

  2. Store the key on your server

    Store the key in the server environment as ENVO_API_KEY. Keep it out of browser and mobile application code; see API key authentication.

  3. Send the request

    Send a GET request with your identifier and an Authorization: Bearer header.

  4. Read the response

    On a successful response, read the company profile from data and the request’s credit cost from meta.creditCost.

With your API key set in the environment, this request looks up the microsoft slug:

GET/v1/companies/details/by-slugbash
curl "https://api.envoapi.com/v1/companies/details/by-slug?slug=microsoft" \  --header "Authorization: Bearer $ENVO_API_KEY" \  --header "Accept: application/json"

The JSON is shortened from EnvoAPI’s documented Microsoft response, with the source checked on . It is a documentation example, not a live API result captured for this page. Its employee count is a sample value, not a statement of Microsoft’s current headcount.

Save data.publicId for a later lookup by ID. Record meta.creditCost in your usage log; it describes the request, not the company. Every field is described below, and the company response schema has the full definitions.

Response200shortened documentation examplejson
{  "data": {    "publicId": "company_4T4tWj",    "name": "Microsoft",    "slug": "microsoft",    "linkedinUrl": "https://www.linkedin.com/company/microsoft/",    "websiteUrl": "https://news.microsoft.com/",    "primaryIndustry": {      "publicId": null,      "name": "Software Development"    },    "employeeCount": 232066,    "employeeCountRange": {      "start": 10001,      "end": null    },    "headquarters": {      "description": null,      "address": {        "line1": "1 Microsoft Way",        "line2": null,        "locality": "Redmond",        "administrativeArea": "Washington",        "postalCode": "98052",        "country": "US",        "countryCode": null      }    },    "foundedOn": null,    "products": []  },  "meta": {    "creditCost": 1  }}

Python and Node.js

Call the LinkedIn Company API from Python or Node.js

Both samples send the cURL request above from your server: they read the key from ENVO_API_KEY, return the company record and its credit cost, and raise the documented error code, or the Retry-After wait on a 429.

company.pypython
import osimport requestsAPI_BASE = "https://api.envoapi.com"API_KEY = os.environ["ENVO_API_KEY"]def get_company(slug):    response = requests.get(        f"{API_BASE}/v1/companies/details/by-slug",        params={"slug": slug},        headers={            "Authorization": f"Bearer {API_KEY}",            "Accept": "application/json",        },        timeout=30,    )    if response.status_code == 429:        wait = response.headers.get("Retry-After")        raise RuntimeError(f"Rate limited; retry in {wait}s.")    if not response.ok:        error = response.json()["error"]        message = f"{error['code']}: {error['message']}"        raise RuntimeError(message)    body = response.json()    return body["data"], body["meta"]["creditCost"]company, credit_cost = get_company("microsoft")print(company["name"], company["employeeCount"], credit_cost)
company.mjsjavascript
const API_BASE = "https://api.envoapi.com";const API_KEY = process.env.ENVO_API_KEY;async function getCompany(slug) {  const path = "/v1/companies/details/by-slug";  const query = new URLSearchParams({ slug });  const url = `${API_BASE}${path}?${query}`;  const response = await fetch(url, {    headers: {      Authorization: `Bearer ${API_KEY}`,      Accept: "application/json",    },    signal: AbortSignal.timeout(30_000),  });  if (response.status === 429) {    const wait = response.headers.get("Retry-After");    throw new Error(`Rate limited; retry in ${wait}s.`);  }  if (!response.ok) {    const { error } = await response.json();    throw new Error(`${error.code}: ${error.message}`);  }  const { data, meta } = await response.json();  return { company: data, creditCost: meta.creditCost };}const { company, creditCost } = await getCompany("microsoft");console.log(company.name, company.employeeCount, creditCost);

The Python sample uses the requests package (pip install requests). The Node.js sample uses the built-in fetch and runs as an ES module on Node.js 18 or later.

Response fields

LinkedIn company data fields the API returns

Every successful company details response carries the same 20 keys in data. Any value except publicId can be null and a list can be empty, so check each value before you write it to a record.

Identifiers and links

publicIdstring
The EnvoAPI company ID, such as company_4T4tWj, for later lookups by ID. The one field that is never null.
namestring
The company name, such as Microsoft.
slugstring
The Page identifier from its URL, such as microsoft.
linkedinUrlstring
The LinkedIn company Page URL.
websiteUrlstring
The website listed for the company, as a full URL such as https://news.microsoft.com/.

Description, tagline and specialties

descriptionstring
The company description, as published on the Page.
taglinestring
The short tagline, when the Page has one.
specialtiesstring[]
Up to 100 specialty labels, such as Cloud Computing and Developer Tools.

Industry, organization type and founding date

primaryIndustryobject
{ publicId, name }, such as Software Development.
industriesobject[]
Up to 50 industries, each in the same shape.
organizationTypeobject
{ code, name }, such as publicCompany and Public Company. Other codes include privatelyHeld, nonProfit and governmentAgency.
foundedOnobject
A partial date, { year, month, day }, where month and day can be null.

Employee count and follower count

employeeCountinteger
The returned employee count, such as 232066. It is not verified payroll headcount.
employeeCountRangeobject
The size band as { start, end }, such as a start of 10001 with an open end of null.
followerCountinteger
The Page’s follower count, such as 29094127.

Logo and cover image

logoobject[]
Up to 16 renditions of { url, width, height }; the example has 100, 200 and 400 pixel squares.
coverImageobject[]
Up to 16 cover image renditions in the same shape, the largest 4200 × 700 pixels in the example.

Headquarters, locations and products

headquartersobject
{ description, address }, with the address split into line1, locality, administrativeArea, postalCode and country.
locationsobject[]
Up to 100 locations in the headquarters shape.
productsobject[]
Up to 100 products, each with a name, description, logo and categories. Empty in the example.

CRM mapping

Map company profile data to your CRM

Use the company profile to update your account record, with separate fields for identifiers, segmentation and location. Check for missing parent objects before reading nested values.

Company profile JSON paths mapped to CRM account fields
JSON pathAccount field or purposeHandling note
data.publicIdExternal company IDStore it as the EnvoAPI identifier for subsequent details requests.
data.slugdata.linkedinUrlPage identifier and linkKeep the slug and URL in separate fields.
data.namedata.websiteUrlAccount name and websiteThe website value is a URL. Parse its hostname if your CRM needs a domain.
data.primaryIndustry.nameIndustry segmentUse the available industry label for account grouping.
data.employeeCountdata.employeeCountRangeReturned employee count and company size bandStore these separately. Preserve the range’s start and end values without inventing missing bounds. The count is not verified payroll headcount.
data.headquarters.addressHeadquarters and territory routingMap components such as locality, administrativeArea and country. The address is an object, not a city/country string.
data.foundedOndata.specialtiesdata.locationsFounding information, business focus and locationsUse these schema fields when populated. Specialties and locations are omitted from the shortened example above.
meta.creditCostRequest usageWrite this to your usage log, outside the company record.

Preserve missing values. In the example, foundedOn: null means no founding value is returned; do not convert it to zero. Likewise, products: [] means the response contains no product entries, not that the company has no products. A successful lookup can contain null fields or empty arrays.

Existing account

Enrich an existing CRM account

Start with the LinkedIn URL or slug already stored on the account and call the matching details route. Map industry and the employee size range to your segmentation fields, then map headquarters components to territory routing. Save the returned publicId for the next lookup. These are mappings to implement in your integration.

New signup

Enrich a signup from its company domain

Send the signup’s company domain to domain search, check the candidate Pages, and fetch details for the selected slug. Add the matched profile to the account. If you cannot confirm the match, leave the account pending verification instead of attaching the first result.

For a broader account workflow, see the Data Enrichment API. Individual profiles use the LinkedIn Profile API; company post content uses the separate endpoint in the company posts endpoint documentation.

Credits and limits

Estimate credits and handle API rate limits

Credits and starting price

Budget for every search request as well as the details request. Company details and company search each cost 1 credit per request.

Requests and credits per company lookup workflow
WorkflowRequestsCredits
Direct details lookup by URL, slug or EnvoAPI ID11
1 search page followed by 1 details lookup22

The one-time 100 free credits cover 100 direct lookups or 50 workflows consisting of exactly 1 search page and 1 details lookup, assuming no other requests or retries. These totals describe request budgets; they do not guarantee that every workflow identifies a unique company.

As checked on , the Free plan requires no credit card and allows 10 requests per minute. Paid plans start with Launch at $49/month for 10,000 monthly credits and 60 requests per minute. See EnvoAPI pricing and credits for current terms.

Handle failed requests

Company API error statuses and what to do next
StatusMeaningNext action
401The API key is missing, invalid or inactive.Check that ENVO_API_KEY is set and that the request sends the active key in the Bearer header.
402The account has insufficient credits.Check the balance and ensure enough credits are available before sending the request again.
404The resource was not found.Check the identifier and confirm that you selected the intended company Page.
429The account’s request limit was exceeded.Wait for the number of seconds in Retry-After, cap retry attempts and reduce the account’s request pace.

The rate limit is shared across all API keys on the account. Coordinate requests across workers and read the response headers to track remaining capacity. X-RateLimit-Reset reports whole seconds until capacity resets, not a Unix timestamp. Follow the account rate limits guide when implementing retries.

FAQ

LinkedIn Company API questions, answered

Does LinkedIn have an official company API?

Yes. LinkedIn’s Organization Lookup API returns organization data through 3-legged OAuth, and some calls require the authenticated member to hold the ADMINISTRATOR role. EnvoAPI is an independent, unofficial service: it authenticates with an EnvoAPI API key and returns public company profiles for enrichment.

Do I need a LinkedIn account or access token?

No. Requests authenticate with your EnvoAPI API key, sent as a Bearer token from your server. You do not connect a LinkedIn account, supply a LinkedIn cookie, or apply for LinkedIn developer access.

Can I look up a company by its website domain?

Yes, in two requests. Send the domain to /v1/companies/by-domain, confirm the intended Page among the candidates, then fetch details for its slug. A domain can return several Pages, such as Microsoft and Microsoft Azure, so check the match before you attach a result.

Is the EnvoAPI ID the same as LinkedIn’s company ID?

No. publicId is an EnvoAPI ID, such as company_4T4tWj. The by-ID route does not take LinkedIn’s numeric company ID; use the company’s LinkedIn URL or slug when you do not have an EnvoAPI ID.

How much does a LinkedIn company lookup cost?

As of 2026-10-14, a company details request costs 1 credit, and so does each company search page. New accounts receive 100 one-time free credits with no credit card required. Paid plans start with Launch at $49/month for 10,000 monthly credits.

Is the employee count the company’s real headcount?

Not necessarily. employeeCount is the returned employee count, not verified payroll headcount. Store it beside the employeeCountRange size band, and keep a missing bound as null rather than inventing one.

What happens when a company is not found?

The API returns HTTP 404 with the resource_not_found code. Check the identifier and confirm that you selected the intended company Page instead of retrying the same request.

Can I get a company’s LinkedIn posts?

Not from company details. Posts come from the separate /v1/companies/posts endpoint, which has its own documentation.

Get an API key for your first company lookup

Create your account, get an API key and try the route that matches your company identifier. Start with 100 one-time free credits and no credit card required.