Use case

Sizing a total addressable market with technographic counts

Count the companies that run a technology, state how many of your list the data can see, and multiply by your own price. A worked method with its traps.

Updated 5 October 20266 min read

A bottom-up estimate of a total addressable market multiplies a count of accounts by what each would pay. The count is the hard half. This guide builds it from technographic data: the companies that run a technology your product needs, or one it replaces, counted from dated website observations, with the denominator printed beside every figure so that a covered count is read as the part of your population the data can see.

Decide what the technology means to your product

A technology count defines a market only once you have said what the technology is to you. There are three cases, and each gives a different set of accounts.

  • A precondition. Your product works only beside the technology. Every company running it is in the market and every company that does not is out.
  • A signal of need. Companies running it are likelier to buy, but others could. The count is the core of the market, not its edge.
  • A rival. Companies running it are the ones you would have to displace. They are a segment of the market, and the dated removals show when each one became available. A company that dropped the rival in the last 90 days, from Technology Changes, is a smaller segment that deserves its own row.

Write the choice down before you count. It decides whether the technology belongs in the filter, in the numerator or in a separate row of the estimate.

Three counts to keep apart

Every figure in the estimate should be one of three counts, and you should be able to say which.

CountWhere it comes fromWhat it is
PopulationA census, a registry or a trade bodyCompanies that fit the profile, whether or not anyone has observed their website
CoveredWebsite Profile for your list, or the cohort of a market_series rowThe part of the population whose website was observed
CarryingTechnology Stack for your list, or the count of a tech_prevalence rowThe covered companies on whose website the technology was detected

The covered count is the part of your population that sits in the Fokals company index with an observed website, and the estimate is the carrying share of the covered, applied to the population. Publish the three numbers together and never the product alone. Every dataset and column named here is defined in the data dictionary.

Counting from a list you hold

The most defensible count starts from a list of accounts that could buy, taken from your own source. Match the list to the Fokals company ID first, by domain matching or, for listed companies, by ticker and MIC, ISIN or LEI. Then load at least seven days of observations from the marketing stack dataset, because it refreshes daily to weekly, and run this.

-- my_accounts: your list, one row per company, matched to company_id
-- :technology is a technology id from the catalogue
with covered_ids as (
  select distinct company_id from company_site_facts
),
carrying_ids as (
  select distinct company_id
  from company_technologies
  where technology = :technology
    and missing_since is null
)
select
  count(*)               as list_size,
  count(cov.company_id)  as covered,
  count(car.company_id)  as carrying
from my_accounts a
left join covered_ids  cov on cov.company_id = a.company_id
left join carrying_ids car on car.company_id = a.company_id;

A row with missing_since set is a tool absent from recent observations and not yet recorded as removed, so a count of what runs today leaves it out.

Take Acme Robotics, an invented vendor whose product works only beside one commerce platform. The example is illustrative. Its list holds 12,000 retailers, and the query returns 7,800 covered and 1,170 carrying. Three figures follow.

  • The floor is 1,170 accounts, the companies detected running the platform.
  • The estimate is 12,000 times the carrying share, which is 15 per 100 of the covered, or 1,800 accounts. It holds if the 4,200 companies with no observation resemble the 7,800 with one.
  • The gap between the two, 630 accounts, is the assumption, and it is the number to show.

Show the result as one table, so that no figure travels without its denominator.

LineValueHow it is read
List12,000The population you chose
Covered7,80065 per 100 of the list
Carrying1,17015 per 100 of the covered
Accounts, floor and estimate1,170 and 1,800Carrying, and list times the carrying share
Annual value, floor and estimate10.5 and 16.2 millionAt an annual price of 9,000 per account

Test the assumption where you can. Add the country and size band of your own list to the select and the group by, and read the covered share by segment. A segment with 80 covered per 100 supports its estimate. One with 40 rests on the assumption, so report it as a range. The price comes last and is yours: the figure per account comes from your own pricing and sales history.

Counting from the weekly series

