BlogsTAM list: how to build a clean total addressable market list

TAM list: how to build a clean total addressable market list

Posted:April 8, 2026
Read Time:11 min read
Author:By Abhinay Kumar
TAM list: how to build a clean total addressable market list

Ask a founder for their TAM and you'll usually get a dollar figure from a pitch deck. Ask an SDR team and they want a spreadsheet of companies they're allowed to call. I think most TAM problems start when a team builds the spreadsheet with pitch-deck logic: a broad category, a big number, and no rules for which rows belong.

The short answer: A TAM list is every account that fits your ideal customer profile, stored as named companies with a domain and firmographics, and deduplicated against your CRM. It's a list of accounts, separate from the market-size number. To build one, turn your ICP into filters, pull accounts from more than one source, normalize names and domains, test coverage against your CRM, and refresh on a schedule. TAM sourcing in Bitscale handles the pull and the whitespace check against your CRM, then syncs the accounts.

What a TAM list is

Total addressable market (TAM) gets used for two different things, and I keep them apart:

  1. The TAM number: how much revenue exists if every company that could buy your product did. It lives in board decks and fundraising memos.
  2. The TAM list: the account universe behind that number, one row per company. Territories, outbound and ABM run off it.

When someone asks you to "define TAM" for a sales team, they almost always mean the second. A usable row carries a display name, a matching name, the company's primary domain, HQ country, an industry code, an employee range, the technologies you care about, a parent account if there is one, its CRM status (customer, open opportunity, owned, or whitespace), the source it came from and the date it was last checked.

A tighter list beats a bigger one. In a 2025 Gartner survey of B2B buyers, 73% said they actively avoid suppliers who send irrelevant outreach. A loose TAM puts reps in front of companies that were never going to buy, and those buyers remember it.

TAM vs SAM vs SOM: a worked calculation

TAM, SAM and SOM are three nested cuts of the same account list. I'd build all three in accounts first and convert to revenue last, because account counts can be checked against real data and revenue estimates can't.

Layer What it counts Account formula Revenue formula
TAM (total addressable market) Every company that fits your hard ICP filters Accounts left after industry, geography, size and business-model filters TAM accounts × annual contract value (ACV)
SAM (serviceable addressable market) The part of the TAM you can sell to today TAM accounts minus those you can't serve (region, language, tech stack, compliance) SAM accounts × ACV
SOM (serviceable obtainable market) The part of the SAM you can win in a set period Accounts you can work in the period × opportunity rate × win rate SOM accounts × ACV

Filled example

As an illustration only. These inputs are made up to show the math. A company sells a RevOps tool at $20,000 a year to B2B software companies in the US and UK with 200 to 2,000 employees. The product only integrates with Salesforce and HubSpot.

Step Input Math Result
TAM accounts B2B software, 200–2,000 employees, US and UK Count after hard filters 12,000
TAM revenue ACV of $20,000 12,000 × $20,000 $240M
SAM accounts Runs Salesforce or HubSpot Count after the stack filter 4,800
SAM revenue Same ACV 4,800 × $20,000 $96M
Accounts worked this year Team capacity Reps × accounts per rep 1,600
Opportunities 15% of worked accounts 1,600 × 15% 240
SOM accounts (wins) 25% win rate 240 × 25% 60
SOM revenue Same ACV 60 × $20,000 $1.2M

In this example the SOM is 60 of 4,800 serviceable accounts, or 1.25%. I like building SOM bottom-up from capacity and conversion because every input can be checked against last year's CRM data. A top-down "we'll win a slice of the market" figure can't be checked.

Copyable template

Copy this into a sheet and fill in your own inputs. Take the opportunity and win rates from your CRM, and use the last 12 months if you have them.

