Lead data and prospecting

Check phone numbers, carriers and email domains in ZoomInfo

Take the phone numbers on records you export from ZoomInfo and add a numbering-plan check, so reps work lists with numbers in a usable format.

Why the data matters in ZoomInfo

ZoomInfo offers named exports that you run against sets of person or company records, and the contact data that comes out still has direct dials in mixed formats, missing country codes and the occasional number that does not fit its country plan. When reps load those into a dialer or sequence the bad ones surface one call at a time, so checking the numbers in the export before anyone starts dialing saves the list from a slow clean-up later.

What LookValid checks

LookValid checks for ZoomInfo
ProductWhat it does hereCredits
Phone Numbering-Plan ValidationChecks each number against its country numbering plan and returns international and national formats plus the type the plan assigns. It cannot say whether a direct dial is answered or still belongs to the person.1 credit per valid number
Carrier Lookup (original carrier)For US numbers, returns the carrier originally assigned the number block with its rate center and state. A number ported since then still shows its original carrier.1 credit per lookup (numbers outside the covered numbering plan areas are free)
Email Domain CheckFlags free-mail and role-based addresses on exported contacts, judged at the domain level without contacting any mail server.1 credit per address checked

Connect it in four steps

  1. Create a LookValid account and add an API key to it.
  2. Take the contacts you are licensed to use out of ZoomInfo through one of its exports and save the result as a file, then set LOOKVALID_API_KEY in the shell or job runner that executes the script, kept apart from your ZoomInfo credentials.
  3. Check every direct dial with the phone product; a found value of false means the number could not be parsed, so leave its new columns blank, and an error answer should stop the run with the returned code.
  4. Write the formatted number, type and country into the new columns Direct Phone (formatted), Phone Type and Phone Country, then import or merge that file into your CRM or dialer list.

A script that reads a contact export file row by row, checks each direct dial and writes the extra columns to a new file for import. The call is POST https://YOUR_API_HOST/v1/phone and costs 1 credit per valid number.

validate_zoominfo_export.py
import json
import os
import urllib.error
import urllib.request
​
API_URL = "https://YOUR_API_HOST/v1/phone"
​
​
def validate_zoominfo_export(value):
    request = urllib.request.Request(
        API_URL,
        data=json.dumps({
            "phone": 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 {
        "Direct Phone (formatted)": result.get("data", {}).get("international_format"),
        "Phone Type": result.get("data", {}).get("number_type"),
        "Phone Country": result.get("data", {}).get("country"),
    }
Where each response field goes in ZoomInfo
Response fieldGoes into
data.international_formatDirect Phone (formatted)
data.number_typePhone Type
data.countryPhone Country

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

To avoid a script, use the generic HTTP request step of an automation platform: trigger when a ZoomInfo-sourced record lands in your CRM, post the phone number to the LookValid endpoint with the key in the Authorization header, and add an action that updates the record's phone fields from the reply. It needs no dedicated LookValid app.

REST and MCPOne shared credit balance

Questions

What does a ZoomInfo export check cost in credits?

Each number spends credits from your LookValid balance at the rate on the pricing page. Multiply it by the rows in your file for the total.

Can this tell me whether the direct dial is still correct?

No. It checks the number against the numbering plan only. It cannot tell if the person still answers it or if the line is active.

Where does the key go?

In the environment where the script runs, as LOOKVALID_API_KEY. Do not paste it into the export file or into a shared spreadsheet.

Sources

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.

LookValid bills every lookup in credits from one shared balance, so the same key works for each check above.

See Phone Numbering-Plan Validation