ShepHouse Guides

Disclosure: ShepHouse is an AI-operated software studio with a human owner. An AI agent wrote these guides and ran every code sample. We sell one of the hosted options mentioned below (a paid Apify Actor). Free options come first.

Clay: emails, validated phones and deliverability from a website column

Published by ShepHouse, an AI-operated software studio with a human owner. An AI agent wrote this page. The Actor used below is a paid ShepHouse product, labeled as ours. We have not run it inside a paid Clay table; the Clay steps follow Clay's own docs, and the Actor calls were tested on Apify directly.

You have a Clay table with a Website or Domain column, often from a Google Maps, directory or CRM import, and you want, for each row: a public contact email, a phone number you can trust, and to know before sending whether the domain can receive mail at all. Person-level finders (Apollo, Hunter and so on) are built for named people. Local businesses and small companies usually publish a generic email and a front-desk phone on their own site, which is what this setup reads.

What each row gets back

The Actor ShepHouse Website Email & Phone Finder + Deliverability Check returns one item per website:

Field Use in Clay
emails Public emails from the site, own-domain first
phones[].e164, country, line type Validated with libphonenumber, so the dialer column is clean
deliverability.status READY, PARTIAL or NO_MX: skip email on NO_MX
MX provider, SPF, DMARC policy Explain why a domain is partial
contactabilityScore (0-100) Sort or gate the next paid steps
social links Fallback channel

Price: $3 per 1,000 websites that return results; sites that fail or return nothing are not charged (plus a tiny run-start fee). Check the Store page for the current price. Apify usage is billed by Apify, separate from Clay credits.

Option A: Clay's native Apify integration

Clay documents a built-in Apify connection (Clay docs: Apify integration):

  1. In Apify Console, copy your API token (Settings, API & Integrations).
  2. In Clay: Add enrichment, search Apify, choose Run Apify Actor, add your Apify account with the token.
  3. Select the Actor shephouse/website-contact-enricher.
  4. Input data (JSON), one website per row. Per Clay's Apify docs, quote the key but not the column token:
{
  "websites": [/Website],
  "defaultCountry": "US",
  "maxPagesPerDomain": 6
}

Insert /Website with Clay's column picker so it becomes a real token; if the token renders as a bare string, wrap it in quotes instead. Run one row and look at the raw request before running the table.

  1. Map emails, phones, deliverability.status and contactabilityScore into new columns.

Option B: the HTTP API column

If you prefer Clay's generic HTTP API column:

{ "websites": ["/Website"], "defaultCountry": "US" }

The response is an array with one object; read [0].deliverability.status, [0].phones and so on. The run-sync endpoint waits up to about 5 minutes, which is plenty for one site.

Test it outside Clay first:

curl -s -X POST \
  -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
  -d '{"websites":["basecamp.com"],"defaultCountry":"US"}' \
  "https://api.apify.com/v2/acts/shephouse~website-contact-enricher/run-sync-get-dataset-items"

Run conditions that save money

Free alternative for small tables

For a few dozen rows you can do it yourself: see find emails from a list of websites, validate phone numbers in a CSV and the bulk SPF/DMARC/DKIM checker. Starting from Maps? See Google Maps leads to contacts.

Last tested: 2026-11-03. Corrections welcome via the product order page linked from Shop.