Line Your input Formula Your result
A. TAM accounts Count of accounts after hard ICP filters
B. ACV Average first-year contract value
C. TAM revenue A × B
D. SAM accounts A minus accounts you can't serve today
E. SAM revenue D × B
F. Accounts worked per year Reps × accounts each rep can work
G. Opportunity rate Opportunities ÷ accounts worked
H. Win rate Closed-won ÷ opportunities
I. SOM accounts F × G × H (never more than D)
J. SOM revenue I × B

One sanity check before you trust line A: compare it with an official count. The US Census Bureau's Statistics of U.S. Businesses counts firms by industry and enterprise size every year (the latest data is for 2022). If your TAM for one industry and size band is far larger than the Census count, your filters are loose or the list is full of duplicates.

TAM, SAM and SOM worked example funnel with Bitscale TAM sourcing callout

How to build a TAM list, step by step

This is the TAM sourcing process I'd run. The order matters most in steps 4 and 5: normalize and dedupe before you pay to enrich anything.

1. Write your ICP as filters

A TAM boundary has to be testable by data. "Mid-market SaaS companies that care about pipeline" isn't a filter. "Software companies, 200 to 2,000 employees, HQ in the US or UK" is.

Split your ICP into two groups:

  • Hard filters decide whether an account is in the TAM at all: industry, geography, employee range, business model.
  • Soft filters decide SAM and priority: tech stack, hiring, funding, leadership changes and other signals.

My co-founder Sanket showed why company size has to be a hard filter. He pulled 1,000 GTM engineer job posts off LinkedIn through Bitscale and ran every job description through AI. At companies under 50 people, nearly 90% of those roles were pure outbound outreach under a new title. At companies with 1,000+ people, that dropped under 40%. The same job post meant a different thing at a different size, so a "hiring" signal only works once size is fixed. His line on it: "If you haven't nailed your ICP, no GTM engineer hire fixes that."

2. Add firmographic and technographic filters

Firmographics (industry, headcount, revenue band, location) give you the TAM. Technographics (what software a company runs) usually give you the SAM, because they decide whether your product can plug in. For a deeper look at stack data and where it comes from, see our guide to technographic data.

3. Pull accounts from more than one source

No single source covers every market. Pull from at least two, keep each source's raw export untouched in its own tab or table, and record which source each row came from. When two sources disagree on a field later, you'll need to know which one to trust.

4. Normalize company names, brands and domains

This is where most TAM lists fall apart, and it's the step behind the question "how do I normalize brand and product names from a mixed list?" My rules:

  • Use the registrable domain as the primary key (example.com, lowercase, no "www", no path). Names change and get misspelled. Domains are far more stable.
  • Keep two name fields. Leave the display name alone, and build a matching name that strips legal suffixes (Inc, Ltd, GmbH), punctuation and extra spaces.
  • Keep an alias table for brands. When a list mixes a parent company, its brands and its products, map each alias to one parent domain and keep the alias as a separate field.
  • Map product names to vendors for technographics. "HubSpot CRM", "Hubspot Marketing Hub" and "hubspot" are one vendor. Store the vendor, and keep the product name as detail.
  • Standardize location and industry codes. Store ISO country codes next to the display value, and map free-text industries to one taxonomy such as NAICS.

5. Dedupe and test coverage against your CRM

Before you switch TAM data providers, or load a new list, run a duplicate-and-coverage test. I think it's the cheapest hour you'll spend on the whole project. Salesforce's State of Data and Analytics report found that data and analytics leaders estimate 26% of their organization's data is untrustworthy, so assume your CRM has problems until you've measured them.

The test:

  1. Count duplicates in your CRM first. Group accounts by normalized domain and count the groups with more than one record.
  2. Pick a sample. Take a few hundred known accounts: customers, closed-won and open opportunities.
  3. Run the sample through each vendor. Record the match rate, how many key fields come back filled, and where the vendor disagrees with your CRM on industry or size.
  4. Count the net-new. How many in-ICP accounts does the vendor return that your CRM doesn't have? That's your whitespace.
  5. Check for vendor duplicates. One company returned as three records will inflate your TAM.

