Company scraper
Turn a company page URL into structured data: description, industry, headcount, headquarters, website, specialties… Costs 0.5 credit per company found.
Unlike email searches, the single endpoint answers directly with the result. The bulk endpoint takes up to 50 items per call. See the rate limits.
Scrape one company
https://app.icypeas.com/api/scrape/company?url=PROFILE_URLAuthorizationstringrequiredYour API key, as is (no
Bearerprefix).Content-TypestringrequiredAlways
application/json.
urlstringrequiredThe company URL
Rule: should be a correctly formatted company profile (e.g. https://www.linkedin.com/company/my-linkedin-id)
- cURL
- JavaScript
- Python
- PHP
- PowerShell
curl -X GET "https://app.icypeas.com/api/scrape/company?url=PROFILE_URL" \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://app.icypeas.com/api/scrape/company?url=PROFILE_URL", {
method: "GET",
headers: {
"Content-Type": "application/json",
Authorization: "YOUR_API_KEY",
},
});
const data = await response.json();
console.log(data);
import requests
response = requests.get(
"https://app.icypeas.com/api/scrape/company?url=PROFILE_URL",
headers={"Authorization": "YOUR_API_KEY"},
)
print(response.json())
<?php
$ch = curl_init("https://app.icypeas.com/api/scrape/company?url=PROFILE_URL");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Authorization: YOUR_API_KEY",
],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
$headers = @{
"Authorization" = "YOUR_API_KEY"
"Content-Type" = "application/json"
}
$response = Invoke-RestMethod -Method GET -Uri "https://app.icypeas.com/api/scrape/company?url=PROFILE_URL" -Headers $headers
$response | ConvertTo-Json -Depth 10
200SuccessResponse when the company is found
{
"success": true,
"searchId": "#YOUR_SEARCH_ID#",
"status": "FOUND",
"result": {
"name": "NEC Technologies",
"lid": "nec-technologies",
"url": "https://www.linkedin.com/company/nec-technologies/",
"description": "NEC Technologies",
"urn": "urn:li:fs_salesCompany:1693",
"address": {
"streetAddress": "",
"addressLocality": "Greater Tokyo Area",
"addressRegion": "",
"postalCode": "",
"addressCountry": "Japan",
"addressCountryCode": "JP"
},
"headcountRange": "50-100",
"phone": "+33 3 83 23 34 50",
"numberOfEmployees": 62,
"industry": "Computer Hardware Manufacturing",
"website": "https://www.nec.com/",
"specialties": [],
"type": "Public Company",
"deleted": false,
"foundedYear": "1899",
"pictureUrl": "https://icypeas-li-profile-pictures-production.s3.sbg.io.cloud.ovh.net/nec-technologies-8e6dd020f4614db796efc654ecb348fadcad0ed0f0674e71868bdaf129960a64",
"estimatedRevenuRange": {
"estimatedMaxRevenue": {
"amount": 1000,
"unit": "BILLION",
"currency": "USD"
},
"estimatedMinRevenue": {
"amount": 1,
"unit": "BILLION",
"currency": "USD"
}
},
"employeeGrowth": [
{
"percentage": 16,
"timespan": "SIX_MONTHS"
},
{
"percentage": 40,
"timespan": "YEAR"
},
{
"percentage": 40,
"timespan": "TWO_YEAR"
}
]
}
}
successbooleantrue means that your search succeeded (no error was raised on our side)
searchIdstringThe id of the search item (if you need to fetch the result later using the dedicated route)
statusstringFOUND because the profile has been found
resultobjectThe company
Show properties (21)
idstringIcypeas unique identifier.
namestringCompany name
urlstringLinkedIn company URL.
urnstringLinkedIn company URN.
websitestringCompany website
phonestringMain phone number given by the company (unnormalized, we keep what was given)
sloganstringCompany slogan
industrystringCompany industry
foundedYearnumberCompany founded year (-1 when not known)
specialtiesarray of objectsCompany specialties
Show item properties (1)
valuestringData value.
lidstringLinkedIn ID (the `my-linkedin-id` in https://linkedin.com/company/my-linkedin-id).
descriptionstringCompany description.
pictureUrlstringCompany image URL.
typestringCompany legal form (LLC, SAS, SARL, GmbH, ...)
addressobjectAddress information.
Show properties (6)
streetAddressstringStreet address.
addressLocalitystringAddress locality.
addressRegionstringAddress region.
postalCodestringPostal code.
addressCountrystringAddress country.
addressCountryCodestringAddress country code (ISO Alpha 2 or UNK).
deletedbooleanIndicates if the company has been deleted.
numberOfEmployeesnumberNumber of employees (-1 when not known).
headcountRangestringDeclarative headcount range (e.g. 1-10 or 50-100)
estimatedRevenuRangeobjectEstimated revenue
Show properties (2)
estimatedMaxRevenueobjectEstimation of max revenue
Show properties (3)
amountnumberAmount
unitstringAmount unit (BILLION, MILLION, THOUSAND, ...)
currencystringAmount currency (three letters)
estimatedMinRevenueobjectEstimation of min revenue
Show properties (3)
amountnumberAmount
unitstringAmount unit (BILLION, MILLION, THOUSAND, ...)
currencystringAmount currency (three letters)
revenueobjectWhen the revenue is known (because the company has to disclose it, for instance)
Show properties (3)
amountnumberAmount
unitstringAmount unit (BILLION, MILLION, THOUSAND, ...)
currencystringAmount currency (three letters)
employeeGrowtharray of objectsEmployee growth over the year
Show item properties (1)
growthobjectemployee growth for a given timespan
Show properties (2)
percentagenumberEmployee growth percentage
timespanstringTime span (SIX_MONTHS, YEAR, TWO_YEAR, ...)
200SuccessResponse when the company is not found
{
"success": true,
"searchId": "#YOUR_SEARCH_ID#",
"status": "NOT_FOUND",
"result": null
}
successbooleantrue means that your search succeeded (no error was raised on our side)
searchIdstringThe id of the search item (if you need to fetch the result later using the dedicated route)
statusstringNOT_FOUND because the company was not found
resultobjectThe field is null
200Validation errorResponse when there are validation errors.
The request reached Icypeas but some fields are wrong. The response lists every problem in validationErrors. See how to read and fix errors.
{
"validationErrors": [
{
"field": "url",
"message": "wrong_linkedin_url",
"humanReadableMessage": "The URL should be a company URL",
"type": "WrongLinkedinUrl",
"expected": null,
"actual": "https://linkedin.com/xaeaea/zzz"
}
],
"success": false
}
| Type | Fields | When it happens |
|---|---|---|
stringEmptyvalidation_string_empty | url | Error sent when the parameter is missing |
urlvalidation_url | url | Error sent when the parameter is not a valid URL |
WrongLinkedinUrlwrong_linkedin_url | url | The URL should be a user profile URL. |
InsufficientCreditsinsufficient_credits | | You need more credits than the ones you have to run this search. |
UnpaidSubscriptionErrorunpaid_subscription_error | | Error sent when you have a pending payment and your subscription is therefore not paid |
401UnauthorizedResponse when we could not authenticate you.
{
"message": "Unauthorized access.",
"error": "UnauthorizedAccessError",
"status": 401,
"code": "unauthorized_access_error"
}
messagestringHuman-readable message.
errorstringError name
statusnumberHTTP error code
codestringError code
429Too many requestsError received when rate limit is exceeded
{
"message": "You have exceeded the max number of requests per minute.",
"error": "RateLimitExceededError",
"status": 429,
"code": "rate_limit_exceeded_error"
}
messagestringHuman-readable message.
errorstringError name
statusnumberHTTP error code
codestringError code
Scrape up to 50 companies
https://app.icypeas.com/api/scrapeAuthorizationstringrequiredYour API key, as is (no
Bearerprefix).Content-TypestringrequiredAlways
application/json.
typestringrequiredThe type of data
Rule: should always be 'company'
dataarrayrequiredAn array containing the company URLs to scrape. Max number of companies per request is 50
Rule: should be valid company URLs
- cURL
- JavaScript
- Python
- PHP
- PowerShell
- JSON body
curl -X POST "https://app.icypeas.com/api/scrape" \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_API_KEY" \
-d '{
"type": "company",
"data": [
"https://www.linkedin.com/company/nec-technologies",
"https://www.linkedin.com/company/icypessaezeaze"
]
}'
const response = await fetch("https://app.icypeas.com/api/scrape", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "YOUR_API_KEY",
},
body: JSON.stringify({
"type": "company",
"data": [
"https://www.linkedin.com/company/nec-technologies",
"https://www.linkedin.com/company/icypessaezeaze"
]
}),
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
"https://app.icypeas.com/api/scrape",
headers={"Authorization": "YOUR_API_KEY"},
json={
"type": "company",
"data": ["https://www.linkedin.com/company/nec-technologies", "https://www.linkedin.com/company/icypessaezeaze"],
},
)
print(response.json())
<?php
$body = <<<'JSON'
{
"type": "company",
"data": [
"https://www.linkedin.com/company/nec-technologies",
"https://www.linkedin.com/company/icypessaezeaze"
]
}
JSON;
$ch = curl_init("https://app.icypeas.com/api/scrape");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $body,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Authorization: YOUR_API_KEY",
],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
$headers = @{
"Authorization" = "YOUR_API_KEY"
"Content-Type" = "application/json"
}
$body = @'
{
"type": "company",
"data": [
"https://www.linkedin.com/company/nec-technologies",
"https://www.linkedin.com/company/icypessaezeaze"
]
}
'@
$response = Invoke-RestMethod -Method POST -Uri "https://app.icypeas.com/api/scrape" -Headers $headers -Body $body
$response | ConvertTo-Json -Depth 10
Paste this in the Body field of Make, Zapier, n8n or Postman.
{
"type": "company",
"data": [
"https://www.linkedin.com/company/nec-technologies",
"https://www.linkedin.com/company/icypessaezeaze"
]
}
200SuccessResponse when your input does not contain any validation errors
{
"success": true,
"data": [
{
"searchId": "#YOUR_SEARCH_ID_1#",
"status": "FOUND",
"result": {
"name": "NEC Technologies",
"lid": "nec-technologies",
"url": "https://www.linkedin.com/company/nec-technologies/",
"description": "NEC Technologies",
"urn": "urn:li:fs_salesCompany:1693",
"address": {
"streetAddress": "",
"addressLocality": "Greater Tokyo Area",
"addressRegion": "",
"postalCode": "",
"addressCountry": "Japan",
"addressCountryCode": "JP"
},
"headcountRange": "50-100",
"phone": "+33 3 83 23 34 50",
"numberOfEmployees": 62,
"industry": "Computer Hardware Manufacturing",
"website": "https://www.nec.com/",
"specialties": [],
"type": "Public Company",
"deleted": false,
"foundedYear": "1899",
"pictureUrl": "https://icypeas-li-profile-pictures-production.s3.sbg.io.cloud.ovh.net/nec-technologies-8e6dd020f4614db796efc654ecb348fadcad0ed0f0674e71868bdaf129960a64",
"estimatedRevenuRange": {
"estimatedMaxRevenue": {
"amount": 1000,
"unit": "BILLION",
"currency": "USD"
},
"estimatedMinRevenue": {
"amount": 1,
"unit": "BILLION",
"currency": "USD"
}
},
"employeeGrowth": [
{
"percentage": 16,
"timespan": "SIX_MONTHS"
},
{
"percentage": 40,
"timespan": "YEAR"
},
{
"percentage": 40,
"timespan": "TWO_YEAR"
}
]
}
},
{
"searchId": "#YOUR_SEARCH_ID_2#",
"status": "NOT_FOUND",
"result": null
}
]
}
successbooleantrue means that your search succeeded (no error was raised on our side)
dataarray of objectsShow item properties (3)
searchIdstringThe id of each search item (if you need to fetch the result later using the dedicated route)
statusstringFOUND when the company was found & NOT_FOUND when not
resultobjectThe company or null if no company was found
Show properties (21)
idstringIcypeas unique identifier.
namestringCompany name
urlstringLinkedIn company URL.
urnstringLinkedIn company URN.
websitestringCompany website
phonestringMain phone number given by the company (unnormalized, we keep what was given)
sloganstringCompany slogan
industrystringCompany industry
foundedYearnumberCompany founded year (-1 when not known)
specialtiesarray of objectsCompany specialties
Show item properties (1)
valuestringData value.
lidstringLinkedIn ID (the `my-linkedin-id` in https://linkedin.com/company/my-linkedin-id).
descriptionstringCompany description.
pictureUrlstringCompany image URL.
typestringCompany legal form (LLC, SAS, SARL, GmbH, ...)
addressobjectAddress information.
Show properties (6)
streetAddressstringStreet address.
addressLocalitystringAddress locality.
addressRegionstringAddress region.
postalCodestringPostal code.
addressCountrystringAddress country.
addressCountryCodestringAddress country code (ISO Alpha 2 or UNK).
deletedbooleanIndicates if the company has been deleted.
numberOfEmployeesnumberNumber of employees (-1 when not known).
headcountRangestringDeclarative headcount range (e.g. 1-10 or 50-100)
estimatedRevenuRangeobjectEstimated revenue
Show properties (2)
estimatedMaxRevenueobjectEstimation of max revenue
Show properties (3)
amountnumberAmount
unitstringAmount unit (BILLION, MILLION, THOUSAND, ...)
currencystringAmount currency (three letters)
estimatedMinRevenueobjectEstimation of min revenue
Show properties (3)
amountnumberAmount
unitstringAmount unit (BILLION, MILLION, THOUSAND, ...)
currencystringAmount currency (three letters)
revenueobjectWhen the revenue is known (because the company has to disclose it, for instance)
Show properties (3)
amountnumberAmount
unitstringAmount unit (BILLION, MILLION, THOUSAND, ...)
currencystringAmount currency (three letters)
employeeGrowtharray of objectsEmployee growth over the year
Show item properties (1)
growthobjectemployee growth for a given timespan
Show properties (2)
percentagenumberEmployee growth percentage
timespanstringTime span (SIX_MONTHS, YEAR, TWO_YEAR, ...)
200Validation errorResponse when there are validation errors.
The request reached Icypeas but some fields are wrong. The response lists every problem in validationErrors. See how to read and fix errors.
{
"validationErrors": [
{
"field": "url",
"message": "wrong_linkedin_url",
"humanReadableMessage": "All URLs in the data array should be a profile URL. Please check URLs at indices: 1",
"type": "WrongLinkedinUrl",
"expected": null,
"actual": [
"https://www.linkedin.com/company/nec-technologies",
"https://www.linkedin.com/xx/apple/"
]
}
],
"success": false
}
| Type | Fields | When it happens |
|---|---|---|
stringEmptyvalidation_string_empty | url | Error sent when the parameter is missing |
urlvalidation_url | url | Error sent when the parameter is not a valid URL |
WrongLinkedinUrlwrong_linkedin_url | url | The URL should be a company URL. |
InsufficientCreditsinsufficient_credits | | You need more credits than the ones you have to run this search. |
UnpaidSubscriptionErrorunpaid_subscription_error | | Error sent when you have a pending payment and your subscription is therefore not paid |
401UnauthorizedResponse when we could not authenticate you.
{
"message": "Unauthorized access.",
"error": "UnauthorizedAccessError",
"status": 401,
"code": "unauthorized_access_error"
}
messagestringHuman-readable message.
errorstringError name
statusnumberHTTP error code
codestringError code
429Too many requestsError received when rate limit is exceeded
{
"message": "You have exceeded the max number of requests per minute.",
"error": "RateLimitExceededError",
"status": 429,
"code": "rate_limit_exceeded_error"
}
messagestringHuman-readable message.
errorstringError name
statusnumberHTTP error code
codestringError code