Business Email, Phone & Contact Details Scraper
Pricing
$0.005 / contact found
Business Email, Phone & Contact Details Scraper
Give it a list of website URLs and get back one row per URL: emails (each with the page it was found on, its type and whether it is on the site's own domain), phones, social profiles and postal address, plus a status that says why a site had nothing.
Pricing
$0.005 / contact found
Rating
0.0
(0)
Developer
ScrapeBench
Maintained by CommunityActor stats
0
Bookmarked
63
Total users
8
Monthly active users
a day ago
Last modified
Categories
Features
Share
Business Contact Finder: Email, Phone & Website by Name or URL
Pain points
- A list of business names (a licence roll, a permit list, a trade-show or supplier list) has no phone, no website and no email.
- Looking each one up by hand is a search, a click and a copy-paste per business, and the first result is often a different company with a similar name.
- Email, phone, socials and address are scattered across a site's contact/about/team pages, and emails are often obfuscated.
- Naive scrapers return junk: template placeholders, tracking noise, franchise addresses and look-alike businesses.
What we solve
- Turn a list of business names with city and state into phone, website, address and email in one run.
- Turn a list of website URLs into emails, phones, social links and address.
- A strict name match: same state always, the same city or ZIP when the name is only a partial match, and a trade named on both sides must agree, so a look-alike business is left out rather than billed.
- Crawls the homepage plus contact/about/team pages, de-obfuscates common email tricks and flags franchise/corporate addresses.
Summary
Turn a list of businesses into contacts, whether you have their names or their websites. For a name (with city and state, a ZIP helps) the actor finds the business and returns its phone, website and street address, plus the name it is listed under so you can see the match; then it reads that website's homepage and contact/about/team pages for emails. For a website URL it goes straight to the site: emails (de-obfuscated, template junk removed, classified generic, role or personal), phones, social profiles and a best-effort address. The name match is deliberately strict: a business is only accepted in your state, a partial name only in your city or ZIP, and a plumber never matches a landscaper with the same first word. A no-match row is free. Feed it a licence roll, a permit list, a CRM export or another scraper's output; send your own id with each row and it comes back on the result.
Who it's for
- Sales and lead-gen teams with a list of business names and no contacts
- Teams working licence rolls, permit lists, trade-show or supplier lists
- CRM and data teams filling in missing phones and emails
- Agencies preparing outreach lists from company websites
How to use
Set the input, run the actor, and collect results from the run's dataset (export to JSON/CSV/Excel, or pull via the Apify API). Example input:
{"businesses": ["Raven Enterprises, Lansing, MI","Granger Construction, Lansing, MI 48911"],"urls": ["https://basecamp.com"],"maxPagesPerSite": 6}
See Inputs below for every available field.
What you get
One row per record:
| Field | Description |
|---|---|
business_name | The business name you sent (business rows) |
id | Your own id, echoed back when you sent rows with an id |
matched_name | The name the business is listed under, so you can check the match |
phones | Phone numbers: the business's listed phone first, then any found on its website |
website | The business's website (after redirects) |
address | Street address, city, state and ZIP |
emails | Emails found on the business's own website: {email, source_url, type (generic/role/personal), confidence (high/medium)} |
socials | Social-profile links found on the website: {platform, url} |
categories | What kind of business it is, as listed (business rows) |
email_domain_matches_website | False = a franchise/corporate email, not this business's own |
status | found |
source_url | URL rows: the URL exactly as you gave it, so every row joins back to your list. Business rows: the website found |
Sample:
{"business_name": "Raven Enterprises","id": null,"matched_name": "Raven Enterprises Building & Remodeling","phones": ["+15173746000"],"website": "https://www.ravenremodelingoflansing.com/","address": "310 S Howard St, Lansing, MI 48912","emails": [],"socials": [],"categories": [],"email_domain_matches_website": null,"status": "no_email","source_url": "https://www.ravenremodelingoflansing.com/"}
Inputs
| Field | Required | Type | Default | Description |
|---|---|---|---|---|
businesses | no | array | ["Raven Enterprises, Lansing, MI", "Granger Construction, Lansing, MI"] | US businesses to look up by name, one per line: name, city and state, e.g. "Raven Enterprises, Lansing, MI" (a ZIP code helps: "Raven Enterprises, Lansing, MI 48912"). The state is required. Each business found returns its phone, website and address, and its website is then read for emails. Via the API you can also send rows: {"name", "city", "state", "zip", "website", "id"}; your id comes back on the row, and a row that already has a website skips the name lookup. |
urls | no | array | — | Websites to crawl for contact details (email, phone, social links, address), e.g. ['https://acmeplumbing.com']. A bare domain is fine — 'http://' is assumed. |
startUrls | no | array | [] | Standard Apify URL list — an alternative to 'urls' (e.g. from a linked dataset or Google Sheet). |
maxPagesPerSite | no | integer | 6 | How many pages to crawl per site (homepage plus contact/about/team pages). More pages = higher hit rate, more compute. |
proxyConfiguration | no | object | {"useApifyProxy": false} | Optional. Enable a proxy (e.g. residential) if target sites block the datacenter IP. |
Pricing (Pay Per Event)
You pay per result (contact-found) — no charge for empty runs. Example: 200 businesses with an email or phone at $0.005/result ≈ $1.00.
One charge per business or website that yields at least one email or phone number. Website, address and social links are included free; a business that is not found, or a site with no email/phone, costs nothing.
Use cases
- Names to contacts: a licence roll, permit list or supplier list with only business names in, phone, website, address and email out.
- Websites to contacts: a list of company websites in, emails, phones and social profiles out.
- CRM cleanup: send rows with your own id and fill the missing phone or email, joined back on your id.
- Check before outreach: confirm the current phone and website of businesses you are about to call.
- AI agents: ask for a business's phone and email by name and city from an MCP client.
- Mixed lists: rows that already have a website skip the name lookup and go straight to the email search.
Why this actor
- Names or websites in the same run, one row per business, in your order, with your id echoed back.
- A strict match that prefers a free miss to a wrong phone: same state always, same city or ZIP for a partial name, and the trade must agree.
- The listed name comes back with every match, so you can check it at a glance.
- Evidence on every email: the page it was found on, generic/role/personal, and high confidence only on the business's own domain; franchise addresses are flagged.
- You pay only for rows with an email or phone; misses, no-matches and unreachable sites are free.
Limitations & updates
The name lookup covers US businesses and needs the state; it returns a business only when the match rule is confident, so some real businesses come back as free no-match rows (in our test, 42 of 100 random contractor businesses were found, most established firms were). Emails come only from the business's own public website pages (homepage + contact/about/team); the actor does not guess addresses, verify deliverability, or read login-walled platforms like Facebook/Instagram. A phone or website is returned as the business is listed and may be out of date.
FAQ
What do I give it?
Business names in businesses, one per line with city and state ("Raven Enterprises, Lansing, MI", a ZIP helps), and/or website URLs in urls. Through the API, businesses also takes rows {name, city, state, zip, website, id}.
Which countries does the name lookup cover?
US businesses. The state is required for a name lookup: without it a row comes back state_missing and costs nothing. Website URLs work for any country.
How sure is a name match?
A business is accepted only in the state you gave. When every word of its listed name is in your name it may be in another town of that state; a partial name is accepted only in your city or ZIP and only when it is the same kind of business. matched_name shows the listed name so you can check. In our own test on 100 random contractor businesses from three states, 42 were found and none of the matches we checked was a different business; established firms were found far more often (17 of 18).
Why was my business not found?
Small or new businesses are often not listed, or listed under a different name. A no-match row is free. Adding the city or ZIP helps; a row with a website skips the name lookup.
Where do the emails come from?
From the business's own website: the homepage plus its contact/about/team pages (up to maxPagesPerSite). A business without a website, or whose site publishes no email, comes back with its phone and status no_email.
How am I charged?
One charge per row (business or website) that yields at least one email or phone number. Website, address and social links are included free; not-found businesses and sites with nothing cost nothing.
Do I get one row per business or website?
Yes, in your order. URL rows keep source_url exactly as you typed it; business rows echo business_name and your id.
What's the franchise flag?
If the only email found is on a different domain than the site (e.g. a corporate customercare@brand.com on a franchisee's page), email_domain_matches_website is false so you can tell it apart from the local business.
Which actor to choose
Pairs with:
- Chamber of Commerce Member Directory & Business Leads Scraper — You want the businesses too: every member of a local chamber, with website and email.
- Google Maps Place Matcher: Business Lookup by Name & Address — You need each business's Google place ID rather than its contacts.
Guides & use cases
Written up on scrapebench.dev — the bench that runs and verifies this actor against the live source every night:
- How-to: How to run Business Email, Phone & Contact Details Scraper
- Use case: Find contact details for a list of company websites
More actors, coverage and nightly verification results: scrapebench.dev
Works with AI assistants (MCP)
Callable as an MCP tool, so Claude, Cursor, VS Code Copilot and other MCP clients can run it directly. Grab the config from the MCP tab on this page — Apify hosts the server and keeps that snippet current, and OAuth signs you in on first connect, so no API token goes in your config file.
Then just ask:
"Find the phone number, website and email for Raven Enterprises in Lansing, Michigan."
Pass business names with city and state, or website URLs; one row comes back per business. Runs started this way bill exactly like any other run.
Data & lawful use
This actor collects publicly available information that public online business directories and each business's own website publishes for public lookup — licence records, business listings and the contact details professionals list there. Some of it identifies individuals (sole proprietors, licence holders, agents), so treat any names, phone numbers and emails in your results as personal data.
When you run this actor, you decide what is collected and what it is used for, so you are the controller of that data and we act only as your processor (Apify Standard Actor Contract). You need a lawful basis for your use, must honour opt-out and deletion requests, and must follow the marketing rules that apply to you (CAN-SPAM, TCPA, GDPR, CCPA and similar). Don't use the output for unsolicited bulk messaging, for screening covered by the FCRA, or for anything the source's own terms forbid.
Your results are stored in your own Apify account. We don't keep a copy of your results and don't sell or share them.
Disclaimer
This is an independent tool. It is not affiliated with, endorsed by or sponsored by public online business directories and each business's own website. Names and marks are used only to describe the data source. Records are provided as published by the source and may be out of date or incomplete. For anything consequential (hiring, a permit, a legal decision), confirm the record with the issuing agency. You are responsible for making sure your use complies with applicable law and the source's terms.
Need help?
Open an issue on this actor's Issues tab and we'll respond there. Bug reports, missing fields and feature requests are all welcome. Guides and examples: scrapebench.dev.
If you are a person named in this data and want your record removed from our copy, email apify-help@scrapebench.dev; the source agency remains the official record.
Your run may be used to improve our services. If something looks off, or you want this actor to fit your use better, please share your run data with us: Apify Console → Settings → Security → Share run data with developers. It lets us see exactly what went wrong and keep improving the actor.
If this actor saved you time, a short review on its Store page helps other buyers find it.