How to Build Your Total Addressable Market
We gave Sales Navigator, AI Ark and Exa the same brief: every B2B software company with 51 to 1,000 people, headquartered in the US, Canada, the UK or Europe.
Sales Navigator found 15,132. AI Ark found 5,277. Exa found 1,480.
Those are the counts after cleaning, and they still don’t agree. So which one is the market?
None of them. Together, the three found 16,446 companies. A fourth list, the TAM we had pulled from Crunchbase in January, told us the real market is at least 20,000.
Given the same brief, B2B software companies with 51 to 1,000 people in the US, Canada, the UK and Europe, Sales Navigator found 15,132 companies, AI Ark 5,277 and Exa 1,480 after cleaning. Deduplicated, the three together found 16,446. The estimated market is at least 20,000 companies, so none of the three, and not even all three together, is the full TAM.
Your TAM (total addressable market) isn’t a number a data provider gives you. It’s a table you build: one row per company, pulled from several sources, cleaned with your own rules, and measured against what every source missed.
Here’s how we built ours in October, what each provider added, how to estimate the companies nobody found, and why the companies several providers agree on make better accounts.
Why do data providers return different numbers for the same ICP? #
Because each one answers a different question.
- Sales Navigator lists every company that matches your filters.
- AI Ark can search by filters too, but we used it for lookalikes: give it a set of companies and it finds others that look like them. We gave it our customers, plus keyword searches.
- Exa searches by meaning. You describe the company in plain words (“AI agent platform headquartered in the United States, 50 to 1000 employees, selling to businesses”) and it returns companies whose websites match.
- Crunchbase was our first TAM. In January, before this build, we pulled Seed to Series C software companies from Crunchbase. It never got the October brief, and that’s what makes it useful: a list built separately, a different way, that we can check the other three against.
So the same brief produced three different slices of the market. Then the data itself disagrees, for five reasons we hit over and over.
1. Industry labels are wrong in both directions
When we searched LinkedIn’s software, internet and security industries, about half of what came back was B2B software. The rest were IT consultancies, agencies, consumer apps, public bodies, media companies and pages too thin to tell.
It fails the other way too. Only 61% of the B2B software companies in our final TAM are filed under “Software Development” on LinkedIn. The other 39% are spread across 177 other industries. Here are two of them, as each source labels them.
LinkedIn and AI Ark file Gcore under IT Services and IT Consulting, and Crunchbase tags it artificial intelligence, cloud data services, content delivery network, IaaS, software and web hosting. Classified from its own description, it is cloud software. LinkedIn and AI Ark file Alloy under Financial Services, and Crunchbase tags it compliance, fintech, fraud detection, identity management and SaaS. Classified from its own description, it is fintech software.
Use your own classification, not the provider’s. Write your categories once, ideally the same values as the industry field in your CRM, and classify every company from its own description into that list. We used eight: B2B SaaS, AI software, fintech software, cybersecurity, data infrastructure, cloud software, developer tools and adjacent B2B technology, with “not enough information” as an allowed answer. Your TAM, your CRM and your reports then use the same categories, and those categories match how you sell, not how LinkedIn or Apollo files companies.
2. Company size is self-declared or out of date
A company page that declared “1 to 10 employees” came back in a 51 to 200 search, because the size a page declares and the headcount LinkedIn filters on are two different numbers. And sizes age fast: some of the best-known AI companies had passed 1,300 people on LinkedIn while our January Crunchbase list still had them under 1,000.
3. Counts move
The same Sales Navigator search lost about 15% of its results in four days. A count is a snapshot, so count again right before you pull.
4. One company, several entities
Large companies have subsidiaries and country pages that look like separate companies, SAP Americas for instance. We removed 1,915 of them, mostly acquired subsidiaries, before they could reach a rep as new accounts.
5. Providers identify companies differently
Sales Navigator and AI Ark gave us LinkedIn pages. Exa gave us websites, not LinkedIn pages. Crunchbase gave us both, and some of its LinkedIn links were dead or pointed to the wrong company. Before you can compare sources, every row needs the same ID.
Whatever the source, about six in ten companies it returned didn’t survive cleaning. No source was clean.
How do you build one TAM from several data providers? #
Five steps.
- Write the brief once. Industry, size, geography, exclusions. Every source gets the same brief, translated into the way that source searches.
- Pull each source the way it works best, and save the query and the date with the results. Filters for Sales Navigator, lookalikes and keywords for AI Ark, plain-language descriptions for Exa.
- Give every company one ID. We used the LinkedIn company ID: websites redirect and company names collide, but a LinkedIn company page has one ID. Sources that only return a website get resolved to their LinkedIn page first.
- Run every company through the same enrichment and the same classification, whatever source it came from. We read headcount, growth and location from LinkedIn for every row, so a company found by Exa has exactly the same columns as one found by Sales Navigator.
- Remove noise with written rules, and keep the source on every row. Subsidiaries, services firms, existing customers. The source tags are what make the next three sections possible.
If one source and a clean list are enough for you, this guide covers it step by step.
What does each data provider add to a TAM? #
Here is the 51 to 1,000 band: the size range all three providers were asked about, with the January Crunchbase list as the fourth column. These numbers measure how we used each source, not the size of its database. “Best-fit tier” is the group of accounts our scoring ranks highest, the ones we put in front of a rep first.
| Sales Navigator | AI Ark | Exa | Crunchbase | |
|---|---|---|---|---|
| How we used it | Filters | Lookalikes of our customers, plus keywords | Plain-language descriptions, by category and country | Our first TAM, pulled in January, Seed to Series C |
| Companies found | 15,132 | 5,277 | 1,480 | 3,747 |
| Found by no other source | 8,748 | 858 | 103 | 711 |
| New companies, added in this order | 15,132 | +1,176 | +138 | +711 |
| Of those, in our best-fit tier | 2,160 | +170 | +21 | +70 |
The final TAM for this band holds 17,157 companies, 2,421 of them in our best-fit tier.
Sales Navigator alone holds 88% of it. If you stopped there, you’d think you were done.
But the 12% it missed holds 261 of those 2,421 best-fit accounts. About one in nine of the accounts we most want to win were invisible to the biggest source.
Read the table two ways, because you need both:
- Found by no other source doesn’t depend on order. It’s what you’d lose if you dropped that source.
- New companies, added in this order does depend on order. Put Exa first and it would add all 1,480. It’s the number for a waterfall decision, where you pull sources one after another: given what I already have, what does the next source bring?
How do you estimate the companies every provider missed? #
You can’t count what nobody found. You can estimate it, with the method ecologists use to count fish in a lake.
Catch 100 fish, tag them, let them go. The next day, catch 100 again. If 10 of them carry a tag, your first catch was about a tenth of the lake, so the lake holds about 1,000 fish.
For a TAM, the first catch is what your providers found. The second catch is a list built separately, a different way. For us, that was our January Crunchbase list, pulled months before the build.
Crunchbase had 3,747 companies in our scope. Sales Navigator had already found 2,730 of them, 73%. If Sales Navigator finds 73% of the companies on a list it never saw, it likely finds about 73% of the whole market. It found 15,132, so the market is about 15,132 ÷ 0.73, roughly 20,800 companies.
Sales Navigator found 15,132 companies. Our January Crunchbase list, built separately, held 3,747 companies in the same scope, and 2,730 of them (73%) were already in Sales Navigator’s results. Capture-recapture: 15,132 × 3,747 ÷ 2,730 gives an estimated market of about 20,800 companies.
That’s the whole method, known as capture-recapture:
Market size ≈ (companies on list A × companies on list B) ÷ companies on both lists
Run with the three providers combined against Crunchbase instead, it gives about 20,300, close to the first estimate.
Two caveats. The lists must be built independently, or the overlap is inflated. And both lists favour companies that are easy to see. Our Crunchbase list only holds funded companies, which are probably easier for Sales Navigator to find too, so the hidden ones are hidden from both: read the result as a floor. We plan on 21,000 to 24,000 companies, which puts our 17,157 at 70% to 85% of the market.
In the 51 to 1,000 band, Sales Navigator found 15,132 companies, and AI Ark, Exa and the January Crunchbase list added 2,025 more, for a TAM of 17,157. Against an estimated market of 21,000 to 24,000 companies, about 4,000 to 7,000 were found by no source.
Why it’s worth five minutes:
- You know your coverage, not just your count. “17,000 companies” says nothing about what’s left. “About 80% of our market” does.
- You know when to stop buying data. At 70% coverage, another source is worth testing. At 95%, it probably isn’t.
- You get a market size you can defend, built from your own definition and your own data.
What did every provider miss?
We looked at 60 companies that were in Crunchbase but that none of the three providers had found.
- 20 weren’t misses: they had grown past 1,000 people since January.
- 20 sat under LinkedIn industries we never searched, like Real Estate, E-Learning or Climate Data, and about 6 of those were real B2B software companies.
- Most of the rest were identity problems: dead or wrong LinkedIn links, or no company page we could match.
The gaps in a TAM aren’t random. They come from companies that changed size, labels you didn’t think to search and links that broke, and each one tells you what to fix in the next build.
Are companies found by several data providers better accounts? #
In our data, yes, by a wide margin. The overlap most teams delete as duplicates is a fit signal, and it’s free.
Share of companies in our best-fit tier, by how many of the four sources found them. 51 to 200 people: 5% with one source, 11% with two, 19% with three, 26% with four. 201 to 500 people: 20%, 37%, 55% and 73%. 501 to 1,000 people: 29%, 47%, 73% and 78%. The share rises with every additional source in every size band; the four-source groups hold 18 to 80 companies each.
It rises in every size band, so it isn’t only that bigger companies show up in more databases. The four-source groups are small (18 to 80 companies), so read them as a direction, not as precise rates.
It’s a correlation, not a cause. Companies that several databases know about tend to be more established and better funded, and our scoring reads funding. Our AI Ark searches also started from our customers.
So keep a source count on every row. It costs nothing, it breaks ties between two accounts with the same score, and it’s a check on your scoring: if your best-fit tier is full of companies only one source has ever heard of, look twice.
How do you keep a TAM accurate after you build it? #
A TAM starts going stale the day you finish it. Counts move week to week, companies cross your size limits within months, and some get acquired.
What keeps ours accurate:
- Every query lives in a file, with the date it last ran. Rebuilding is a rerun, not a project.
- Every row keeps its source and its date, so you can see which source is drifting.
- Reps can add the companies the build missed, in a separate table so the next rebuild doesn’t overwrite them. We read that table before every rebuild: it’s the most honest list of what our queries can’t see.
- The coverage estimate runs again after each refresh. If coverage drops, a source changed or the market did.
How do we build and run our TAM on Cargo? #
Our coding agent drove the whole build through Cargo’s CLI. Every provider is a Cargo connector, the searches, enrichment and classification ran on Cargo, and the result is one table that our account scoring and the app our reps work from both read. When a rep adds a company the build missed, it lands next to the rest, and the next rebuild starts from there.
See how Cargo can build and run your TAM.
Prefer to build it yourself? Start with the build-tam-list skill, and use extract-sales-navigator-search when a Sales Navigator search returns more than 1,000 companies.
FAQ #
It depends on the job, and no single source was complete in our test. For B2B software companies with 51 to 1,000 people in the US, Canada, the UK and Europe, Sales Navigator found 88% of the final list, more than any other source. The companies it missed still included about one in nine of our best-fit accounts, found by AI Ark (lookalikes), Exa (search by description) and our earlier Crunchbase list.
Enough that the next one adds little. Pull sources one after another, count the new companies each one adds, and estimate your coverage with capture-recapture. In our build, three providers plus our January Crunchbase list reached an estimated 70% to 85% of the market, and the fourth source still added 711 companies nobody else had.
Use capture-recapture. Take two company lists built independently, count the companies that appear on both, and compute (list A × list B) ÷ overlap. If one list contains 73% of the other’s companies, it probably contains about 73% of the market. Treat the result as a floor, because both lists tend to miss the same hard-to-see companies.
In our build, yes, as a correlation. Among companies with 201 to 500 people, 20% of those found by one source were in our best-fit tier, against 73% of those found by all four, and the share rose with each additional source in every size band. Companies that several databases know about tend to be more established and better funded, so use the source count as a tiebreaker and a check on your scoring, not as a score on its own.
The LinkedIn company ID. Websites redirect and company names collide, but each LinkedIn company page has one numeric ID. Resolve sources that only return a website to their LinkedIn page first, merge on the ID, and keep each source’s tag on the row so you can measure overlap later.
Use it to search, not to classify. In our TAM, 39% of the B2B software companies sat under a LinkedIn industry other than Software Development, across 177 industries. Classify each company from its own description into categories you define, ideally the same values as your CRM’s industry field, and allow “not enough information” as an answer.
Often enough that drift doesn’t pile up. In our build, one Sales Navigator count moved by about 15% in four days, and a third of the missed companies we checked had outgrown the size range within nine months. Keep the queries in a file, recount right before each pull, and rerun the coverage estimate after every refresh.
Build this workflow instead of reading about it.
Cargo is the GTM infrastructure your coding agent builds on: enrichment, scoring, routing and outreach, defined in code and run in production.