Company Name to Domain Finder – Bulk Website Lookup avatar

Company Name to Domain Finder – Bulk Website Lookup

Pricing

from $0.50 / 1,000 domain founds

Go to Apify Store
Company Name to Domain Finder – Bulk Website Lookup

Company Name to Domain Finder – Bulk Website Lookup

Find the official website domain for a list of company names. Builds candidate domains, checks DNS, verifies each homepage (site name, schema.org, copyright, city, phone) and returns the best domain with a confidence score. No search engines. Misses are free.

Pricing

from $0.50 / 1,000 domain founds

Rating

0.0

(0)

Developer

Cemal Atakli

Cemal Atakli

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Find the official website domain for a list of company names. Paste names from a CRM export, an event attendee list or a company registry, and get back acme.com with a confidence score. Use it before email finding, enrichment or CRM deduplication. Bulk company-to-domain lookups cost $0.30 per 1,000 domains found. Companies we cannot match are free.

The Actor does not scrape Google, Bing or DuckDuckGo. It builds candidate domains from each name and checks them in DNS. Then it opens each live homepage and checks that the website really belongs to that company.

What it does

For every company name:

  1. Builds candidate domains. It removes the legal form (Inc, LLC, Ltd, GmbH, SA, BV, AB and about 100 more) and tries the joined name, a hyphenated version, a version without generic words, the first two words and an acronym. These go on .com, the country domain (.de, .co.uk, .com.au...), .net, .org, .co and .io. German names also get umlaut spellings (müller → mueller / muller).
  2. Filters by DNS. Domains that do not resolve are dropped. It also checks for an MX record, so you know whether the domain receives email.
  3. Verifies the homepage. It reads the page title, og:site_name, schema.org Organization name, the copyright line and the page text, and compares them with the input name. If you supplied a city or phone number, it looks for that too.
  4. Rejects bad matches. Parked or for-sale pages, registrar placeholders, empty pages and redirects to directories or marketplaces (Facebook, Yelp, Amazon, Booking...) are all thrown out. Redirects are followed, so acme.co.uk → acme.com returns acme.com.
  5. Returns the best domain with a 0–100 confidence score, the signals that fired, alternatives and the rejected candidates with reasons.

Use cases

  • Lead generation and cold email. Turn a list of company names into domains, then run an email finder or contact finder on them.
  • Registry and government data. Business-registry exports (UK Companies House, French SIRENE, US state filings, FMCSA carriers) have names but no websites.
  • CRM hygiene. Fill the empty website field on accounts and deduplicate by domain.
  • Events and trade shows. Get domains for exhibitor or attendee company names you are allowed to use.
  • AI agents. Give an agent a "name → domain" tool with a confidence score, so it can decide when to trust the answer.

Input

The simplest input is a list of names. Add | country | city | phone to make matching more precise.

{
"companies": [
"Hawkshead Relish Company | GB",
"Fairmount Bagel | CA | Montreal",
"Puccini Bomboni | NL | Amsterdam",
"Stripe, Inc. | US"
],
"minConfidence": 50
}

Other ways to give input:

  • bulkText: paste a CSV with a header row. The Actor reads the name/company/company_name/organization, country, city and phone columns. You can also paste one name per line.
  • sourceFileUrl: a public TXT/CSV link, for example a Google Sheets "publish to web" CSV.
  • API objects: {"name": "Acme GmbH", "country": "DE", "city": "Berlin", "phone": "+49 30 1234567"}.
  • defaultCountry: the country for rows that have none.
  • extraTlds: extra domain endings to try, such as ai, app or com.au.
OptionDefaultMeaning
minConfidence50Score needed to return (and charge) a domain. Use 70+ for strict matching. Use 35–45 to also accept exact-name domains that we could not read because of bot protection.
maxCandidatesPerCompany30Candidate domains checked in DNS
maxWebsitesPerCompany6Live homepages downloaded and scored (best first; stops early on a strong match)
includeRejectedtrueAdds rejectedCandidates with the reason for each one
respectRobotsTxttrueSkips homepages that robots.txt disallows

