Hollerdex — Contact Details Scraper: Emails, Phones & Socials
Pricing
$4.00 / 1,000 domain with contacts founds
Hollerdex — Contact Details Scraper: Emails, Phones & Socials
Website contact finder and email finder by domain (contact details scraper): ranked emails (sales, support, press), phones in E.164, LinkedIn, X, Instagram and more, contact page, form and address. Monitor mode alerts you when contacts change. $0.004 per domain with contacts; misses are free.
Pricing
$4.00 / 1,000 domain with contacts founds
Rating
0.0
(0)
Developer
CyberMax
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Hollerdex: website contact finder for emails, phones & social profiles
Give it a company domain, get back one clean contact card. Hollerdex returns the best email to write to, a phone number in international format, the company's LinkedIn, X, Instagram, Facebook, YouTube and TikTok, plus the contact page, the contact form and the postal address. It costs $0.004 per domain, and domains where nothing is found are free.
Why Hollerdex
- One flat price per domain, not per page. Page-based scrapers visit up to 20 pages per site and charge for each one. Hollerdex goes straight to the pages that hold contact details (contact, impressum/imprint, about, support) and charges once per domain. Blocked, empty and unreachable domains cost nothing.
- Ranked and labelled, ready for an agent or a CRM. Every email is tagged
role(sales, support, press, legal, careers…) orpersonal, the best address is picked for you, and emails that belong to other organisations (a regulator or an agency named in an imprint) are moved tootherEmails. Phones come in E.164 (+12122542246), including national numbers such as030 1234567on a .de site. - Finds what simple scrapers miss. It decodes Cloudflare-protected emails, reads
name [at] domain [dot] comand schema.org Organization data (emails, phones,sameAsprofiles, address), and ignores share buttons, tracking addresses andlogo@2x.pnglookalikes.
Real example summary (from a live run, 2026-09-23):
katzsdelicatessen.com: 1 email (best: press@katzsdelicatessen.com); 1 phone; 3 social profiles (x, facebook, instagram); contact form. Checked 5 page(s).
In our test run of 40 well-known domains (SaaS, shops, restaurants, banks, EU publishers), 32 returned
contacts, in about 10 seconds for the whole run. 5 were behind strong bot protection and came back
blocked: true at no charge.
What you get (one record per domain)
companyNamefrom schema.org, the site name or the page titleprimaryEmailandemails[]:{ email, type: "role" | "personal", role, onDomain, foundOn }primaryPhoneandphones[]:{ phone, e164, via: "tel-link" | "text" | "schema.org", foundOn }socials: the main profile per platform:linkedin,x,facebook,instagram,youtube,tiktok,github,threads,bluesky,telegram,discord,pinterest,whatsapp,crunchbase(allSocialProfileslists every one found)contactPageUrl,contactFormUrl,addresses[]otherEmails: addresses on other domains that appeared on the sitesummary: one line an LLM can quote;found,blocked,statusCode,pagesChecked,errors
Input
{ "domains": ["apify.com", "https://www.katzsdelicatessen.com/menu", "n26.com"] }
First try: the prefilled input (apify.com, basecamp.com) runs in about 10 s and costs at most $0.008.
Options: maxPagesPerDomain (default 6, max 15; the price is the same), includePersonalEmails
(default true; set false to keep only role addresses such as info@ or sales@), timeoutSecs,
maxConcurrency and an optional proxyConfiguration. Monitoring: monitor and monitorKey (below).
Ready-made inputs (first try in one click)
No account yet? See real results first on the free demo page: contact cards for well-known SaaS companies.
Paste one into the JSON tab of the input form (or send it to the API) and press Start. Each is sized so the first run is quick and cheap; you pay only for results (Apify's compute is included in the price).
| Preset | What you get | Cost |
|---|---|---|
| Contact cards for 2 companies | best email with its label, phones, socials, contact page | $0.008 or less |
| Company emails only (no personal names) | sales/support/press addresses only | $0.004 or less |
| Quick scan (3 pages per site) | the same card from fewer pages, faster | $0.008 or less |
Contact cards for 2 companies
{"domains": ["basecamp.com", "zapier.com"]}
Company emails only (no personal names)
{"domains": ["mailchimp.com"], "includePersonalEmails": false}
Quick scan (3 pages per site)
{"domains": ["canva.com", "gumroad.com"], "maxPagesPerDomain": 3}
Same thing from a script (returns the results directly):
curl -s -X POST "https://api.apify.com/v2/acts/cybermax~website-contacts/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H 'content-type: application/json' -d '{"domains": ["basecamp.com", "zapier.com"]}'
Output (trimmed, real record)
{"domain": "katzsdelicatessen.com","found": true,"companyName": "Katz's Delicatessen","primaryEmail": "press@katzsdelicatessen.com","primaryPhone": "+12122542246","emails": [{ "email": "press@katzsdelicatessen.com", "type": "role", "role": "press", "onDomain": true,"foundOn": "https://katzsdelicatessen.com/" }],"phones": [{ "phone": "212-254-2246", "e164": "+12122542246", "via": "tel-link", "foundOn": "https://katzsdelicatessen.com/" }],"socials": { "x": "https://twitter.com/KatzsDeli", "facebook": "https://www.facebook.com/katzsdeli","instagram": "https://www.instagram.com/katzsdeli" },"contactPageUrl": "https://katzsdelicatessen.com/contact","contactFormUrl": "https://katzsdelicatessen.com/contact","blocked": false}
Monitor mode: only contact cards that changed
Set "monitor": true to watch a list of domains. Hollerdex remembers each domain's contact card and, on the next
monitor run, returns only domains whose card changed: an email, phone number or social profile was added or
removed. Unchanged domains are left out of the dataset and not charged. The first monitor run returns every
domain as "change": "new". Checks that read nothing (bot wall, site down, timeout) never count as "removed":
the previous card is kept; if a contact page times out, only additions are reported.
{ "domains": ["apify.com", "basecamp.com"], "monitor": true, "monitorKey": "crm-accounts" }
Changed records carry three extra fields (structure shown; values depend on the site):
{"domain": "acme.com","change": "changed","changedFields": ["emails", "socials"],"changes": {"emails": { "added": ["partners@acme.com"], "removed": [] },"socials": { "added": ["tiktok: tiktok.com/@acme"], "removed": [] }}}
monitorKey names the watchlist (several can coexist; you can add domains without starting over). Without it,
the state is tied to the exact domain list. A run summary (new, changed, unchanged, failed) is saved as
the run's OUTPUT record.
Who it's for
- AI agents and MCP clients asked "how do I contact acme.com?" or "find the LinkedIn and support email for these 50 companies".
- Sales and lead-gen: enrich a list of domains from a CRM, Google Maps export or trade-show list.
- Partnerships, PR and recruiting: find the right role address (press@, partners@, careers@) instead of a generic inbox.
- Market research: which companies publish a phone number, use a contact form or are active on TikTok.
Pricing
| Event | Price |
|---|---|
| Domain with contacts found (at least one email, phone or social profile) | $0.004 |
| Domain with nothing public, blocked by bot protection, or unreachable | free |
1,000 domains with contacts cost $4. You can cap the spend of any run with Apify's maximum charge setting.
When not to use it
- To find a specific person's private email: Hollerdex only reads what the company publishes on its own site.
- For sites behind heavy bot protection (some big consumer brands): they come back
blocked: true, free. - To send bulk unsolicited email: you are responsible for following anti-spam and privacy laws (CAN-SPAM, GDPR, CASL) when you use contact data.
Run it on a schedule
Apify Console → Schedules → Create new → cron 0 8 * * * (daily 8 AM) → Add Actor → Hollerdex with
your domain list and "monitor": true. With monitor mode a daily run is cheap: you only pay for domains whose
contact card changed. The same schedule through the API:
POST https://api.apify.com/v2/schedules?token=YOUR_TOKEN{"name": "hollerdex-daily","cronExpression": "0 8 * * *","timezone": "America/New_York","isEnabled": true,"actions": [{"type": "RUN_ACTOR","actorId": "cybermax/website-contacts","runInput": {"body": "{\"domains\":[\"apify.com\",\"basecamp.com\"],\"monitor\":true,\"monitorKey\":\"crm-accounts\"}","contentType": "application/json"}}]}
To get notified, open the Actor → Integrations and add an email, Slack or webhook notification on "Run succeeded" (or use the Make/Zapier/n8n recipes below).
Integrations
Make: Apify app → "Run an Actor" (Actor cybermax/website-contacts, input {"domains": ["acme.com"]},
run synchronously) → "Get dataset items" → map primaryEmail, primaryPhone, socials.linkedin into your CRM.
Zapier: Apify app → "Run Actor" action (from a new CRM company or sheet row), or the "Finished Actor Run" trigger on a scheduled monitor run → "Fetch dataset items" → update the record.
n8n: the Apify node ("Run an Actor and get dataset"), or an HTTP Request node:
POST https://api.apify.com/v2/acts/cybermax~website-contacts/run-sync-get-dataset-items?token=YOUR_TOKEN{"domains": ["apify.com", "basecamp.com"], "includePersonalEmails": false}
Google Sheets: Apify's Google Sheets integration (Actor → Integrations), or pull the last run into a cell:
=IMPORTDATA("https://api.apify.com/v2/acts/cybermax~website-contacts/runs/last/dataset/items?format=csv&token=YOUR_TOKEN")
Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("cybermax/website-contacts").call(run_input={"domains": ["apify.com", "basecamp.com"]})for card in client.dataset(run["defaultDatasetId"]).iterate_items():print(card["domain"], card["primaryEmail"], card["socials"].get("linkedin"))
JavaScript (npm i apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('cybermax/website-contacts').call({ domains: ['apify.com', 'basecamp.com'] });const { items } = await client.dataset(run.defaultDatasetId).listItems();
AI agents (MCP): Hollerdex is a tool on Apify's MCP server, https://mcp.apify.com/?tools=cybermax/website-contacts
(Authorization: Bearer YOUR_TOKEN). Claude Desktop / Cursor config:
{ "mcpServers": { "hollerdex": { "url": "https://mcp.apify.com/?tools=cybermax/website-contacts","headers": { "Authorization": "Bearer YOUR_TOKEN" } } } }
Each call is billed per domain with contacts to your Apify account.
Also from CyberMax
- DomainDNA: tech stack, email security (MX/SPF/DMARC) and domain age for the same domains.
- Logolark: company logo, icon and brand colour to complete each CRM record.
- HireHeat: which of your accounts are hiring right now, a timing signal for outreach.
- Linkheft: domain authority score and rank to prioritise the list.
- SnapScout: a screenshot and page text for each site.
All tools: Boardroom Buys · Swellmeter · Gripeline · Keyfern · HireHeat Jobs · Printwren
Changelog
- 2026-09-23: Monitor mode (
monitor,monitorKey: only contact cards with an added or removed email, phone or social profile), schedule & integration recipes.
© 2026 CyberMax. All rights reserved.