If a new provider matches your known accounts poorly, it'll match your unknown ones poorly too. In Bitscale, whitespace mapping runs step 4 against your CRM for you.

6. Enrich the accounts and find the people

Only now enrich the missing fields and find contacts. If you enrich before deduping, you pay to enrich duplicates. To get from accounts to the right people inside them, see our playbook on how to find decision-makers.

For contact data, I'd use several providers. When I looked at 1M+ email lookups on our platform over a few days in October, no single provider found more than about a quarter of the emails, and about 3 in 10 came from the 4th provider or later. The #1 provider for Europe wasn't the #1 for North America.

7. Sync to your CRM and set a refresh cadence

Push only accounts that pass your required fields. Tag each with its tier and territory, plus the source and a TAM version. Then refresh on a schedule. Markets move faster than most teams assume. In one quarter (April to June 2026), Companies House recorded 192,287 new UK company incorporations and struck 156,515 companies off the register, which held 5,516,377 companies at the end of June. I'd refresh fast-moving segments monthly and stable ones every quarter. And retest your data providers every few months as well, because coverage drifts.

TAM build checklist

  • ICP written as hard filters (industry, geography, size, business model)
  • Soft filters set for SAM and priority (stack, signals)
  • Two or more sources, raw exports kept untouched
  • Registrable domain as the primary key
  • Matching name, alias table and vendor map for technographics
  • CRM duplicate count done before any import
  • Coverage test run on a sample of known accounts
  • Enrichment only after dedupe
  • Tier, territory, source and TAM version on every synced account
  • Refresh date on the calendar, plus a provider retest

Where TAM data comes from

Source Good for Watch out for
Official registries (Companies House in the UK, Census statistics in the US) Legal names, registered status, official counts for sanity checks No work emails or phone numbers. Census data is aggregated counts, with no company names
B2B company databases Fast filtering by firmographics and technographics Coverage varies by region and segment, so test on your own accounts
Your CRM and product data Customers, exclusions, ownership, closed-lost history Duplicates and stale domains, so dedupe first
Websites and job posts Hiring signals, product lines, tech clues Needs parsing, and the same signal means different things at different company sizes
Multi-provider enrichment Filling gaps that one database misses Needs a clear rule for which source wins when fields conflict

If you'd rather hand the whole build to someone else, our guide to list building services compares services with doing it yourself in a tool.

Common TAM list mistakes

  • Treating the TAM number as the list. A $240M market estimate tells a rep nothing about whom to call on Monday.
  • Joining on company name. "Acme", "ACME Inc." and "Acme Software Ltd" will become three accounts unless you key on the domain.
  • Enriching before deduping. You pay for the same company more than once, and conflicts multiply.
  • Mixing parent and subsidiary logic. Decide whether you sell to the site or the group, then model parent accounts the same way everywhere.
  • Assuming one vendor covers everything. Coverage changes by region, so measure it on your own accounts.
  • Building once. A TAM that isn't refreshed slowly fills with closed companies and missing new entrants.

How long it takes to build a TAM list

How long does it take to get a usable account universe from a new TAM vendor? The pull itself is the fast part, as long as your ICP is already written as filters. What decides when the list is usable are the steps after the pull: normalizing names and domains, the CRM coverage test, and agreeing the exclusions with sales.

So I'd ask a new vendor to run your sample of known accounts before you sign. That way the clock starts with your gaps already measured. Most of the delay in TAM projects comes from finding out late that a source doesn't cover a key region.

How Bitscale helps with TAM sourcing