Output

One row per input company:

{
"inputIndex": 1,
"companyName": "Fairmount Bagel",
"country": "CA",
"city": "Montreal",
"phone": null,
"found": true,
"domain": "fairmountbagel.com",
"website": "https://fairmountbagel.com/",
"confidence": 97,
"confidenceLevel": "high",
"siteName": "Fairmount Bagel",
"pageTitle": "Fairmount Bagel | Montreal Bakery | Hand made bagels",
"signals": ["domainMatchesName", "nameIn:copyright", "nameIn:ogSiteName", "nameIn:schemaWebsiteName", "nameIn:title", "nameInPageText", "cityMatch", "hasMx"],
"hasMx": true,
"redirectedFrom": null,
"alternatives": [],
"candidatesGenerated": 10,
"candidatesResolving": 2,
"candidatesChecked": 2,
"rejectedCandidates": [
{"domain": "fairmount.com", "status": "low-score", "confidence": 0, "finalDomain": "fairmount.com", "siteName": "Fairmount Funds"}
],
"notFoundReason": null
}

When nothing passes the threshold, the row has found: false and a notFoundReason. If there was a weak candidate, it is shown as bestGuess. These rows are free.

Confidence levels: high ≥ 80, medium 60–79, low < 60.

Signals you may see:

  • domainMatchesName: the domain is the company name.
  • nameIn:title / ogSiteName / schemaName / copyright: the name was found in that part of the page.
  • cityMatch / phoneMatch: your city or phone number appears on the page.
  • countryTldMatch: the domain ending matches your country.
  • locationNotConfirmed: you gave a city or phone, but the homepage does not mention it. The score is capped at 49, because a same-name company elsewhere is likely.
  • unverifiedBlockedSite: the site blocks bots, so only the domain name was scored (max 40).
  • viaRedirect: the candidate redirected to the returned domain.

Pricing (pay per event)

EventPrice
Actor start$0.00005
Domain found (row with found: true)$0.0005 ($0.50 / 1,000)
Not found, errors, rejectedfree
Store actorPrice per result
haketa/bulk-company-domain$0.0009
wildorigins$0.001
hydrafetch$0.008
this Actor$0.0005, and misses are free

Prices come from the public Apify Store, October 2026. The Maximum cost per run setting is respected: the Actor stops cleanly when the next result would exceed it.

Limits (read before buying)

  • Generic names miss more often than with search-engine tools. We do not use search engines. If a company's website is not named after the company (Joe's Plumbing → joesplumbingatx.com), we will not find it. These rows are free, but expect a lower hit rate on very small local businesses than on brands. In our test of 20 well-known European and US brands, 17 were found. 2 of those were questionable (a regional or brand-alias site instead of the main one), so check alternatives.
  • Same-name companies. "Delta Plumbing" exists in many cities. Give a city or phone to make the match safe. Without one, a name-only match can be another company with the same name.
  • Bot-protected websites (Cloudflare, Akamai, AWS WAF) cannot be read. When the exact-name domain resolves but blocks us, it is reported as a bestGuess with up to 40 points.
  • Names in non-Latin scripts (Japanese, Chinese, Arabic, Cyrillic) are not transliterated. Add the Latin/English company name.
  • Only the homepage is read (one request per candidate site, plus robots.txt), so we are not crawling anyone's site.

FAQ

Is it legal? It uses public DNS and each candidate's public homepage. It sends one request per site, honors robots.txt and identifies itself with a contact address in the User-Agent. It does not scrape search engines.

How fast is it? About 20 companies in 30 seconds at 16 in parallel on 256 MB.

Can I get the LinkedIn page or emails too? Chain the found domains into Website Contact Finder.

Use with AI agents (Apify MCP)

This Actor works as a tool in the Apify MCP server. An agent can call gazidev/company-domain-finder with {"companies": ["Acme GmbH | DE | Berlin"]} and read domain, confidence and signals from the dataset. Ask the agent to accept only confidenceLevel: "high" for unattended workflows.