LinkedIn Company Scraper by URL | No Cookies
Pricing
from $1.10 / 1,000 company delivereds
LinkedIn Company Scraper by URL | No Cookies
LinkedIn company data by page URL: give company page URLs, get one row per company with name, website domain, industry, size, headquarters, founded year and locations. Free plan: 100 URLs per run. Pay per company found, misses free. No login or cookies.
Pricing
from $1.10 / 1,000 company delivereds
Rating
0.0
(0)
Developer
Open Enrich
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Features
Share
LinkedIn company data by page URL: give a list of company page URLs, get one row per company with name, website domain, industry, size, headquarters, founded year, locations and the LinkedIn page. The same company named by two URL forms is one row, not two. No login, no cookies, no start fee. You pay only for a company row you receive.
No login | Any URL form in | One company per row | Website domain included | Size count and size range | Pages with no company = free | JSON/CSV export
Page URLs in, company records out. You get a flat, stable row you can drop into a CRM: the website domain is already split out, the size is a number and a range, the headquarters is separate from the other locations. It does not return people or email addresses. For the people at a company, take the website domain from this actor and run people-at-company.
💳 Pricing and plans
One event, company-card, charged once per company row delivered. Prices per 1,000 companies (set on the Pricing tab):
| Event | When it is charged | Free plan | Gold plan |
|---|---|---|---|
company-card | A company row is delivered to your dataset | $1.396 | $1.096 |
Bronze and Silver prices are on the Pricing tab. Higher Apify plans only lower the price. Empty runs, pages with no company on file, failed lookups, unreadable entries and notices are free, and there is no start fee.
Plan-credit math. The free plan's $5 monthly credit covers about 3,580 companies at the Free price.
Success-only billing
You are charged only for a company row you receive. A page with no company on file gets one free notice row (reason: "not_found"). An entry that is not a company page URL, a repeat, or a lookup that fails is listed in MISSES with its position and a reason and costs nothing. A company you already received under another URL form is skipped and never charged.
The free plan
Free Apify accounts get up to 100 URLs looked up per run, and as many runs as their Apify credit covers. Nothing is stored on our side. When a list is longer, the first 100 valid URLs are looked up and one free notice row (reason: "free_plan_limit") says how many were not looked up; they are not charged. Run again with the rest, or use a paid Apify plan for no per-run limit.
Keep a run small while you test
limit (default 100, maximum 3,000) caps the whole run and so caps what is charged. Try one URL with limit: 1, read the row, then scale up.
⚡ Why this company data actor?
- Any URL form.
https://www.linkedin.com/company/stripe,linkedin.com/company/Stripe/aboutandhttps://uk.linkedin.com/company/stripe?trk=xall become one company. The page's numeric id in the same place works too. - Flat rows for a CRM. Name, domain, industry, size count, size range, headquarters, founded year and a short locations list, with empty values left out.
- A stable id.
linkedinCompanyIdis the company's id on the platform, so you can join rows even when page names change. - One row per company. Two URL forms of one company are delivered and charged once.
- Success-only, no start fee. Missing pages, bad entries, repeats and notices are free.
🎯 Use cases: enrich a list of company pages
- CRM enrichment. You hold LinkedIn company URLs from a list or a form; fill in the website, industry and size.
- Domain lookup. Turn a column of company page URLs into website domains.
- Account scoring. Use size, industry, country and founded year to score a target list.
- Agent workflows. An AI agent holds a company page URL and needs the company facts in a single call.
🚀 Quick start: company data for a list of URLs
1. One company
{ "items": ["https://www.linkedin.com/company/stripe"], "limit": 1 }
2. A list, any URL form
{ "items": ["https://www.linkedin.com/company/openai", "linkedin.com/company/shopify/about", "https://uk.linkedin.com/company/microsoft"], "limit": 50 }
Each entry becomes its canonical company page address before the lookup.
⚙️ Inputs
| Key | Type | Default | What it does |
|---|---|---|---|
items | array of strings | required | LinkedIn company page URLs, in any form (with or without https or www, a country prefix, a trailing slash, a tracking query). A company name, a website, or a person or school page is not accepted and is listed in MISSES as invalid_url. The same company written twice is looked up once. Free plan: 100 URLs per run. |
limit | integer | 100 | Most companies delivered in the whole run, which also caps what is charged. Maximum 3,000. URLs not reached are listed in MISSES. |
includeAudit | boolean | false | Adds an audit object to each row. |
Any other field stops the run before a lookup with remove unsupported fields: .... Nothing is charged.
📤 Output
One result row per company, in input order. Empty values are left out.
| Key | Type | Meaning, and when it is missing |
|---|---|---|
name | string | Company name |
linkedinUrl | string | Canonical company page address |
linkedinCompanyId | string | The company's id on the platform |
domain | string | Host of the website the page lists, www. removed. See "How to read the rows" |
website | string | The website exactly as the page lists it |
tagline, description | string | The page's tagline and "about" text. Missing when the page has none |
industry | string | The industry the page declares |
employeeCount | integer | Employee count shown on the page |
employeeRange | string | Size band, such as 1001-5000 or 10001+ for an open top |
followerCount | integer | Followers of the page |
type | string | Company type as on the page, such as PRIVATELY_HELD, PUBLIC_COMPANY, NON_PROFIT. Missing when not set |
foundedYear | integer | Year founded. Missing when the page has none |
hqCity, hqState, hqCountry | string | Headquarters. hqCountry is a two-letter code. hqCity often carries the region as well |
specialities | array of strings | The specialities the page lists. Missing when none |
locations | array | Offices: city, state, country, postalCode, isHq. Missing when none |
fundingTotalUsd, fundingRounds | integer | Partial funding summary. Missing when not on file, and always missing for listed companies. See "How to read the rows" |
updatedAt | string | When the record was last refreshed in the data |
audit | object | Only with includeAudit: requestId, latencyMs, inputRaw |
Example output (the shape is real, the values are illustrative):
{"linkedinUrl": "https://www.linkedin.com/company/example-co","linkedinCompanyId": "1234567","name": "Example Co","domain": "example.com","website": "https://www.example.com/","tagline": "We build examples.","description": "Example Co builds example software for example teams.","industry": "Software Development","employeeCount": 2900,"employeeRange": "1001-5000","followerCount": 120000,"type": "PRIVATELY_HELD","foundedYear": 2015,"hqCity": "Dublin","hqState": "Dublin","hqCountry": "IE","specialities": ["software", "payments"],"locations": [{ "city": "Dublin", "state": "Dublin", "country": "IE", "postalCode": "D02", "isHq": true },{ "city": "London", "country": "GB", "isHq": false }],"fundingTotalUsd": 100000000,"fundingRounds": 3,"updatedAt": "2026-11-03T14:28:32.315Z"}
How to read the rows
- Two size fields.
employeeCountis the number shown on the page;employeeRangeis a separate band the data holds. They can disagree (a company with a band of 1001-5000 can show 11,000 on its page). Use the count when you need a number and the band when you need a bucket. - Domain is the page's website.
domainis read from the website the page lists. That is usually the company's main site, but a page can list a news site, a product site or a donation page, and thendomainis that host. Checkwebsitebefore you match ondomain. - Funding is a partial summary.
fundingTotalUsdandfundingRoundscome from a funding summary the data holds and can be well below the real total. They are left out for listed companies, where the data was not credible. There is no last-round field. - City and region.
hqCitycan read "San Francisco, CA" or "Redmond, Washington".hqStateis separate when the data has it. - A page name can change. The row carries the page address the data holds now, which can differ from the one you sent when a company renamed its page.
Other records in the run
MISSES(key-value store):[{index, input, reason}]for every entry without a result row. Reasons:not_found(no company on file for that page),invalid_url(not a company page address),duplicate_input(the same page as an earlier entry;duplicateOfnames it),duplicate_company(the same company as an earlier entry under another URL form),unreadable_response,not_looked_up_limit(the runlimitwas reached first), orUpstream HTTP <code>.errors-company-by-linkedin-url(key-value store): the lookups that failed for a technical reason, so you can re-run only those URLs.RUN_SUMMARY: counts (requested, valid, looked up, delivered, not found, repeats skipped).- Notice rows (
type: "notice") appear for a page with no company on file (not_found), a free-plan list longer than 100 (free_plan_limit), a reachedlimit(limit_reached), a reached spend limit (charge_limit_reached) or invalid input (invalid-input). Notices are never charged.
What is NOT returned
- People, employees or email addresses (use people-at-company)
- A search across companies by name, keyword or location (use linkedin-company-search)
- Posts, job listings or a company's follower list
- A last funding round, investors or revenue
🛡️ Reliable results
Our data promise. We work to keep the data current, and we stand behind it. If a company is missing, a field is wrong or a row looks off, open the Issues tab with your run link. We review every report and sort it out with you, case by case.
- No data is free and visible. Every entry without a row is in
MISSESwith its position and a reason and is never charged. - Repeats are charged once. The same URL written twice, or the same company named by two URL forms, is one row.
- Each row is saved as it is delivered. A run that stops keeps what it already produced.
- Bounded pace. Lookups run at about one a second, so a long list takes time: 3,000 companies is under an hour. The run timeout is one hour.
- Typos fail early. An unsupported input field, a bad number or a limit above its maximum stops the run before any charge. A company name or a website in
itemsis listed asinvalid_url, not guessed.
🤖 For AI agents (MCP)
This actor runs through the Apify MCP server. Prompt to copy:
"Use b2bdata/company-by-linkedin-url with items=["https://www.linkedin.com/company/stripe"] and limit=1. Return name, domain, industry, employeeCount and hqCountry."
When to use it. You hold a LinkedIn company page URL and need the company facts.
When not to. You need the people at the company (use b2bdata/people-at-company), you only have a company name (use b2bdata/linkedin-company-search) or you need email addresses (use b2bdata/email-finder).
Input contract. items array of company page URLs; optional limit 1-3,000 (default 100).
Output contract. One row per company with name, linkedinUrl, linkedinCompanyId, domain, industry, employeeCount, hqCountry. Output is deterministic and schema-stable. A page with no company is a free notice row and listed in MISSES.
Smoke test. limit: 1 on a well-known company page returns one row.
Error cases. No valid company page URLs means no entry was a company page address. remove unsupported fields, or a bad limit, ends the run SUCCEEDED with one free invalid-input notice row and nothing charged.
🔌 Integrations: send results anywhere
- API. Fetch rows from the run's default dataset:
GET /v2/datasets/{datasetId}/items?format=csv. - Webhook on run success to push rows to your own endpoint.
- n8n, Make, Zapier. Use the native Apify nodes: run the actor, then read the dataset.
- Google Sheets, Airtable, HubSpot, Salesforce, Clay. Join on
linkedinUrlordomainand mapname,industryandemployeeCountto account fields.
🕐 Schedule examples
- Weekly account refresh. A schedule with a saved task that points at your target-account list.
- New-account enrichment. A webhook from your CRM starts a run with the new company URLs.
🔗 Related actors
b2bdata/people-at-company: the people at a company, one row per person, from a company domain. Openb2bdata/linkedin-company-search: find company pages by name, keyword or URL. Openb2bdata/linkedin-employee-search: the people who work at a company, found by company name or URL. Openb2bdata/headcount-by-department: how many people a company has per team. Open
❓ FAQ
Data and coverage
How do I get company data from a LinkedIn company URL?
Put the page URL in items and run. You get one row per company with name, domain, industry, size, headquarters and founded year.
Which URL forms work? Any address of a company page: with or without https or www, a country prefix such as uk., a trailing slash, an /about path, a tracking query, any letter case. The numeric id in place of the page name works too. Person pages, school pages, websites and company names do not.
Why is a URL missing from the results?
It is in MISSES with a reason: no company on file for that page, an entry that was not a company page address, or a repeat.
Why do the employee count and the size range disagree? They are two different fields: the number shown on the page and a size band the data holds. See "How to read the rows".
Do I get people or email addresses?
No. Use b2bdata/people-at-company for the people at a company and b2bdata/email-finder for an email.
Do I need a LinkedIn account or cookies? No. It is a lookup without login, cookies or an account to ban.
Pricing
What do I pay when a page has no data? Nothing. There is no start fee, and pages with no company, bad entries, repeats and notices are free.
🛟 Support
Use the Issues tab on this actor's Apify page for bugs, questions and feature requests. We answer within 48 hours on working days. Please include the run ID and the input you used. Published on Apify by b2bdata. Not affiliated with, endorsed by, or sponsored by any company or person named in the examples above.