Sales engagement
Check email domains, domain authority and site files in SmartReach.io
Check each address before your script posts it to SmartReach.io and send the result with the prospect as a custom field.
Why the data matters in SmartReach.io
SmartReach.io attaches prospects to campaigns by email address, so one prospect that carries a bad domain keeps sending from your mailboxes until it bounces. Because the API requires a custom column to exist before a value can be sent for it, a list that skips the check also has nowhere to record what was learned about each address.
What LookValid checks
| Product | What it does here | Credits |
|---|---|---|
| Email Domain Check | Reports whether the domain behind a prospect address has mail servers and what its SPF and DMARC records say. It never contacts the mail server, so it cannot confirm that a mailbox exists. Marks throwaway domains, free providers and role addresses so they can go to a separate list. | 1 credit per address checked |
| Domain Authority | Gives a 0 to 100 link-graph score for a prospect company domain, with every input shown. Domains outside the open rank lists come back unscored, which is not proof of low authority. | 10 credits per domain found in the rank data (an unranked domain is free) |
| Site Files Checker | Reads the robots.txt, sitemap and related files a company site publishes, which can show where its contact pages are before you scrape them. | 2 credits per site checked (a site that cannot be reached is free) |
Connect it in four steps
- Start by creating a LookValid account and an API key.
- Put the key in the LOOKVALID_API_KEY environment variable of your script, and keep the SmartReach.io key, created in Settings then Integrations and sent in the X-API-KEY header, in a different variable.
- Before each prospect post, call the function with the address: it posts to the email-domain-check endpoint, returns None when nothing was found and raises with the error code and fix if the API refuses.
- Add the three columns to your SmartReach.io prospects page first, then send the returned values inside the custom_fields object of the prospect request.
a script that prepares each prospect before it posts to the SmartReach.io prospects endpoint The call is POST https://YOUR_API_HOST/v1/email-domain-check and costs 1 credit per address checked.
import json
import os
import urllib.error
import urllib.request
API_URL = "https://YOUR_API_HOST/v1/email-domain-check"
def check_smartreach_prospect(value):
request = urllib.request.Request(
API_URL,
data=json.dumps({
"email": value,
}).encode(),
headers={
"Authorization": "Bearer " + os.environ["LOOKVALID_API_KEY"],
"Content-Type": "application/json",
},
method="POST",
)
try:
with urllib.request.urlopen(request, timeout=30) as response:
result = json.load(response)
except urllib.error.HTTPError as error:
failure = json.load(error)["error"]
raise RuntimeError(failure["code"] + ": " + failure["fix"])
if not result["found"]:
return None
return {
"address_signal": result.get("data", {}).get("deliverability_signal"),
"domain_has_mx": result.get("data", {}).get("has_mx"),
"free_provider": result.get("data", {}).get("free_provider"),
}
| Response field | Goes into |
|---|---|
| data.deliverability_signal | address_signal |
| data.has_mx | domain_has_mx |
| data.free_provider | free_provider |
The recipe returns nothing when the lookup finds nothing, which costs no credits for this product, and stops with the error code and fix on a failed request.
Without code
An automation platform with a generic HTTP request step can do the same without code. Add a step that sends the new prospect address to the email-domain-check endpoint with your key in a bearer header, then a step that posts the prospect to SmartReach.io with the returned values in custom fields. No dedicated app is required.
Questions
Does this use many credits?
One lookup per address, each drawing credits from your LookValid balance. See the pricing page for the amount.
What if a custom column does not exist yet?
Create it on the SmartReach.io prospects page first. The API expects the column to exist before a value is sent for it.
Where does the key go for the script?
In LOOKVALID_API_KEY, an environment variable of the machine or scheduler that runs it. The SmartReach.io key is a different value sent in its own header.
Sources
- SmartReach.io API documentation https://smartreach.io/api_docs, read 2026-10-18
- LookValid API reference: Email Domain Check https://lookvalid.com/docs/api/email-domain-check, read 2026-10-18
LookValid is run by Meralume Labs. It is not connected to, endorsed by or a partner of any company or product named on this page, and every product name belongs to its owner.
Related pages
LookValid bills every lookup in credits from one shared balance, so the same key works for each check above.
See Email Domain Check