How to enrich company records from their own websites
October 5th 2026 · Akash Rajpurohit
Company records go stale in a specific way: the firmographics stay right while the description quietly stops describing the company. A business repositions, changes who it sells to, or pivots outright, and the record still says what it said two years ago.
The website changed the day it happened. It is the most current source about a company that exists, and the least structured.
TLDR
- The homepage reliably tells you what they sell, to whom, and how they position it. Those are stated deliberately.
- It does not reliably tell you headcount, revenue or funding. Do not infer them.
- An empty field beats a plausible wrong one, because wrong values propagate and are never questioned.
- Read the pricing page for business model and segment. It is often more informative than the about page.
- Store what you extracted and when, so a wrong value can be traced rather than argued about.
What a website actually tells you
A homepage exists to answer “what is this and is it for me” in a few seconds. That makes a small set of things highly reliable:
What they sell. Stated in the first heading, usually in plain terms, because ambiguity costs them conversions.
Who they sell to. Either explicitly (“for engineering teams”) or through unmistakable signals: the logos shown, the terminology, whether pricing is self-serve or a form.
Category and positioning. How they describe themselves relative to alternatives, which is what you want when segmenting rather than an industry code assigned years ago.
Business model. Whether it is subscription, usage-based, one-off or enterprise sales is nearly always visible from the pricing page, and it tells you more about who they are than most firmographic fields.
Brand assets. Logo, colours, typography. Concrete, extractable, and useful anywhere you display the company.
What it does not tell you, and where people go wrong
The temptation is to fill every field in your schema because the schema has one. This is the mistake that matters.
Headcount. A homepage almost never states it. A careers page with eight roles could be a company of twenty or two hundred. Inferring a band from indirect signals produces a number that looks like data, gets written into a field designed for real data, and then drives segmentation and scoring that nobody re-examines. If headcount matters, get it from a source that actually knows.
Revenue and funding. Occasionally announced, usually absent, frequently stale when present. A funding badge from 2023 is not current.
Location. Harder than it looks. A footer address might be a registered office, a coworking space or one of several sites.
The general rule: an empty field is a known unknown and a wrong field is a silent error. Enrichment pipelines are judged on coverage, which creates constant pressure to guess, and that pressure is exactly what makes them untrustworthy.
Which pages to read
Diminishing returns set in fast, so keep the list short:
| page | tells you |
|---|---|
| Homepage | what, for whom, positioning, category |
| Pricing | business model, segment, self-serve or sales-led |
| About | stage, story, sometimes team size |
| Careers | what they are investing in |
| Docs, if any | technical depth, whether developers are the buyer |
The homepage is the one every company has and answers most of the questions. Start there and add pages only when a specific field justifies it, because each extra page is another fetch and another chance to introduce noise.
Extract into a schema, and let it be empty
Define the fields you want and allow nulls throughout:
{
"domain": "example.com",
"name": "Example",
"one_liner": "Invoicing for freelancers",
"category": "accounting software",
"sells_to": "b2b",
"customer_type": "freelancers and small studios",
"business_model": "subscription",
"self_serve": true,
"evidence_url": "https://example.com/",
"extracted_at": "2026-11-24T10:00:00Z"
}
Two fields there earn their place beyond the obvious. evidence_url means any value can be traced back to the page it came from, which turns “this looks wrong” into a thirty-second check. extracted_at means you know how old it is, which is the entire reason you went to the website instead of a provider.
Notice what is absent: no headcount, no revenue, no employee band. Not an oversight.
Refresh on a sensible cycle
Websites change less often than they feel like they do. Quarterly is enough for most enrichment, with a faster cycle for accounts you are actively working.
The signals worth watching between refreshes are the ones that indicate real change: a different one-liner, a restructured pricing page, a new category in the headline. Those are repositioning events, and they matter far more to a sales or research workflow than a copy tweak.
The part that is genuinely hard
Everything above assumes you got the page. That assumption fails more often than expected.
Company sites are disproportionately built on frameworks where the content only exists after JavaScript runs, so a naive fetch returns an empty shell. Small business sites use unusual templates that defeat generic extractors. And a page that returned a consent wall will enrich beautifully into complete nonsense, because a wall is well-formed prose and your extractor will happily read it.
So the check that matters is upstream of the schema: did real content come back, and is there enough of it. An enrichment pipeline without that check does not fail loudly, it fills your CRM with confident descriptions of cookie notices.
If you want that part solved, brand resolves a domain into identity, description, logos, colours and fonts in one call, cached so the second lookup is instant. For anything schema-shaped beyond that, extract pulls a page into fields you define and tells you when a value was not on the page instead of inventing one. Failures are never billed, and a work email gets you 500 free credits to run it across a real account list.
The company enrichment use case shows the whole flow, from an email domain to a filled-in record, using real responses.
[ FAQ ]
What can you reliably learn from a company's homepage?
What they sell, who they sell it to, their category, their positioning and their brand assets. All of that is stated deliberately and kept current, because the page exists to communicate it.
Can you get headcount or revenue from a website?
Rarely, and you should not try. Those figures are usually absent, out of date when present, and easy to infer wrongly. A guess written into a structured field is worse than an empty field.
Why use the website when data providers exist?
Because the website is the most current source and the only one the company controls. Providers lag repositioning, rebrands and pivots by months, and the homepage changed the day it happened.
What is the most common enrichment mistake?
Filling a field because the schema has one. An empty field is a known unknown; a plausible wrong value propagates through segmentation and scoring and nobody questions it.
Which page should you actually read?
The homepage for positioning, the pricing page for model and segment, and about or careers for stage. The homepage alone answers most questions and is the only page every company has.
Try it on your own URLs.
Sign up with a work email for 500 free credits, no card required.