Company name to website: clean a list of companies in Python, with confidence scores
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 name | Domain | Confidence | Evidence | Look-alikes rejected |
|---|---|---|---|---|
| Monzo Bank | monzo.com | 0.99 | Wikidata + homepage brand match | monzobank.ai, monzobank.org |
| Acme Brick | brick.com | 0.99 | Wikidata + redirects from acmebrick.com | acmebrick.net, acmebrick.org |
| Notion Labs | notion.com | 0.99 | Wikidata + redirect from notion.so | – |
| Rivian Automotive | rivian.com | 0.91 | Wikidata | rivianautomotive.com, .net, .org |
| Patagonia | patagonia.com | 0.9 | Wikidata + DNS | patagonia.io, .ai, .net |
| Gusto | gusto.com | 0.9 | Wikidata | gusto.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
- Resolved (confidence at or above your threshold, 0.6 by default): write it to the CRM.
- Low-confidence: send to a short review queue with the alternatives the API returned.
- Not-found: leave the field empty rather than guessing.
- Pass a country (ISO-2) when the list is from one market: it prefers the local company with the same name.
- If you already have a domain, URL or email, send it instead: the API verifies it (does it resolve, is it parked, whose brand is on the homepage).
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.