Without a list, the weekly market series give the covered and carrying counts of a segment directly, with no company named. The metric for a technology is tech_prevalence: followed by its technology id, and GET /api/v1/series/metrics returns the live catalogue with the subjects of each family. This query reads Market Series for the latest week by country.

select
  dimension,
  count  as carrying,
  cohort as covered,
  rate   as per_100_websites
from market_series
where metric = 'tech_prevalence:' || :technology
  and dimension_kind = 'country'
  and window_days = 7
  and as_of = (select max(as_of) from market_series)
order by carrying desc;

Read it with four rules.

  1. Keep one window. The cohort of a row depends on the window, so mixing windows mixes denominators.
  2. Every row stands on a cohort of at least 20 websites, so a segment smaller than that returns no row. Widen the cut until it does.
  3. Expect the rows of a cut not to add up to the all row. A website with no industry label belongs to no industry.
  4. Count websites, not companies. A company with two websites counts twice here and once in the list method.

To turn a row into accounts, apply its rate to an outside population for the same segment: accounts equal population times rate divided by 100. Carry the covered share beside it, which is the cohort over the population.

If you have both routes, compare them. Set the carrying share of your list in one country beside the series rate for that country. A large gap does not mean one route is wrong. It means your list differs from the covered set, for example by leaning towards larger companies, and that is a finding to report with the estimate rather than average away. The same series, read for one vendor over time, are the subject of measuring an installed base.

Cutting by industry, size and country

A market is a set of segments with different prices, so the cuts matter. In your own list you cut by whatever attributes it holds. In the series the cuts are the dimensions of Market Series: industry, sector, country, size and market, and the catalogue says which exist for each family, so check it before you plan a cut.

Each cut has its own definition. Industry is the label of the company website, so map the codes of a registry onto it with a crosswalk, and country, the headquarters country, is the direct cut against a registry population. Size bands are built from stated headcount, so a size cut describes the companies that state a count. The website labels that carry business model, target customer size and growth stage are shown in the dashboard and the data browser, and give a further view of each account in your list.

How to read the count

  • A detection shows presence. A technology is detected from page content, scripts, network requests, response headers and DNS records. A company with no detection is unknown, so a count of companies without a tool is an upper bound.
  • Built for web-visible tools. The method is strongest for products whose buyers show their tools on the web, such as commerce, analytics, advertising and marketing technology.
  • A website is not a licence. The count is of websites on which a tool was detected, not of seats, users or spend.
  • A dated snapshot. Every series row is written once for its as-of Sunday, so an estimate is a count at a date, and you can reproduce it exactly later. Re-run it on a later as-of date to see the market move.

Frequently asked questions

What is a bottom-up TAM and how is it calculated?

A bottom-up total addressable market is built by counting the accounts that could buy your product and multiplying by what each would pay in a year. A top-down figure starts from the spend of a whole industry and takes a share of it. The bottom-up count can be audited account by account, which is why it needs a stated population, a covered share and a price from your own sales data.

How many companies use a particular technology?

The data can say how many websites show it, among those observed. A tool is detected from page content, scripts, network requests, response headers and DNS records. That is a count of visible use, not of paying customers or seats, and it should be stated with the number of websites observed: the count over the cohort in the weekly series.

Why does the number of websites running a technology keep rising?

Often because more websites are being observed, not because more have adopted it. A raw count rises with coverage. A same-store rate counts only websites observed since before the window began, and adds and removals are counted as changes between observations, so a first observation is a baseline and adds nothing. Use the rate and the cohort, not the raw count.

Is technographic data good enough to size a market?

It sizes the part of a market whose tools show on the web, provided you state the denominator. A tool is detected when its signature appears in the page content, scripts, network requests, headers or DNS records of a website, so the carrying count is a floor. Show a range, and check the covered share of your own list before you quote a figure.

What is the difference between TAM, SAM and SOM?

TAM is every account that could buy the product. SAM is the part your product, geography and channels can serve, and a technology filter usually sits here. SOM is the part you can win in a stated period, set by your sales capacity and win rate. Technographic counts help size the first two. The third comes from your own pipeline history.

The queries and code on this page are examples to adapt. Test them in your own environment before you rely on them.