Company Intelligence Report
Pricing
from $30.00 / 1,000 company reports
Company Intelligence Report
🏷️ From $30 / 1K | Company name or domain in, one report per company out: its verified website with the evidence, firmographics, published emails and phones, the email naming convention and the decision makers with title, LinkedIn URL and a built email. Pay per report delivered.
Pricing
from $30.00 / 1,000 company reports
Rating
0.0
(0)
Developer
丂卩ㄖㄖҜㄚ
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Give it company names or website domains and it returns one report per company: the company's own website with the evidence that it is theirs, what the company says about itself, the email addresses and phone numbers it publishes, the email naming convention it uses, and the people who run it, each with a title, a LinkedIn URL and a work email built from that convention. You pay only for reports that carry at least one person or one published contact.
🔍 What does Company Intelligence Report do?
Company Intelligence Report turns a name or a domain into a researched company profile in one row. For a name such as Monzo Bank it builds candidate domains from the name, reads each homepage through an evidence gate that accepts a site only when the page proves it belongs to the company asked for, and falls back to Wikidata's official website claims for the brands whose domain is not their name. For a domain such as wise.com it verifies the site answers and is not a parked page or a directory, then uses it as given.
Once the website is settled it reads the homepage and up to four more pages, the contact, about, team and legal pages, and pulls the firmographics the company publishes about itself: description, industry, headcount band, founding year, legal name, addresses, registration numbers and social profiles. It collects every email address and phone number on those pages, works out the email naming convention from the personal addresses it finds, then asks two public search engines for the LinkedIn profiles that name the company, keeps the people whose own listing says they work there, classifies each by department and seniority, and builds an address for each from the convention.
The easiest way to try it is to click Try for free and run it on the two companies already in the input box. Everything comes from the company's own website, Wikidata and public search listings. No LinkedIn page is ever fetched, no account is logged into and no purchased database sits behind it, so a report costs a few seconds and is priced accordingly.
🆚 What about the official route?
There is no single official route to this. Companies House publishes the registered name, number and office address of a UK company as open data, and it is a good register for what it holds, but it holds no website, no email, no phone and no current staff. LinkedIn's own company page and people search are the official route to the people, one company at a time, behind a login. The company's website is the only source for its contact details and its naming convention.
Doing this by hand means guessing the domain, checking it is really theirs, opening the contact page, copying the addresses, opening LinkedIn, filtering to the leadership, and pasting names into a sheet. Company Intelligence Report does all of it for a hundred companies in one run and hands back one row per company that joins straight onto the list you started with, with the evidence for every judgement it made: which route found the website and what the page proved, which field tied each person to the company, and how many published addresses the naming convention was read from.
📊 What data can I extract?
One row per company, whatever the outcome. Every field is present on every row.
| Field | What it holds |
|---|---|
🏢 companyName | The company as named in the report: your name, else the site's own name, else the domain |
📥 input | The entry exactly as you supplied it |
🚦 status | reported, empty or unresolved. Only reported rows are charged |
📝 reason | Why a row is unresolved or empty, in words you can act on |
🌐 domain, website | The registrable domain judged to be the company's own, and the homepage URL that answered |
🧭 resolutionMethod | website-verified, slug-exact, slug-corroborated or wikidata |
✅ resolutionEvidence | What the homepage proved: name-legal, name-core, registry, postcode, town, country. A domain you supplied carries supplied-website |
🎯 resolutionConfidence | Confidence in the website match from 0 to 1 |
🚫 rejectedCandidates | Up to five domains tried and refused, each with the reason |
🏷️ siteName, legalName, tagline | What the site calls itself, its declared legal name and strapline |
📄 description | The company's own description of itself |
🏭 industry | The industry the site declares |
👥 employeeRange | Headcount band from 1-10 to 10001+ |
📅 foundedYear | The founding year the site states |
🖼️ logoUrl | The logo the site declares |
📍 addresses | Postal addresses published on the site, structured where the markup allows |
🆔 registrationNumbers, vatNumbers | Company and VAT numbers printed on the site |
🗣️ languages | Languages the homepage declares |
📣 socials | One link per platform: linkedin, twitter, facebook, instagram, youtube, github, tiktok, crunchbase, bluesky, threads |
✉️ emails | Published addresses, each with its type (role, personal or unclassified), isFreeProvider and onSiteDomain |
📞 phones | Published numbers, each with its source (tel-link or text) and onSiteContext, false when the page attributes it to someone else |
🔤 emailPattern | The naming convention read from the site: first.last, first_last, first-last or flast |
📈 emailPatternConfidence, emailPatternBasedOn | The share of published personal addresses that follow it, and how many there were |
🧾 searchedAs | The company name the people search was run with |
👤 people | Each person's name, firstName, lastName, title, roleCategory, seniority, linkedinUrl, location, employerEvidence, evidence, email, emailCandidates and source |
🔢 peopleCount, contactCount | How many people, and how many published emails and own phone numbers, the report carries |
📚 pagesRead | The pages of the company site that were read |
⚠️ searchEngineChallenged | True when every engine challenged the people search, so the people section may be short |
💳 charged | Whether the row was charged. True only for reported rows |
🕒 retrievedAt | When the report was produced, ISO 8601 UTC |
💡 Why build a company intelligence report?
- Account research before a call. One row tells you what the company says it does, how big it says it is, where it is, who leads it and how to reach them.
- A target account list into a contact list. Paste fifty company names and get the website, the switchboard, the published mailboxes and the leadership team for each, joined onto your list by the
inputfield. - CRM enrichment. A record that holds only a company name comes back with a domain, a description, an industry, a headcount band, social profiles and named people.
- Due diligence on a supplier or a prospect. The legal name, registration number and VAT number as printed on their own site, next to the address and the people, with the evidence for the website match.
- Partnerships and press. Find the person who runs partnerships or communications, with an address built from the company's own convention, rather than writing to info@.
- Recruiting research. See who runs engineering or people at a company, what the company says about itself, and where it is.
🚀 How do I use Company Intelligence Report?
- Paste company names or domains, one per line, up to 100. Names are matched to their own website; domains are verified and used as given.
- Pick the departments for the people section. Leadership is the default and returns founders, chief officers, managing directors, vice presidents and directors.
- Set how many people you want per report, up to 20, and whether to include published contacts and firmographics.
- Run it. Each row is one company. Download as JSON, CSV or Excel, or read it over the API.
⬇️ Input
{"companies": ["Monzo Bank", "wise.com", "Octopus Energy"],"roles": ["leadership", "sales"],"maxPeoplePerCompany": 5,"includeContacts": true,"includeFirmographics": true}
- companies: names or domains, up to 100 per run. A name goes through the evidence gate and Wikidata. A domain is verified rather than guessed past.
- roles: leadership, sales, marketing, engineering, product, finance, operations, hr, any. Choose up to three; a longer list is refused by name so nothing is silently skipped.
- maxPeoplePerCompany: 1 to 20. The price per report is the same however many people it carries.
- includeContacts: collect published emails and phones. The naming convention is read from the same pages either way.
- includeFirmographics: collect the description, industry, size, founding year, legal name, addresses, registration numbers and social profiles.
⬆️ Output
Table view
| Company | Status | Domain | Description | Industry | Size | Contacts | People | Email pattern | Evidence | Reason |
|---|---|---|---|---|---|---|---|---|---|---|
| Monzo Bank | reported | monzo.com | Making money work for everyone | 0 | 2 | name-legal+registry | ||||
| Wise | reported | wise.com | 150+ countries, 40 currencies, one account. | 1 | 1 | supplied-website |
JSON
A real row from a run of the prefill, nulls included, so you can see what a large site with a quiet contact page actually returns:
{"companyName": "Wise","input": "wise.com","status": "reported","reason": null,"domain": "wise.com","website": "https://wise.com/","resolutionMethod": "website-verified","resolutionEvidence": "supplied-website","resolutionConfidence": 1,"rejectedCandidates": [],"siteName": "Wise","legalName": null,"description": "150+ countries, 40 currencies, one account. Save when you send, spend and manage your money internationally.","tagline": "Wise: The international account. Money without borders","industry": null,"employeeRange": null,"foundedYear": 2011,"logoUrl": "https://wise.com/public-resources/assets/logos/wise-personal/logo.png","addresses": [],"registrationNumbers": [],"vatNumbers": [],"languages": ["de","de-at","de-ch","en","en-ae","en-au","en-bg","en-ca","en-dk","en-ee","en-fi","en-gb","en-gr","en-hk","en-hr","en-ie","en-il","en-in","en-kr","en-my","en-nl","en-no","en-nz","en-ph","en-se","en-sg","en-us","en-za","es","es-cl","es-mx","fr","fr-be","fr-lu","hu","id","it","ja","pl","pt","pt-br","ro","ru","th","tr"],"socials": {"linkedin": "https://www.linkedin.com/company/wiseaccount","twitter": "https://twitter.com/wise","facebook": "https://www.facebook.com/wise","instagram": "https://www.instagram.com/wiseaccount","youtube": "https://www.youtube.com/c/wiseaccount"},"emails": [{"email": "ouvidoria@wise.com","type": "unclassified","isFreeProvider": false,"onSiteDomain": true}],"phones": [{"phone": "08008782802","source": "tel-link","onSiteContext": false}],"emailPattern": null,"emailPatternConfidence": null,"emailPatternBasedOn": 0,"searchedAs": "Wise","people": [{"name": "Steve Naudé","firstName": "Steve","lastName": "Naudé","title": "Managing Director of Wise Platform","roleCategory": "leadership","seniority": "c-level","linkedinUrl": "https://www.linkedin.com/in/steve-naude","location": "United Kingdom","employerEvidence": "Wise","evidence": "experience","email": "steve.naude@wise.com","emailCandidates": ["steve.naude@wise.com","stevenaude@wise.com","snaude@wise.com","steve_naude@wise.com","steve-naude@wise.com","steven@wise.com","steve@wise.com","naude@wise.com"],"source": "brave"}],"peopleCount": 1,"contactCount": 1,"pagesRead": ["https://wise.com/","https://wise.com/us/business/contact/","https://wise.com/us/about/our-story","https://wise.com/gb/about/wise-reviews","https://wise.com/en/legal/terms-and-conditions"],"searchEngineChallenged": false,"charged": true,"retrievedAt": "2026-08-27T10:07:16.673Z"}
🧭 How the website is found
A name is never handed to a search engine and the first hit taken. Candidate domains are built from the name itself, monzobank.com, monzo-bank.com and so on, and each homepage is read through the evidence gate: the page has to carry the company name, has to not be a parked domain or a business directory, and where the name appears without its legal form has to carry something else that ties it to this company. A name the slug route cannot settle goes to Wikidata, which states official websites as a claim rather than inferring them; a registry claim counts as corroboration, and the homepage still has to answer and carry the name. A domain that passes the gate for two different companies in one run is a site that publishes company data, not anybody's own website, and it is refused for the second one.
Every rejected candidate comes back in rejectedCandidates with the reason, and a company nothing resolved comes back unresolved with the reason in words, so an unresolved row is a finding rather than a blank. A domain you supply is verified rather than guessed past: it has to answer with a real page, not a parked domain, a directory or an anti-bot interstitial.
✉️ How the people and their emails are built
Two public search engines are asked for LinkedIn profiles that name the company, in the departments you chose. A profile is kept only when the company appears as a whole phrase in the listing's Experience field, in the current headline with no former or previously in front of it, or in the person's own profile summary. A listing whose Experience field names a different employer is dropped whatever the rest says, and so is a search result that is an article or an event page rather than the profile itself. Where the name is shared by several firms in the hit set, only the Experience field counts. The evidence field on each person says which signal matched, and experience is the one to trust most.
The naming convention comes from the company's own site. Every published address is collected, role mailboxes such as info@ and sales@ are set aside, and the personal ones reveal the convention by shape: jane.smith is first.last, jane_smith is first_last, j.smith is flast. The convention that explains the most addresses is applied to each person and emailPatternConfidence is the share it explained. Most company sites publish only role addresses, in which case first.last is assumed because it is the most common convention, emailPattern is null to say so, and each person's emailCandidates lists every convention so you can verify or try the alternatives. Treat the address as a strong first guess to verify, not as a verified fact.
📏 Limits
Run timeout. A run stops starting new work shortly before its own time limit and finishes cleanly with whatever it has, naming what it did not reach. The Actor's default is 3600 seconds, which is enough for the largest input it accepts. If you set a shorter limit in your own run settings, integration or API call, expect fewer results and a note in the run's status message saying so. You pay per delivered result rather than per minute, so a generous timeout costs you nothing.
- Up to 100 companies per run, 20 people per report, 3 departments per company.
- Each company takes roughly 15 to 60 seconds depending on how many candidate domains had to be tried and how many departments were searched. The run stops starting new companies a minute before its own timeout and the status message says how many were not attempted, so give a long list a timeout of an hour or split it across runs.
- Firmographics are what the company publishes on its own pages. A site with no schema.org markup and no about page returns fewer of them.
- People come from public search listings. A company with few profiles that name it, or a very common name, returns fewer. Search engines occasionally challenge a busy address; the query is retried once through Apify Proxy on a fresh address at no extra cost to you, and if both engines still challenge,
searchEngineChallengedis set on the row. - Emails are built, not verified. The confidence and the candidate list are there so you can verify with the tool of your choice.
- Runs stop cleanly at your per run spending cap. Everything delivered before the cap is kept.
⏱️ How long does a run take?
Measured on real runs, so you can tell a normal run from one that has stalled.
| Input size | Typical run time |
|---|---|
| 2 companies | about 20 seconds |
| 20 companies | about 3 minutes |
The first few seconds of any run are the container starting rather than the work. A run is never silently stuck: progress is logged as it goes, and if it runs out of time it stops early, keeps everything collected so far and says in the status message what was left.
💰 How much does it cost?
| Event | Price |
|---|---|
| Company report | $0.05 |
| Actor start | $0.00005 per run |
Charged once per report delivered. A report is delivered when the company resolved to its own website and the report carries at least one person or at least one published email or own phone number. A company that could not be matched to its own website comes back unresolved with the reason and costs nothing. A website that resolved but carried nobody and no contact comes back with whatever firmographics it did have, marked empty, and costs nothing either. The price per report is the same whether it carries one person or twenty, one page or five.
So one report costs $0.05005 including the run start, and a list of 100 companies that all come back reported costs $5.00005.
Paid Apify plans pay less per report: $0.0425 on Bronze, $0.035 on Silver, $0.03 on Gold, $0.025 on Platinum and $0.02 on Diamond. The Apify listing always shows the current rates.
🔌 Integrations
Schedule it to refresh a target account list weekly, feed it from a Google Sheet of company names, and send the rows to Google Sheets, Airtable, Slack, Make, Zapier or a webhook through Apify integrations. Each row's domain is the input for Company Jobs when you want the vacancies as well, and each person's firstName, lastName and domain fit the people input of Company Email Finder with verifyMx on, which checks the domain can receive mail.
AI agents can call it through the Apify MCP server as spookyweb/company-intelligence-report. The input schema is the tool definition, the output schema tells the agent where the rows are, and every row carries its evidence fields so the agent can judge the website match and each person's attribution itself. An agent asked to research a company gets the whole answer from one call.
🔗 Using Company Intelligence Report with the Apify API
curl -X POST "https://api.apify.com/v2/acts/spookyweb~company-intelligence-report/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"companies": ["Monzo Bank", "wise.com"], "roles": ["leadership"], "maxPeoplePerCompany": 5}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('spookyweb/company-intelligence-report').call({companies: ['Monzo Bank', 'wise.com', 'Octopus Energy'],roles: ['leadership', 'sales'],maxPeoplePerCompany: 5,});const { items } = await client.dataset(run.defaultDatasetId).listItems();
See the Apify API documentation for scheduling, webhooks and dataset exports.
❓ FAQ
Does it log in to LinkedIn or use a paid database?
No. It never fetches a LinkedIn page and there is no purchased database behind it. The people come from what public search engines already list about public profiles, and everything else comes from the company's own website and from Wikidata.
Why did a company come back unresolved?
Either no candidate domain built from the name answered with a page that proved it belongs to that company, or Wikidata holds no official website claim for it, or the domain it would have resolved to already belongs to another company in your list. The reason field says which and rejectedCandidates lists every domain that was tried. Supplying the domain instead of the name resolves it directly.
Why was a report marked empty and not charged?
The website resolved but the pages read carried no email, no phone attributed to the company itself, and the search engines listed nobody whose profile ties them to the company in the departments you chose. The firmographics that were found are still on the row. Try the any department, or the company's most common trading name, or check whether the site keeps its contact details behind a script.
How accurate are the emails?
They are built, not verified against the mail server. When the site publishes personal addresses the convention is read from them and emailPatternConfidence is the share of addresses it explained. When it does not, which is the usual case, each address is the first.last guess and emailPattern is null. Either way emailCandidates gives you the alternatives, and an email verification tool is the right next step before sending.
What does resolutionEvidence mean?
Which signals on the homepage proved the site belongs to the company. name-legal means the full name including its legal form was on the page. name-core means the name without its legal form was on the page and something else corroborated it: registry means a Wikidata claim, and postcode, town and country mean those were found too. A domain you supplied is website-verified with confidence 1.
Can I give it a mix of names and domains?
Yes. Each entry is judged on its own: anything that looks like a domain is verified and used, anything else is resolved as a name. The input field carries the entry as you gave it so the rows line back up with your list.
What happens at my spending cap?
The run charges up to the cap and stops. Every report delivered before the cap is kept, a report that could not be billed is withheld rather than delivered unpaid, and the status message says how many companies were not attempted.
⚖️ Is it legal to build a company intelligence report?
It collects information companies publish on their own websites, official website claims from Wikidata, and information people publish on a public professional profile that search engines index. That is generally lawful to collect. Personal data is still personal data: if you contact the people it finds, you are responsible for having a lawful basis, honouring opt outs, and complying with GDPR, the UK PECR rules, CAN-SPAM or whichever regime applies to you and to them. Use it for business contact, not for anything a person would find intrusive.
👍 Your feedback
If a company resolves to the wrong website, comes back with the wrong people, or a naming convention is read wrongly, open an issue on the Issues tab with the company and what you expected. Custom versions, a different output shape, or an integration built for your pipeline are all possible: get in touch.
🔎 You might also like
- Company Domain Finder: company name in, website out, with the evidence.
- Company Data Enrichment: firmographics and technology stack from a company domain.
- Decision Maker Finder: one row per person at a company, with a built email.
- Company Email Finder: the addresses a company publishes, its naming convention and an MX check.
- Lead List Enricher: a pasted company list enriched with website, contacts and firmographics in one run.
- Website Contact Scraper: emails, phones and socials from any website.