This is the gap we built TAM sourcing in Bitscale to close: the pull, the CRM check and the sync usually live in three tools, and the list breaks every time it moves between them. Here's what it does, per our product pages:

  • Filter a 40M+ company database by headcount, industry, revenue band and geography, plus technographic filters for the stack your product plugs into. Save the definition as a segment that updates as the market changes.
  • Whitespace mapping compares your TAM against your CRM to show which accounts you haven't touched, and you can split it by region or book of business.
  • Tiering by fit and signal combines an ICP score with buying triggers (we track 15) so the TAM is ranked instead of flat.
  • Find the buying committee at each account, with contacts run through one email and phone waterfall across 18+ contact-data providers and 150+ data sources overall. We see 95% email coverage after enrichment.
  • Push to CRM by tier, with tier and territory fields filled. Sync is two-way for HubSpot (Growth plan) and Salesforce (Booster plan), and writes back only the fields that changed.
  • Ready-made playbooks for common list builds, and GTM engineer support on every paid plan, with a dedicated engineer on Enterprise.
Plan Price Credits
Free $0 200
Growth $349/mo ($314 annually) 15K/mo
Booster $799/mo ($719 annually) 50K/mo
Enterprise from $15K/yr Custom

Pricing is per account, actions are unlimited on paid plans, and credits roll over up to 3x.

Try Bitscale free
filter your TAM from a 40M+ company database, see the whitespace against your CRM, and sync the accounts by tier.
Start for free

Frequently asked questions

What is TAM sourcing?

TAM sourcing is the work of turning your ICP into a clean list of named accounts: filtering companies by firmographics and technographics, merging sources, normalizing names and domains, deduping against your CRM, and refreshing the list on a schedule.

How do I build a total addressable market map using account and company data?

Write your ICP as hard filters, pull matching companies from two or more sources, key every account on its domain, and tag each one with industry, size, region and CRM status. Then group the accounts by segment and territory to see coverage and whitespace.

How long does it take to get a usable account universe from a new TAM vendor?

The filtered pull is fast once your ICP is written as filters. Normalizing and the CRM coverage test take longer, and so does agreeing exclusions with sales. Ask the vendor to run a sample of your known accounts before you sign so the gaps show up early.

Is it worth running a CRM duplicate-and-coverage test before switching TAM data providers?

Yes. Count duplicate domains in your CRM, then run a sample of known accounts through each vendor and compare match rate, filled fields and net-new in-ICP accounts. A provider that misses accounts you already know will miss new ones too.

How do you normalize brand and product names from a mixed list?

Key each company on its registrable domain, build a matching name without legal suffixes or punctuation, and keep an alias table that maps brands and products to one parent domain. For tech stack data, map product names to the vendor and keep the product as detail.

How do you define TAM for a B2B sales team?

For a sales team, TAM is the set of accounts that pass your hard ICP filters, such as industry, geography, employee range and business model. SAM narrows it to accounts you can serve today, and SOM to the ones you can realistically win this year.

Sources

Bitscale first-party data and product pages

  • Sanket, Co-founder at Bitscale, LinkedIn post, October 12, 2026: 1,000 GTM engineer job posts pulled through Bitscale; nearly 90% outbound roles under 50 people, under 40% at 1,000+ companies
  • Abhinay, Co-founder at Bitscale, LinkedIn post, October 12, 2026: 1M+ email lookups; no single provider above about a quarter of emails; about 3 in 10 from the 4th provider or later
  • Bitscale TAM sourcing product page (opened November 2, 2026)
  • Bitscale pricing

Statistics and official data

Explore Bitscale

Find decision makers, more insights and contact information about this company on Bitscale

Abhinay Kumar

Abhinay Kumar

CRO | Co-Founder Bitscale

LinkedInTwitter
Outbound Sales
GTM Strategy
Revenue Growth

Abhinay is the CRO and Co-Founder of Bitscale. He drives revenue strategy and go-to-market, helping B2B teams build scalable outbound motion using AI-powered enrichment and automation. Abhinay has a sharp focus on pipeline quality over volume, and his thinking on modern outbound has shaped how hundreds of sales teams approach prospecting. He writes about what actually works in GTM — no fluff, just signal.

View LinkedIn