Website Contact Enrichment - Emails, Phones & Sources avatar

Website Contact Enrichment - Emails, Phones & Sources

Pricing

from $2.40 / 1,000 website contact records

Go to Apify Store
Website Contact Enrichment - Emails, Phones & Sources

Website Contact Enrichment - Emails, Phones & Sources

Extract published emails, declared phones, company addresses and social profiles from supplied websites. Source evidence per contact, bounded contact-page crawl, no API key or guessed emails.

Pricing

from $2.40 / 1,000 website contact records

Rating

0.0

(0)

Developer

Brandt May

Brandt May

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Published contacts with evidence — illustrative workflow

Published contacts with evidence

For CRM cleanup and supplier research, gather published contact signals from a bounded crawl with a source page and extraction method.

Coverage: Static public HTML, declared phone links, supported social links and matching structured data. No guessed emails or form submissions.

Open this Actor in Console · First run · Results · Cost · Full guide

Try this Actor

  1. Use the existing Apify contact-page example below with one page attempt and up to ten saved website records.
  2. Open the run's dataset; JSON retains nested contacts and their source evidence. Check SUMMARY for failed pages and missing results.

Read the results correctly: Published contact details are not verified for deliverability, ownership or consent. A saved row can contain only a social profile or contact-form URL.

Extract Apify Public Contact Details — copy this input into the JSON editor in Console.

{"websites":["https://apify.com/contact"],"maxPagesPerSite":1}

Result preview

The dataset view highlights these columns:

  • Resolved website · url
  • Domain · domain
  • Published organization names · companyNames
  • Published emails and evidence · emails
  • Declared phones and evidence · phones
  • Published social links · socialProfiles

Use the original source links and the field definitions below when interpreting the results. CSV works well for flat columns; JSON preserves nested values.

Usage and pricing

Base result rate on the FREE tier: $4 per 1,000 website contact records. The Pricing tab shows your plan's result rate and any Actor Start charge. Set a small result limit for the first run; the requested limit is not a guarantee of that many results.


Full guide

Turn supplied public business websites into structured, evidence-linked contact records. Extract published emails, phone links, social profiles, Organization structured addresses and contact-form page URLs from a small, bounded crawl.

Useful for CRM enrichment, supplier research, website audits and contact-data cleanup. Each extracted signal retains its source page and extraction method so you can check it before use.

Quick start

Run with empty input for a real example using the public Apify contact page. No account, API key or proxy is required.

{"websites":["https://apify.com/contact"],"maxPagesPerSite":1,"maxResults":10}

Inputs

FieldDefaultMeaning
websitesApify contact pageUp to 1,000 HTTP(S) website/page URL strings. Empty array also uses the demo.
maxPagesPerSite3Maximum request attempts per website, from 1–10. Follows existing contact/about/support links.
maxResults100Maximum website records saved, from 1–1,000.
includeSubdomainsfalseAllow discovered links on child subdomains of the resolved starting host.
maxRunSeconds240Internal deadline, 30–3,600 seconds, also bounded by the platform deadline.

The first page can redirect to the site's canonical public host. Discovered page links stay on that host, with optional child subdomains. The crawler uses static HTML, respects robots.txt, limits each page to 3 MiB decoded content and checks public network addresses on every redirect. It never submits forms.

Output

One dataset row per supplied URL with at least one contact signal. Two different seed URLs on the same domain remain separate observations.

FieldContents
websiteId, inputUrl, url, domain, titleStable seed identity and resolved website context.
companyNamesNames from matching Organization JSON-LD. May be empty.
emailsEmail, deterministic isRoleAddress, onSiteDomain, and source URLs/methods.
phonesPublished raw number, explicit international number when present, extension and sources.
socialProfilesSupported public social profile links with source pages.
addressesPublished structured postal fields and sources, when available.
contactPageUrlsPages actually read, including the seed.
contactFormUrlsPages containing a likely contact form. No messages are sent.
signalCountTotal unique emails, phones, profiles, addresses and form-page signals.
pagesCrawled, pagesAttempted, crawlTruncated, incompleteCrawl coverage and source-failure indicators.
observedAtRetrieval time.

Email sources are mailto links, visible page text and matching Organization/ContactPoint JSON-LD. Phones come from tel links and matching structured data; arbitrary number strings are not guessed to be phone numbers. Social links support LinkedIn companies/schools, Facebook, Instagram, X, YouTube, TikTok, GitHub and Bluesky. A published social link can still be outdated or point to someone other than the site's owner.

isRoleAddress describes the address prefix; onSiteDomain describes its domain. Neither verifies ownership or deliverability. Non-role addresses may appear if the website publishes them. International prefixes are not inferred, and obfuscated, image-only or JavaScript-rendered contacts may be missed. Addresses and names depend on matching structured data. Form detection is a heuristic.

Three runnable examples

1. Apify contact page

Use the copyable first-run input above.

2. Mozilla contact page

{"websites":["https://www.mozilla.org/en-US/contact/"],"maxPagesPerSite":1}

3. Django Software Foundation

{"websites":["https://www.djangoproject.com/foundation/"],"maxPagesPerSite":2}

Coverage and failures

Read the SUMMARY key-value record for every requested website, skipped or failed pages, missing results and stop reasons. A bounded crawl does not imply the site has no other contacts. crawlTruncated means discovered links remain beyond the selected page limit; incomplete means a source failed or the run stopped early.

A successfully fetched site with no contact signals yields no paid result. Source errors also yield no fabricated error rows. If every source fails, the run fails with details in SUMMARY. A website with some usable signals and a failed secondary page can produce a paid row marked incomplete. HTTP 429 is reported without an immediate retry; transient network/server failures receive at most one retry. Dataset charge limits stop further writes; only confirmed saved rows count.

Pricing

Base price: $4 per 1,000 saved website records ($0.004 each), plus the $0.00005 Actor Start event per GB of memory, minimum one event. Silver receives 20% off result events; Gold and higher receive 40% off. A record can contain only a social profile or form URL when no email/phone is published. Review the current Store pricing for the charge applied to your account.

Responsible use and support

Use public business contact information for lawful, relevant purposes. This Actor does not verify consent, send outreach or provide private profile access. Retain only data you need and honor correction or deletion requests. Questions or removal requests: use the Actor Issues tab or bmay@mayd-it.com.

Help with your run

Open the Issues tab on this Actor with the run URL, the input field that caused trouble and what you expected to receive. Remove API keys and private information before posting.

Explore more Mayd-It Actors

Understand your run

Open Run report in the run’s Output tab for saved-record counts, reported source issues and limits, and suggested next steps. Use CSV export to take the saved results into a spreadsheet. The existing JSON results and detailed machine-readable summary remain available.

The report reflects this run’s recorded coverage. A successful run or a saved result does not establish that every possible source record was collected.