DEV Community

Michalis Solomou
Michalis Solomou

Posted on

Turning a Company Name into a Website: Enriching SEC Filings with Python

If you've pulled SEC Form D filings before, you've hit this problem: EDGAR gives you a legal entity name like "Nimbus Data Holdings, LLC" — not a website, not an email domain, nothing you can actually use for outreach.

Here's how to close that gap with a free lookup, no paid enrichment tool required.

The tool: Clearbit's Autocomplete API

Clearbit exposes a free, unauthenticated autocomplete endpoint originally built for their own signup forms. It takes a company name and returns likely matches with domains and logos attached. No API key needed for this specific endpoint.

import requests

def guess_domain(company_name):
    resp = requests.get(
        "https://autocomplete.clearbit.com/v1/companies/suggest",
        params={"query": company_name},
    )
    resp.raise_for_status()
    results = resp.json()
    return results[0]["domain"] if results else None


if __name__ == "__main__":
    filings = ["Nimbus Data Holdings", "Ramp", "Notion Labs"]
    for name in filings:
        domain = guess_domain(name)
        print(f"{name} -> {domain}")
Enter fullscreen mode Exit fullscreen mode

That's the whole thing. For well-known companies it's close to 100% accurate. For brand-new, pre-launch startups filing their first Form D, hit rate drops — there's often no public site yet, or the legal entity name doesn't match the brand name at all (a lot of startups file under a holding company name that's different from their product name).

Handling the misses

A few things that meaningfully improve match rate:

  • Strip legal suffixes before querying — "LLC", "Inc.", "Holdings", "Corp" confuse the matcher more than they help. Regex them out first.
  • Fall back to a plain web search if autocomplete returns nothing — not elegant, but for a low-volume pipeline it's fine.
  • Cache aggressively. You'll query the same company names repeatedly across weekly filing batches; there's no reason to hit the API twice for "Ramp."

Why this matters more than it sounds

A funding signal without a domain isn't actionable — you can't email a legal entity name, and most CRMs key off domain, not company name. Enrichment is the unglamorous step that turns a filing into an actual lead.

It's also the exact reason I stopped doing this manually. Funding Signals resolves domain, industry, and a relevance score for every filing before it ever reaches the API response — so by the time you see it, "Nimbus Data Holdings, LLC" is already nimbusdata.io with a category tag attached. There's a free /v1/sample endpoint if you want to compare the enriched output to what you'd get from raw EDGAR + Clearbit.

Top comments (0)