CyberMax
Home › Blog
Company name to website: clean a list of companies in Python, with confidence scores

Company name to website: clean a list of companies in Python, with confidence scores

· by · 5 min read

Company lists arrive without websites all the time: trade-show exports, CRM imports, spreadsheets from partners. The domain is the key that joins them to everything else (email domains, enrichment, dedupe), and guessing it is where errors creep in: acme.com is rarely the Acme you mean, and many obvious-looking domains are parked or for sale.

What a good answer looks like

For each name you want the official domain, how sure the answer is, and why. These are live answers from the Namewhere API on 1 October 2026:

Company nameDomainConfidenceEvidenceLook-alikes rejected
Monzo Bankmonzo.com0.99Wikidata + homepage brand matchmonzobank.ai, monzobank.org
Acme Brickbrick.com0.99Wikidata + redirects from acmebrick.comacmebrick.net, acmebrick.org
Notion Labsnotion.com0.99Wikidata + redirect from notion.so–
Rivian Automotiverivian.com0.91Wikidatarivianautomotive.com, .net, .org
Patagoniapatagonia.com0.9Wikidata + DNSpatagonia.io, .ai, .net
Gustogusto.com0.9Wikidatagusto.io

Two of these show why naive guessing fails: Acme Brick's site is brick.com (acmebrick.com redirects there), and monzobank.ai is a parked look-alike.

Try it: resolve "Monzo Bank" (free, no key)

Clean a CSV in Python

import csv, requests

API = "https://namewhere.cybermaxtools.com/api/domain"
KEY = None  # paid key for more than 25 lookups a day: headers={"x-api-key": KEY}

with open("companies.csv") as f, open("companies_with_domains.csv", "w", newline="") as out:
    w = csv.writer(out)
    w.writerow(["company", "domain", "confidence", "status"])
    for row in csv.DictReader(f):
        params = {"company": row["company"]}
        if row.get("country"):
            params["country"] = row["country"]  # ISO-2, e.g. gb
        r = requests.get(API, params=params, headers={"x-api-key": KEY} if KEY else {}, timeout=60).json()["results"][0]
        w.writerow([row["company"], r.get("domain"), r.get("confidence"), r["status"]])

Decide what to trust automatically

Cost

The first 25 lookups a day are free. A $5 pack is 5,000 lookups ($1.00 per 1,000) that never expire; Lookup is $19 a month for 25,000. Comparable tools on the Apify Store charge $0.90 to $2.00 per 1,000 plus run-start fees and need an Apify account (read 1 Oct 2026). In a benchmark of 8 tricky names run on Apify on 24 September 2026, Namewhere got all 8 right and the most-used rival 6.

No code? Find company websites from a list of names in the browser (25 free a day), or paste the list into the Namewhere tool on Apify.

More from the CyberMax blog