Get company details
Retrieve detailed information about a specific LinkedIn company page including full description, specialties, employee count, headquarters location, and industry classification.
/search/companies/detailsCode Examples
curl -X POST 'https://api.connectsafely.ai/linkedin/search/companies/details' \ -H 'Authorization: Bearer <your_api_key>' \ -H 'Content-Type: application/json' \ -d '{"companyId":"Acme Inc"}'Retrieve detailed information about a specific LinkedIn company page including full description, specialties, employee count, headquarters location, and industry classification.
Parameters
No parameters.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
accountId | string | No | LinkedIn account ID to use. If not provided, uses the default account. |
companyId | string | Yes | LinkedIn company ID from search results or company page URL |
Example
{
"companyId": "Acme Inc"
}Responses
| Status | Description |
|---|---|
| 200 | Company details retrieved successfully |
| 400 | Bad Request - Missing required companyId parameter |
| 401 | Unauthorized - Invalid or missing API key |
| 500 | Internal Server Error - Failed to get LinkedIn credentials or company details |
200 Response Parameters
| Name | Type | Description |
|---|---|---|
success | boolean | |
company | object | Detailed company information |
200 Example
{
"success": true,
"company": {
"id": "1441",
"name": "Google",
"universalName": "google",
"tagline": null,
"description": "A problem isn't truly solved until it's solved for all...",
"websiteUrl": "https://goo.gle/3DLEokh",
"phone": null,
"companyType": "COMPANY",
"headquarters": {},
"employeeRange": {
"start": 10001,
"end": null
},
"staffCount": 334483,
"specialities": [
"search",
"ads",
"mobile",
"android",
"machine learning"
],
"logoUrl": "https://media.licdn.com/dms/image/.../google_logo",
"coverImageUrl": "https://media.licdn.com/dms/image/.../google_cover",
"linkedinUrl": "https://www.linkedin.com/company/google/",
"isActive": true,
"isVerified": false
}
}400 Response Parameters
| Name | Type | Description |
|---|---|---|
success | boolean | |
error | object |
400 Example
{
"success": false,
"error": {
"issues": [
{
"code": "invalid_type",
"expected": "string",
"received": "undefined",
"path": [
"companyId"
],
"message": "Required"
}
],
"name": "ZodError"
}
}401 Response Parameters
| Name | Type | Description |
|---|---|---|
error | string |
401 Example
{
"error": "Unauthorized - Invalid credentials"
}500 Response Parameters
| Name | Type | Description |
|---|---|---|
error | string |
500 Example
{
"error": "Failed to get company details",
"success": false
}Search LinkedIn companies
Search for companies on LinkedIn by keywords and filters. Filter by headquarters location, industry, and company size. Useful for lead generation, market research, and finding potential business partners. Handles LinkedIn's page-based pagination internally: ask for the total `count` you want and the API walks as many ~10-result pages as it takes (max 11). `filters.companyType` and `filters.followedCompanies` are still accepted but no longer narrow the result set — LinkedIn's current company search offers no such facet. Sales Navigator Support: Pass a Sales Navigator company search URL in the `url` parameter to search using Sales Navigator filters (revenue, employees, etc.). Requires Sales Navigator license on the LinkedIn account. Rate limit: 1,000 search calls per account per day (resets at midnight UTC), and 30 calls per minute. Pagination is billed per page walked, so a `count` of 25 spends about 3 calls.
Search LinkedIn groups
Search for LinkedIn groups by keywords. Groups are communities where professionals discuss industry topics, share insights, and network. LinkedIn's group search offers a keyword box and nothing else — there are no filters — so `filters.memberCount` is accepted for backward compatibility but never applied; sort/filter the returned `memberCount` client-side instead. Results are paged internally to satisfy `count`. Page sizes vary (8-10 rows), so a short page is not the end of the result set — use `hasMore`, never the length of the returned array, to decide whether to keep paging. Rate limit: no per-account search quota is enforced on this endpoint — only the general 30-calls-per-minute velocity limit.
