Website Lead Intelligence โ Find the Right Person, Verified
Pricing
from $35.00 / 1,000 results
Website Lead Intelligence โ Find the Right Person, Verified
Website Lead Intelligence turns company websites into send-ready B2B leads โ find the right person, verified emails, decision-makers, buying committee, lead scoring and a clear next action for cold email outreach, CRM enrichment and sales prospecting.
Pricing
from $35.00 / 1,000 results
Rating
0.0
(0)
Developer
Data Minds
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
Website Lead Intelligence is an Apify Actor that turns a list of company websites into a scored, send-ready outreach list: website contact scraper output with emails, named decision makers, phones and a clear next action per lead. Run it from $0.035 per website on the Gold, Platinum and Diamond plans ($0.05 on the Free plan), and export JSON, CSV or Excel. ๐ Try it free
What can Website Lead Intelligence do?
- ๐ฏ Find the right person - named contacts ranked by seniority, with the best contact picked for you.
- โ Check emails before you send - optional deliverability checks and catch-all detection to reduce bounces.
- ๐ฆ Get a clear next action - every lead gets a decision tier (A, B or C) and a send decision:
SEND_NOW,VERIFY_FIRST,ENRICH_MOREorSKIP. - ๐งฉ Fill missing emails - optionally generate likely addresses for named people who publish none, then check them.
- ๐ข Map the buying committee - decision makers, influencers, champions and blockers, plus department coverage.
- ๐ Start from names or phrases - paste business names or footer phrases instead of URLs.
- ๐ Monitor changes - repeat runs on the same list flag new hires, new emails and tier upgrades.
- ๐ค Export to your outreach tool - ready-to-import CSV files, a CRM webhook, Notion and Slack digests, plus API, schedules and webhooks on Apify.
What data can I extract from company websites?
| Field | Description |
|---|---|
๐ recordType, url, domain, schemaVersion, scrapedAt, pagesScraped | Record type (always lead), the website, its domain, the output version, scrape time and the number of pages read. |
๐ง emails, personalEmails, genericEmails, verifiedEmails, generatedEmails, emailSources | All emails found, split into personal and role-based (info@, hello@), with check results, generated addresses and where each email was found. |
๐ค contacts, bestContact, topContacts | Named people with job title, email and LinkedIn link where published, the best contact and the top three. |
๐ phones, socialLinks, addresses, businessHours, contactFormDetected, companyMeta | Phone numbers, social profile links, postal addresses, opening hours, whether a contact form exists, and company name, description, logo, language, industry, founding date and size where published. |
๐ leadScore, dataQuality, confidence, coverage, decision, domainPurity, summary, companyType | Lead score from 0 to 100, data quality, confidence breakdown, coverage, decision tier, share of emails on the company domain and company type. |
๐ฆ sendDecision, sendPlan, isSendable, isContactable, bounceRiskBucket, decisionSignals, negativeSignals, confidenceConflict, catchAllDetected, catchAllImplication | The next action, a send plan, bounce-risk bucket and the signals behind them. |
๐ง buyingCommittee, departmentCoverage, companyIntelligence, contactDifficulty, painSignals, opportunityTriggers, whyNow, whyThisLead, firstTouch, accountReadiness, pipelineValue, pipelineState, methodology | Account intelligence: committee roles, company maturity and trust signals, timing, a first-touch opening line and a pipeline priority. |
๐ botProtection, jsWarning, failureType, failureContext, scrapeError, recoveryPlan, plainEnglishSummary, recommendation | Notes when a site could not be fully read, what to try next, and a one-line summary. |
๐ firstSeenAt, lastSeenAt, changeFlags, changeSinceLastRun, accountMomentum, accountTimeline, momentumTrend, crmPushResult | Change monitoring and CRM delivery results. Filled only when those options are on. |
It reads publicly visible pages only. Fields stay empty when a website does not publish the information.
Which lead research tasks does it cover?
Use it as a contact details scraper and an email extractor from website pages. It also serves as an email and phone extractor in one run, and as a contact details extractor.
As a decision maker email finder, it names the person to contact. As a company contact finder, it also lists the wider team.
It doubles as a business contact scraper and a website lead finder. Teams use it for sales prospecting. It also helps with lead research.
It works as lead enrichment for CRM records, including B2B lead enrichment from a bare domain. It is also a contact info scraper that needs only a domain.
Built-in lead scoring ranks every website. Lead scoring for outreach tells you who to contact first.
The email verifier checks each address. Email validation and catch-all domain detection protect your sender reputation. You can also check if an email address is valid before sending.
Clean cold email list data to reduce email bounce rate. Find email addresses for named contacts when none are published.
Work as an email finder or an email address finder, depending on your list. Use it as a company email finder or a domain email finder when you only have domains.
Get emails from a list of domains, and find phone numbers from a company website. Extract social links from websites in the same run.
Find founder name from website pages. The team page scraper reads company team page names and titles.
Find company website from business name, or find companies by footer phrase.
Use it as a lead generation scraper and a lead list builder. It is also a prospecting tool for outreach teams.
Monitor companies for changes. Schedule lead research runs. CRM webhook lead delivery is built in. So is a Slack digest of top leads.
What can you do with the data from company websites?
๐ฏ Build a B2B prospect list from website URLs
- Paste company websites into
urlsand setgoaltoquick-outreach. - Set
autoFiltertosend-now-onlyto keep only send-ready leads. - Pick a format in
exportFormats(for exampleinstantlyorhubspot) and import the CSV.
๐ก Verify emails before cold outreach
- Set
goaltohigh-deliverabilityandconfidenceModetosafe. - Keep
verifyEmailson, then filter onbounceRiskBucketandcatchAllDetected. - Send only to leads with
isSendableset to true.
๐ Find the right person to contact at a company
- Keep
includeNameson and raisemaxPagesPerDomainfor larger sites. - Turn on
fillMissingEmailsto generate checked addresses for named people. - Read
bestContactandbuyingCommitteeto pick who to contact first.
๐ Monitor target accounts
- Turn on
compareToPrevRunand set amonitorStateKey. - Schedule the same list to run weekly.
- Read
changeFlagsfor new decision makers, new personal emails and tier upgrades.
How do I use Website Lead Intelligence?
- Open Website Lead Intelligence on Apify and click Try for free.
- Paste company websites into Website URLs, or add business names or footer phrases.
- Choose a Goal, or set the preset and confidence mode yourself.
- Optionally turn on email checks, missing-email fill-in, filters and CSV exports.
- Click Start and watch leads appear in the Output tab as each website finishes.
- Open the Dataset tab to export JSON, CSV or Excel, or download the final ranked file from the key-value store.
How much does it cost to scrape company websites?
Website Lead Intelligence uses pay-per-event pricing: you pay for each website result saved to the dataset, plus Apify platform usage billed in addition.
| Plan | Price per website result | Per 1,000 results |
|---|---|---|
| ๐ Free | $0.05 | $50 |
| ๐ฅ Bronze | $0.045 | $45 |
| ๐ฅ Silver | $0.04 | $40 |
| ๐ฅ Gold, Platinum and Diamond | $0.035 | $35 |
Each run also pays a start event of $0.00005 per GB of memory, minimum one. The default memory is 4096 MB (4 GB), so the start charge is 4 events, $0.0002 per run.
Worked example: 200 websites on the Free plan cost 200 x $0.05 = $10.00, plus $0.0002 for the start. On the Gold plan the same 200 websites cost 200 x $0.035 = $7.00, plus $0.0002.
Is scraping company websites free?
You can try the Actor on your Apify plan and pay only for saved results, plus platform usage billed in addition. The price per result depends on your plan, from $0.05 on Free to $0.035 on Gold, Platinum and Diamond. You can also set a maximum cost per run, so spending stays under your own limit.
How much does Website Lead Intelligence cost per 1,000 results?
One thousand website results cost $50 on the Free plan, $45 on Bronze, $40 on Silver and $35 on Gold, Platinum and Diamond. Each saved website record counts as one result, including records for websites that could not be read. Platform usage is billed in addition, and each run adds a $0.0002 start event.
Input
Provide at least one of urls, knownNames or footerPhrases; otherwise the run stops with an input message. Everything else has a default. Fields marked "preset" can be left unset so your preset decides.
| Field | Type | Required | Description | Default / example |
|---|---|---|---|---|
goal | string | No | Outcome for the run: quick-outreach, high-deliverability or max-coverage. Sets preset and confidence mode for you. | unset |
preset | string | No | Scan depth: auto, fast, balanced or maximum. | auto |
confidenceMode | string | No | safe, balanced or aggressive appetite for which emails make your list. | goal default, else balanced |
urls | array | One of three | Company websites, up to 500. Each domain gives one lead record. | ["https://example.com"] |
knownNames | array | One of three | Business names resolved to their official websites. | none |
footerPhrases | array | One of three | Distinctive phrases used to find similar businesses. | none |
nameSuffix | string | No | Text added to every name search, such as plumbing. | empty |
discoveryCountry | string | No | US, UK, CA, AU or EU for names and phrases. | US |
maxResultsPerQuery | integer | No | Search results per footer phrase, 10 to 100. | 50 |
maxDiscoveredDomains | integer | No | Cap on discovered websites, 10 to 5000. | 1000 |
excludeDomains | array | No | Domains to always skip. | none |
maxPagesPerDomain | integer | No | Pages read per website, 1 to 20 (preset). | preset value |
deepScan | boolean | No | Also read legal, imprint and support pages (preset). | preset value |
includeNames | boolean | No | Extract named contacts. | true |
includeSocials | boolean | No | Extract social profile links. | true |
sitemapDiscovery | boolean | No | Use the sitemap to find more team and contact pages. | true |
customProbePaths | array | No | Extra page paths to check, such as /meet-the-team. | none |
respectRobotsTxt | boolean | No | Honor each site's robots.txt rules. | true |
crawlDelayMs | integer | No | Minimum wait between requests to one site, 0 to 10000 ms. | 0 |
verifyEmails | boolean | No | Check email deliverability and flag catch-all domains (preset). | preset value |
emailVerificationProvider | string | No | Email check source: the free built-in check, a paid provider that needs its own API key, or none to skip checks. | free built-in |
fillMissingEmails | boolean | No | Generate and check likely emails for named contacts (preset). | preset value |
maxEmailPatternsToVerify | integer | No | Generated addresses checked per site, 0 to 20. | 3 |
enableProFallback | boolean | No | Page rendering for JavaScript-heavy sites (preset). | preset value |
jsRenderProvider | string | No | Rendering option for JavaScript-heavy sites, or none to disable it. | built-in browser |
compareToPrevRun | boolean | No | Compare with the previous run on the same watchlist. | false |
monitorStateKey | string | No | Name of the watchlist; derived from the domain list when blank. | blank |
autoFilter | string | No | none, send-now-only, safe-only or max-leads. | none |
outputProfile | string | No | full, standard or minimal field set. | full |
minLeadScore | integer | No | Drop websites scoring below this value, 0 to 100. | none |
requirePersonalEmail | boolean | No | Keep only leads with a personal email (default follows confidence mode). | unset |
companyTypes | array | No | Keep only listed industries such as saas or agency. | all |
exportFormats | array | No | CSV exports: instantly, smartlead, lemlist, apollo, hubspot, salesforce, mailshake, outreach, woodpecker, generic. | none |
crmWebhookUrl | string | No | Every lead is sent here as it is produced. | none |
crmFormat | string | No | generic-json, hubspot or salesforce body. | generic-json |
crmOnlyTierA | boolean | No | Send only Tier A leads to the CRM. | false |
notionConnector | boolean | No | Post a digest to Notion (needs NOTION_API_KEY). | false |
notionDatabaseId | string | No | Notion database to post to. | none |
notionArchiveProfile | string | No | summary page or per-lead pages. | summary |
slackConnector | boolean | No | Post a digest to Slack (needs SLACK_BOT_TOKEN). | false |
slackChannel | string | No | Channel such as #sales-leads. | #general |
deliverTopN | integer | No | Leads in the Notion or Slack digest, 1 to 50. | 10 |
proxyConfiguration | object | No | Optional connection settings. | {"useApifyProxy": false} |
concurrency | integer | No | Websites processed in parallel, 1 to 50. | 10 |
retryAttempts | integer | No | Retries per request, 1 to 10. | 3 |
retryBackoffBaseSeconds | number | No | Starting delay between retries, 0 to 10. | 0.5 |
requestTimeoutSeconds | integer | No | Seconds to wait for one response, 5 to 120. | 20 |
searchProvider | string | No | Search source used for names and phrases: the free default, a paid option that needs its own API key, or none to turn discovery off. | free default |
userAgent | string | No | Override the default user agent. | built-in |
dryRun | boolean | No | Skips all outbound requests to test your input. | false |
Presets set these defaults when the field is unset: fast reads 3 pages without email checks; balanced reads 5 pages with checks and browser rendering; maximum reads 10 pages with deep scan, checks, fill-in and browser rendering.
Example input:
{"goal": "high-deliverability","urls": ["https://example.com", "https://example.org"],"includeNames": true,"autoFilter": "none","outputProfile": "full","exportFormats": ["hubspot"]}
Output
Each website gives one record in the Apify Dataset as soon as it is processed, so the Output tab fills while the run is still going. Open the six views (Overview, Contacts and Company, Scoring and Confidence, Send Decision and Recovery, Account Intelligence, Change Monitoring) or export JSON, CSV, Excel, XML or HTML.
When the batch finishes, the key-value store also holds OUTPUT (every lead in one JSON file, ranked across the batch, with pipelineValue filled in), RUN_SUMMARY (website and lead counts, send-ready leads, verified emails, elapsed seconds) and one EXPORT_<FORMAT> CSV per chosen export format.
A trimmed lead record with example values:
{"recordType": "lead","url": "https://example.com","domain": "example.com","emails": ["jane.doe@example.com", "info@example.com"],"personalEmails": ["jane.doe@example.com"],"genericEmails": ["info@example.com"],"phones": ["+1 555 010 0100"],"contacts": [{"name": "Jane Doe","firstName": "Jane","lastName": "Doe","title": "Chief Executive Officer","email": "jane.doe@example.com","linkedinUrl": "https://www.linkedin.com/in/example","source": "page:/team"}],"socialLinks": {"linkedin": "https://www.linkedin.com/company/example"},"addresses": [],"businessHours": [],"companyMeta": {"language": "en", "name": "Example Co", "description": "Example description", "logo": null, "industry": null, "foundingDate": null, "employeeCount": null},"pagesScraped": 5,"leadScore": 80,"dataQuality": "high","bestContact": {"name": "Jane Doe", "firstName": "Jane", "lastName": "Doe", "title": "Chief Executive Officer", "email": "jane.doe@example.com", "linkedinUrl": null, "score": 95, "reasons": ["senior title", "personal email"]},"topContacts": [{"name": "Jane Doe", "title": "Chief Executive Officer", "email": "jane.doe@example.com", "score": 95, "reasons": ["senior title"]}],"companyType": "saas","recommendation": null,"confidence": {"emailConfidence": 85, "contactConfidence": 70, "overallConfidence": 78, "confidenceLevel": "high", "riskFlags": [], "components": {"finalScore": 78}},"coverage": {"emails": "complete", "contacts": "partial", "phones": "partial", "socials": "found", "addresses": "missing", "contactForm": true},"decision": {"tier": "A", "reason": "Ready to contact โ verified email + senior contact"},"contactFormDetected": true,"domainPurity": 100,"summary": {"primaryEmail": "jane.doe@example.com", "primaryContact": "Jane Doe", "title": "Chief Executive Officer", "decision": "A", "confidence": 78, "leadScore": 80},"scrapedAt": "2026-01-01T00:00:00+00:00","emailSources": [{"email": "jane.doe@example.com", "foundOn": "/team", "sourceUrl": "https://example.com/team", "sourceType": "team"}],"botProtection": {"detected": false, "type": null, "recommendation": null},"buyingCommittee": {"decisionMakers": [], "influencers": [], "champions": [], "blockers": [], "size": 1, "reachableStakeholders": 1, "multiThreadReady": false},"catchAllDetected": false,"catchAllImplication": null,"isContactable": true,"schemaVersion": "2.2.0","sendDecision": {"action": "SEND_NOW", "riskLevel": "low", "reasons": ["Verified personal email with acceptable confidence"]},"sendPlan": {"status": "ready", "priority": 80, "safeToAutomate": true, "channel": "multi-channel", "followUpStrategy": "Send now; standard 3-touch cadence over 7 days if no reply.", "personalizationHint": null, "openingAngle": "role-based", "replyLikelihoodHeuristic": 0.65, "methodology": "..."},"recoveryPlan": null,"plainEnglishSummary": "Example Co โ best contact is Jane Doe (Chief Executive Officer), tier A, action SEND_NOW.","firstTouch": {"angle": "role-based", "hook": "Chief Executive Officer", "line": "Hi Jane, noticed your role as Chief Executive Officer at a saas company โ", "methodology": "..."},"whyThisLead": [],"bounceRiskBucket": "low","decisionSignals": ["high-confidence", "verified-email-found", "tier-a", "send-now"],"negativeSignals": [],"confidenceConflict": null,"failureContext": null,"companyIntelligence": {"maturityScore": 50, "maturityBand": "established", "trustScore": 70, "growthSignals": [], "intentSignals": [], "relationshipSignals": [], "competitorsMentioned": [], "pages": {"team": true}},"departmentCoverage": {"byDepartment": {"executive": 1}, "totalClassified": 1, "executiveCoverage": "complete", "salesCoverage": "missing", "marketingCoverage": "missing"},"contactDifficulty": "medium","painSignals": [],"accountReadiness": {"score": 70, "band": "hot", "reasons": ["directly contactable", "decision tier A"]},"methodology": "...","isSendable": true,"pipelineValue": null,"accountMomentum": null,"accountTimeline": null,"momentumTrend": null,"opportunityTriggers": [],"whyNow": {"score": 0, "type": null, "scores": {}, "signals": [], "recommendedPersona": null, "summary": "No strong timing signal detected this run."},"pipelineState": {"enriched": true, "emailVerified": true, "emailsFilled": false, "crmSynced": false, "deduped": true},"verifiedEmails": [{"email": "jane.doe@example.com", "status": "valid", "confidence": 90, "reason": "example", "catch_all": false}],"generatedEmails": [],"failureType": null,"scrapeError": null,"jsWarning": null,"firstSeenAt": null,"lastSeenAt": null,"changeFlags": null,"changeSinceLastRun": null,"crmPushResult": null}
Notes and limitations
- A website that cannot be read still gets a record with
failureType,scrapeErrorand arecoveryPlan, and it counts as a saved result. - Dataset rows stream live, so batch-wide fields such as
pipelineValueare null there. The final rankedOUTPUTfile has them filled in. outputProfileset tostandardorminimalremoves fields from every record;minimalkeeps only the fields needed to decide who to contact.- Named contacts come from team and about pages, so small sites without such pages return fewer people.
- Monitoring fields (
firstSeenAt,changeFlagsand similar) are filled only whencompareToPrevRunis on; CRM results only whencrmWebhookUrlis set. - Scores and the send decision are rules-based estimates for ranking within a batch, not a prediction that someone will reply.
- Email checks cannot be fully reliable on catch-all domains.
FAQ
Is it legal to scrape contact data for lead intelligence?
Website Lead Intelligence reads only publicly visible pages. Whether using the data is lawful depends on your country, the data you keep and how you contact people, including privacy rules such as GDPR and CCPA. This is not legal advice. Read the Apify guide at https://blog.apify.com/is-web-scraping-legal/ and ask a lawyer if unsure.
Do I need an account, cookies or an API key?
You need only an Apify account. The Actor does not ask for cookies or a login to any website. API keys are needed only for optional paid features: a paid email check provider, a paid search source, and Notion or Slack delivery. The default setup uses none of them and works with just your list.
How many websites can I process per run?
You can paste up to 500 website URLs per run, and each domain gives one lead record. Business names and footer phrases can add up to 5000 discovered websites, set by maxDiscoveredDomains. Higher concurrency and fewer pages per site make runs shorter, while deeper scans and email checks take longer.
Can I export leads to CSV, Excel or my outreach tool?
Yes. Export the dataset as JSON, CSV or Excel from the Dataset tab, or choose exportFormats for ready-to-import CSV files for Instantly, Smartlead, Lemlist, Apollo, HubSpot, Salesforce, Mailshake, Outreach and Woodpecker. They are saved in the key-value store as EXPORT_ files. A CRM webhook can also receive every lead.
Can I schedule runs or connect integrations?
Yes. Use Apify schedules to run the same list weekly, and webhooks or integrations to pass results to other tools. Turn on compareToPrevRun with a monitorStateKey to see new hires, new personal emails and tier upgrades between runs. Notion and Slack digests and the CRM webhook are built into the input.
Can I use Website Lead Intelligence with the Apify API or MCP?
Yes. Every Apify Actor can be started, scheduled and read through the Apify API, and exposed to AI agents through an MCP server, with no extra setup in this Actor. The API tab shows ready-made calls for your input. The full reference is at https://docs.apify.com/api/v2.
Why am I getting fewer leads or emails than expected?
Common reasons are filters such as autoFilter, minLeadScore, requirePersonalEmail or companyTypes, a website that blocked the request, or pages that publish no emails. Raise maxPagesPerDomain, turn on deepScan and page rendering, and check failureType and recoveryPlan on affected records. Small sites with few public pages simply have less to find.
Website Lead Intelligence not working?
First check the run log, which gives a short message and a next step. Then check failureType and recoveryPlan on the lead record and try a lower concurrency or a longer requestTimeoutSeconds. If it still fails, open the Issues tab on the Actor page and include your run link, and we will look into it.
Related Actors
| Actor | Use it to |
|---|---|
| ๐ Google Maps Leads Scraper | Scrape Google Maps into business leads with name, address, phone, website, rating and categories, then feed the websites into this Actor. |
| ๐ง Google Maps Email And Phone Number Scraper | Find business emails and phone numbers behind Google Maps places, with email verification and dedupe. |
Support and disclaimer
Found a bug or need a feature? Open an issue in the Issues tab of this Actor. For custom solutions, integrations or questions, contact hello.dataminds@gmail.com. Website Lead Intelligence is independent and not affiliated with any website it reads; all trademarks belong to their owners. It collects publicly available data, and you are responsible for complying with applicable laws and each website's terms.
Last updated: 2026-10-17