Bulk Company Email Lookup Scraper avatar

Bulk Company Email Lookup Scraper

Pricing

from $1.82 / 1,000 company lookup completeds

Go to Apify Store
Bulk Company Email Lookup Scraper

Bulk Company Email Lookup Scraper

Resolve company names to likely official websites and displayed general emails or observed contact forms. Export one evidence-attributed row per company with explicit ambiguity and incomplete states.

Pricing

from $1.82 / 1,000 company lookup completeds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

24 days ago

Last modified

Categories

Share

Turn company-name spreadsheets into source-attributed general contact channels. This bulk company email lookup Actor searches for likely official domains, reads public website pages, and returns a preferred displayed shared inbox or an observed contact-form page.

It does not guess personal emails, send invitations, verify mailbox deliverability, or promise complete web coverage.

What does it do?

For each supplied company, the Actor searches public Brave Search result HTML directly, requires full name-token coverage and a matching hostname token, then checks the strongest candidate's homepage and observed contact/about links. Close-scoring domains remain ambiguous rather than being silently selected.

If you already know the website, supply it alongside the name to bypass search. That website is your supplied identity, not an independently certified official domain.

Who is it for?

  • Sales operations teams refreshing company-name spreadsheets.
  • Researchers documenting public business contact evidence.
  • CRM administrators separating confident contact results from review-needed matches.
  • Agencies enriching client-authorized account lists.

Why use this Actor?

One input produces one ordered result row, including unresolved companies. The result includes the precise page where an inbox or form was observed. Negative results remain distinct from failed requests, and no person-specific email patterns are generated.

Getting started

  1. Open the Actor and add company objects to companies.
  2. Include an optional country hint for name searches.
  3. Add website when the domain is already known.
  4. Choose maxPagesPerCompany from 1 to 10.
  5. Start the run and review status before exporting contacts.
{
"companies": [{ "name": "Apify", "website": "https://apify.com" }],
"maxPagesPerCompany": 4
}

The prefilled example uses a known public website so your first run does not depend on search availability. Remove website to try name discovery; public search can block requests or change its response, producing an explicit uncharged error rather than a claim that no contact exists. A successful supplied-site run does not verify name-search availability.

Input parameters

FieldBehavior
companies1–1000 objects with nonempty name, optional country, and optional website. Input order and duplicate rows are preserved.
countryAppended to search text; not an independently verified geography filter.
websitePublic HTTP(S) URL or domain; bypasses search and supplies the identity to inspect.
maxPagesPerCompanyMaximum website-page attempts for each company, including homepage; default 4, range 1–10. Search requests do not count toward this limit.

Zero/unlimited page limits are unsupported. The run timeout and your billing budget may stop a large batch before every row is processed; completed rows remain partial results, not a completed batch.

Output fields

FieldMeaning
companyName, countryOriginal trimmed name and supplied hint.
statusContact, ambiguity, absence, or failure disposition.
contactValuePreferred email, observed form-page URL, or not available placeholder. Always interpret with status.
emailDisplayed eligible role inbox, otherwise null.
contactFormUrlObserved form page if no eligible inbox was found.
sourceUrlExact fetched contact evidence page.
websiteSelected likely domain or supplied website.
candidatesUp to five domain candidates with heuristic scores and search evidence.
pagesCheckedSuccessfully retrieved evidence pages.
diagnosticsBounded failure stage and safe response category (HTTP status, challenge, non-HTML, oversized/unrecognized response, redirects, or network/safety failure); no response bodies or request secrets.
checkedAtUTC lookup timestamp.

Example result

A local lookup of Apify returned the following contact fields:

{
"companyName": "Apify",
"country": null,
"status": "email_found",
"contactValue": "hello@apify.com",
"email": "hello@apify.com",
"contactFormUrl": null,
"sourceUrl": "https://apify.com/contact",
"website": "https://apify.com/"
}

The full row also includes candidates, checked pages, diagnostics, and the lookup timestamp. Results depend on what the source displays at run time.

Contact selection rules

Eligible role prefixes include info, hello, contact, enquiries, inquiry, office, sales, support, admin, reception, and team. The Actor favors general inboxes over sales/support; addresses must be displayed in text or a mailto link and use the selected website hostname. Personal addresses and off-domain addresses are not selected.

A form requires an observed HTML form with an email input, message textarea, and positive contact/enquiry purpose in the form or its nearby heading. Order, newsletter, comment, review, survey and registration forms are excluded even on contact pages. A contact link alone is not proof of a form. Forms are never submitted. Purpose matching is conservative and English-language; unlabelled, JavaScript-only and external-hosted forms may be missed.

Understanding dispositions

  • email_found: eligible displayed general inbox selected.
  • contact_form_found: observed contact/enquiry email-message form, no eligible inbox in checked pages.
  • not_available: no eligible inbox or form found in successfully checked bounded pages.
  • ambiguous: competing domain candidates are too close to choose safely.
  • unresolved: no candidate passes conservative name/hostname checks.
  • incomplete: one or more pages failed and no contact was found.
  • error: name search or lookup failed.

