Contact Details Scraper: Company Emails & Phones avatar

Contact Details Scraper: Company Emails & Phones

Pricing

$5.00 / 1,000 result rows

Go to Apify Store
Contact Details Scraper: Company Emails & Phones

Contact Details Scraper: Company Emails & Phones

For sales-operations leads: paste a list of company websites and get one row per site with the shared mailboxes, switchboard phones, company social pages and postal address the company publishes for itself. Named staff contacts are skipped.

Pricing

$5.00 / 1,000 result rows

Rating

0.0

(0)

Developer

US Tech Automations

US Tech Automations

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Company Contact Details from a List of Websites

This contact details scraper is a website email scraper for public contact info: paste company website addresses and get, for each site, the shared mailboxes, switchboard phones, and company social pages that company publishes for itself.

Named staff mailboxes, personal mobiles, home addresses, and staff profile links are skipped. Each skipped named mailbox is counted on the row.

Input

FieldWhat it does
Company website addressesYour list of public company sites (home pages or a contact/about URL). One row per URL.
Maximum pages per siteHome page plus same-site pages whose path or link text looks like contact, about, impressum, support, or locations. Default 5, cap 15. Staff/profile pages are not opened.
Maximum rowsHard ceiling on site rows, and therefore on the cost of the run. Default 50, maximum 1,000.
Proxy configurationOptional Apify proxy. Off by default, including on a local run.

Each host is checked against its robots.txt User-agent: * rules before any HTML page is read. A disallowed start URL becomes one error row for that site (robots_allowed is false). When robots.txt sets a crawl delay, that delay is honoured.

Pricing

Pay per result. $0.005 per row. No start fee.

Every dataset row bills from row one, including an error row for a site that 404s or is blocked by robots.txt. A run that returns no rows costs nothing. Maximum rows is the spend cap.

Output (one row per site)

One example row from a real local run on 2026-09-21 against https://www.eff.org/about/contact (3 HTTPS GETs on this machine: robots.txt, the contact page, the home page):

{
"site": "https://www.eff.org/about/contact",
"company_name": "Electronic Frontier Foundation",
"company_mailboxes": [
"info@eff.org",
"press@eff.org",
"membership@eff.org",
"activist@eff.org",
"hr@eff.org"
],
"mailbox_source_pages": {
"info@eff.org": "https://www.eff.org/about/contact",
"press@eff.org": "https://www.eff.org/about/contact",
"membership@eff.org": "https://www.eff.org/about/contact",
"activist@eff.org": "https://www.eff.org/about/contact",
"hr@eff.org": "https://www.eff.org/about/contact"
},
"named_addresses_skipped": 0,
"company_phones": [],
"company_social_links": [
"https://www.facebook.com/eff",
"https://www.instagram.com/efforg/",
"https://www.youtube.com/efforg",
"https://www.linkedin.com/company/EFF"
],
"postal_address": null,
"pages_read": [
"https://www.eff.org/about/contact",
"https://www.eff.org/"
],
"robots_allowed": true,
"error": null,
"http_status": 200,
"message": null,
"fetched_at": "2026-09-21T01:00:53Z"
}

company_phones is empty on that row because the page prints a number as text and does not expose a tel: link or schema.org telephone. postal_address is empty because the page does not publish a schema.org PostalAddress. Those fields are not guessed.

FieldWhat it holds
siteThe URL you pasted
company_nameFrom schema.org Organization, og:site_name, or the page title
company_mailboxesShared role addresses only (info, sales, press, hr, and similar). Named people are omitted.
mailbox_source_pagesThe page each kept mailbox was first read from
named_addresses_skippedCount of first.last-style addresses that were dropped
company_phonestel: links and schema.org telephone values
company_social_linksCompany pages only: LinkedIn /company/, Facebook, X/Twitter, Instagram, YouTube, from header/footer, a contact page, or Organization sameAs. /in/ staff profiles are skipped.
postal_addressschema.org address when present; otherwise null
pages_readHTML pages actually fetched
robots_allowedtrue when User-agent: * allowed the start URL
error / message / http_statusSet only when that site failed
fetched_atWhen this run read the site, in UTC

What this does not do

  • It does not output a named person's email, a personal mobile, a home address, or a staff LinkedIn/Facebook profile. Those are dropped. Named mailboxes are counted in named_addresses_skipped.
  • It does not guess addresses. A mailbox has to appear on a fetched page (including simple info [at] host [dot] com obfuscation).
  • It does not log in, send cookies, or solve a CAPTCHA. A block becomes an error row.
  • It does not render JavaScript. Contact details that exist only after a script runs are not read.
  • It does not ignore robots.txt. If User-agent: * disallows the path, that site is not crawled.
  • It does not grant a licence to use a company's contact details. You supply the URLs; each site's terms still apply.
  • It does not verify that a mailbox receives mail.

Limits

  • At most 15 HTML pages per site, 1,000 sites per run.
  • One second between requests to a host, or that host's Crawl-delay when it is larger (EFF's robots.txt asks for 30 seconds).
  • Public HTML only. No sitemap dump, no DNS mailbox guessing, no enrichment against other databases.