A domain is all you get. It is enough.

Turn the part after the at sign into a company record your team can act on. Name, legal name, industry classification, logo set, palette, typefaces, socials and links, read from the company's own site.

Get API key
{ "domain": "stripe.com" }200
nameStripe
legalNameStripe, LLC
naics.code5223
naics.sectorFinance and Insurance
colors[0]#533afd
socials7 profiles

one call · read from the company's own site

[ 01 / How it works ]

An email in. A record out.

Three lines end to end, and the middle one is ours. Nothing to ask the customer for, no vendor list to license.

Resolve

Take the domain off the email

A signup address, a billing contact, a row already in your CRM. Everything below starts from the part after the at sign.

const domain =
  user.email.split('@')[1];

Enrich

Ask for the company

One call returns the name, legal name, industry classification, logo set, palette, typefaces, socials and the links worth keeping.

const company = await hf.brand({
  domain,
});

Store

Write it to the record

Upsert on the domain. Re-run it on a schedule and the record follows the company when it rebrands.

await db.accounts.upsert({
  where: { domain },
  data: company,
});

[ 02 / The demo ]

The same four listings. One call apart.

A directory where every vendor arrived as a domain, and the same directory after each one was resolved. Four real captures, nothing filled in by hand.

4 listings · 0 classified

Vendor directoryno enrichment
Sstripe.comCompany recordunclassified
Industry
Not specified
About
No description available
Profiles
Links
Sshopify.comCompany recordunclassified
Industry
Not specified
About
No description available
Profiles
Links
Ddatadoghq.comCompany recordunclassified
Industry
Not specified
About
No description available
Profiles
Links
Ccanva.comCompany recordunclassified
Industry
Not specified
About
No description available
Profiles
Links

The listing is the product. A directory, a marketplace, a vendor list or an integrations page is only as good as the records in it, and a record holding a domain and nothing else reads as abandoned. Every field that arrives above came back from one call against the company's own site, including the industry code a rule can filter on.

[ 03 / Built for ]

Teams whose records start with a domain.

Anywhere a company arrives as a string and has to become something a person or a rule can act on.

Sales and CRM

Reps open an account holding a domain and nothing else.

The record arrives named, classified and linked before anyone types.

Lead routing

Routing rules need an industry the signup form never collected.

A NAICS code and sector land with the domain, so rules fire on day one.

Onboarding checks

Verifying a business by hand slows every new account down.

Legal name, registered links and public presence come back together.

Marketplaces

A listing with no logo and no description reads as abandoned.

Every seller gets a logo set, a palette and their own description.

Market research

A sector view means opening a few hundred sites by hand.

Run the list through one endpoint and get a comparable row each.

Vendor records

Procurement records go stale the moment a supplier rebrands.

Re-resolve on a schedule and the record follows the rebrand.

[ 04 / Keep going ]

Same API. Other problems.

[ Start ]

Clean web data is one call away.

500 free credits, no card required. Failures are never billed.

Success rate

 

Median scrape

 ms