not_available does not mean there is no email anywhere on the Internet. The contact placeholder on ambiguity or failure is not an absence verdict; use status. Heuristic scores are not identity probabilities.

How much does it cost to look up company contacts?

Pay-per-event pricing has a one-time start event and a company-result event. The Actor's pricing panel shows the applicable current rates for your plan. Failed/incomplete diagnostic rows have no item event. Ambiguous, unresolved, and checked-not-available dispositions are completed research results and have an item event.

Estimate a run as one start charge plus the applicable company-result rate multiplied by completed results. This is an estimate, not a guaranteed invoice; refunds, fraud, disputes, taxes, corrections or clawbacks may affect charges or publisher payouts. Store discount tiers follow qualifying aggregate monthly Store spend, not volume within this Actor alone. Direct search and page requests are included in our event price; you need no external API key. There is no paid proxy, residential, managed-search or browser fallback.

Limits and troubleshooting

The Actor processes companies sequentially with bounded requests and transient retries. It follows only observed same-host contact/about links and refuses non-global network destinations, credentials in URLs, and cross-domain website redirects. Each HTTP connection validates all DNS answers and connects using the validated resolution; redirects are checked again. Special, multicast, reserved and mixed public/non-global answers are rejected. It does not use a browser, log in, or attempt to solve website challenges.

Large batches may exceed the configured run timeout. Increase the timeout or split inputs; missing rows from interrupted runs are not not-available findings.

If a domain is ambiguous, provide the website after manual verification. If results are incomplete, review diagnostics and retry later or provide a reachable public page. Increasing the page limit follows more observed links but cannot make JavaScript-only contacts visible.

Integrations

Export the default dataset as JSON, CSV, Excel, XML, or RSS through Apify. Join results to your original spreadsheet by row order and company name. Keep evidence URLs in a review column and filter to contact-found statuses before using contact values.

Use Make, Zapier, webhooks, or the Apify API to send completed data to your CRM or warehouse. Scheduled runs create fresh snapshots; this Actor does not compare runs or send change alerts itself.

API usage

Use your own Apify token, never a third-party enrichment credential.

curl -X POST 'https://api.apify.com/v2/acts/automation-lab~company-name-contact-resolver/runs' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"companies":[{"name":"Apify"}]}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/company-name-contact-resolver')
.call({ companies: [{ name: 'Apify' }] });
const { items } = await client.dataset(run.defaultDatasetId).listItems({ limit: 20 });
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/company-name-contact-resolver').call(
run_input={'companies': [{'name': 'Apify'}]})
items = client.dataset(run['defaultDatasetId']).list_items(limit=20).items

MCP setup

For Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/company-name-contact-resolver"

For Claude Desktop, Cursor, and VS Code, use the equivalent HTTP server configuration supported by your client:

{"mcpServers":{"apify":{"type":"http","url":"https://mcp.apify.com?tools=automation-lab/company-name-contact-resolver"}}}

Example prompt: “Look up Apify's public general contact and include its source page; flag ambiguous results for review.” Authorize execution separately from read-only tool discovery.

Discover actual tool names and schemas with tools/list. Actor selection also exposes run/storage helper tools. Start once and retain the returned run ID; it is metadata, not contact data. If nonterminal, check that same run with bounded 2/4/8-second backoff, capped at 10 seconds, and a 120-second total deadline. Set the client request timeout above the selected server wait plus transport margin. A client timeout is not a reason to restart the Actor.

After success, fetch untransformed dataset JSON in pages of 20, at most 100 source rows and 64 KiB of serialized content admitted to model context, whichever occurs first. Enforce byte limits host-side; if the client cannot do that, do not claim a hard byte guarantee. Report partial results and continuation offset. Keep full exports outside model context. At a deadline report pending with its run ID; terminal failures are failures and any rows are partial.

Legality, responsible use and privacy

Use public business channels only for lawful, authorized research. A published address is not consent to unsolicited marketing. Respect applicable privacy, anti-spam, and source-access rules. No custom end-user terms are added; Apify's standard terms apply. This independent utility is not affiliated with Brave or any company searched.

No AI model is used during lookup or to generate contact results. Names and country hints are sent to Brave Search's public search service. Known websites and bounded linked pages are fetched directly. Results and input are stored in your Apify run storage according to your account's retention/deletion settings; delete runs and datasets when no longer needed. There is no cross-run cache or persistent browser session.

Failed operations send sanitized diagnostic input, exceptions and actor/build/run IDs to our private GlitchTip service for repair. Secret fields and URL queries are removed; reports are retained for 30 days. Routine logs contain status/counts, not email addresses or raw pages. Role inboxes are business contact data and should still be handled responsibly.

FAQ

Are emails verified? No. These are displayed general inboxes, not SMTP or MX verification results.

Can I supply websites? Yes, as company objects with name and website; search is bypassed.

Why no contact for a known company? Contacts may be JavaScript-only, obfuscated, off-domain, or outside the checked links. The disposition explains whether the check completed.

Can I monitor changes? Schedule runs and compare snapshots in your own pipeline; no built-in comparison or alert delivery is included.

Where can I get help? Open an issue on this Actor's Apify Issues tab with a safe input and run link. Do not include secrets.