Keencrest guides

Find emails from a website list in Make (formerly Integromat)

By Keencrest · 2026-11-01

Ready-made template: Make scenario blueprint (Google Sheets domains in, emails written back, joined on domain). All three variants are on the templates page.

Make has an Apify app with Run Actor modules, but the HTTP "Make a request" module does a bulk lookup in a single step: it calls the sync endpoint, which runs the Actor and returns the results in one response. That is the design this guide tests.

Use your own token. Create an API token in Apify under Settings, Integrations, and put it in the tool's secret or credential store. Never paste it into a shared sheet or a public workflow. The examples say YOUR_APIFY_TOKEN; replace it. Sending the token in the Authorization: Bearer header is safer than putting it in the URL, because URLs end up in logs.

What we tested: the HTTP request shown, run against the live Actor with a spend cap. The whole list is sent in one call. The click-by-click steps in Make follow its public documentation and were not run inside Make itself, so menu names may have moved; the request is what matters.

Scenario: four modules

  1. Google Sheets, Search Rows (or Airtable, or any list source) returns one bundle per company.
  2. Array aggregator collects the website values into one array.
  3. HTTP, Make a request: URL https://api.apify.com/v2/acts/datagleaner~website-contact-details-scraper/run-sync-get-dataset-items?maxTotalChargeUsd=1&fields=domain,bestEmail,status, method POST, header Authorization: Bearer YOUR_APIFY_TOKEN, body type Raw, content type JSON, request content:
    {"websites": {{toJSON(2.array)}}, "maxPagesPerSite": 4}
    Turn on "Parse response". Replace 2.array with the aggregator's output as Make shows it. (A simpler body for testing is a literal list such as {"websites":["basecamp.com"]}.)
  4. Iterator over the response data, then Google Sheets, Update a Row matching on domain.

The call as run from a terminal against the live Actor:

curl -X POST "https://api.apify.com/v2/acts/datagleaner~website-contact-details-scraper/run-sync-get-dataset-items?maxTotalChargeUsd=1&fields=domain,bestEmail,status" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"websites":["basecamp.com","mozilla.org","sitemaps.org"],"maxPagesPerSite":4}'

Limits to plan for

Make caps how long one HTTP request may run, and each bundle through a module counts toward your operations, so send many sites per call rather than one call per row. Batches of about 100 sites keep each call short. The scenario's operations count is the Make bill; the Apify bill is separate and is the cost section below.

What comes back

A JSON array with one object per site. Output order is not guaranteed to match input order (in our test, sitemaps.org came back before mozilla.org), so always match rows on domain, never on position. A real response for three sites, with fields=domain,bestEmail,status,failureReason:

[
  {"domain": "basecamp.com",  "bestEmail": "jason@basecamp.com", "status": "ok", "failureReason": null},
  {"domain": "sitemaps.org",  "bestEmail": null, "status": "noContacts", "failureReason": "no_contact_found"},
  {"domain": "mozilla.org",   "bestEmail": "trademark-permissions@mozilla.com", "status": "ok", "failureReason": null}
]

Without fields each object is large (around 60 keys: every email with the page it was found on and a kind, phones, 14 social networks, contact-form URLs, pages crawled). Ask only for what you need. A site that publishes no email still returns a row, with bestEmail: null. Junk input such as "not a site" returns a row with status: "invalidUrl" instead of failing the call.

What it costs

The Actor charges $0.002 for each site where an email is found and nothing for sites without one. 1,000 sites with 600 hits is about $1.20, and a 4-site test is under a cent. Apify's free plan includes monthly credit. The maxTotalChargeUsd query parameter in the examples is a hard cap on what one call can spend: the run stops when it is reached, so a typo cannot cost more than you set. Expect an email on roughly half to two-thirds of small-business sites and less on large brands; in our five-site test three sites gave one.

Try it: Website Contact Details Scraper on Apify. $0.002 per site with an email, nothing for sites without. The Apify free plan includes monthly credit, so a test run costs nothing out of pocket.

Related guides

All Keencrest guides