TAM, SAM and SOM Calculator
Turn a broad market-size headline into a practical commercial estimate. Enter the total addressable market, the percentage your offering can actually serve, and the percentage of that serviceable market you can realistically obtain.
Run — free
The calculator returns TAM, SAM, and SOM in the same currency or unit as your original figure. It uses a transparent two-stage calculation, making the result easy to review, explain, and reproduce in planning documents, investor materials, or internal forecasts.
Start with a defensible total addressable market
TAM represents the full demand available if every relevant buyer could purchase your product or service. Begin with a figure that matches the decision you are making: annual revenue opportunity, number of subscriptions, transaction volume, or another clearly defined unit. Record the period, geography, customer category, and source beside the estimate, because a large number without boundaries is difficult to evaluate. This calculator does not discover TAM for you; it converts an existing TAM assumption into narrower market layers. Before entering the value, check that it does not mix incompatible periods or units. For example, do not combine monthly spending from one segment with annual spending from another. If the estimate is monetary, all returned figures use the same currency, but the calculator intentionally does not attach a currency label because the arithmetic also works for customers, seats, orders, or physical units. A careful TAM definition gives every later percentage a clear denominator and makes revisions easier when research changes.
Translate TAM into the market you can serve
The serviceable percentage describes the portion of TAM that fits your actual offer and operating reach. It may reflect product compatibility, supported languages, regulation, distribution coverage, customer size, technical requirements, or the territories where you can sell. The calculator multiplies TAM by this percentage to produce SAM. A serviceable assumption of 30 means that three tenths of the total market falls within the current business scope; it does not mean the company will win that demand. Build the percentage from explicit exclusions where possible. If a market study covers every business but your product only supports a specific industry or company size, remove the unsupported segments and document the remaining share. Keep the assumption between zero and 100. Values above 100 are rejected because a serviceable subset cannot exceed its total market. Use scenarios when uncertainty is material: conservative, expected, and ambitious percentages reveal how much the SAM depends on assumptions instead of presenting a single estimate as certainty.
Estimate an obtainable share without hiding the assumptions
The obtainable percentage is applied to SAM, not directly to TAM. This second stage produces SOM: the share of the serviceable market the business could realistically capture under the stated plan. Base the percentage on evidence such as sales capacity, expected conversion, competitive intensity, customer concentration, distribution access, retention, and the time horizon. An obtainable assumption should answer a practical question: of the buyers we can serve, what proportion can our team win and support? Because SOM equals SAM multiplied by the obtainable percentage, it can never exceed SAM when the percentage stays within the accepted zero-to-100 range. Keep the time period aligned with TAM and SAM, especially when using SOM in a revenue forecast. The returned figures preserve the input unit, so they can be copied into a model without a hidden conversion. Treat the calculation as a structured scenario, not a prediction. Revisit each assumption separately when pricing, geographic coverage, product scope, or go-to-market capacity changes, and retain the previous inputs for comparison.
What you can do with it
Build an investor-ready market funnel
Convert a sourced TAM figure into clearly related SAM and SOM values for a pitch deck or investment memo.
Compare launch scenarios
Test different serviceable regions and attainable shares while keeping the total market assumption consistent.
Document planning assumptions
Create reproducible market estimates for product, sales, and finance teams using the same calculation method.
FAQ
How are SAM and SOM calculated?
SAM is TAM multiplied by the serviceable percentage. SOM is then SAM multiplied by the obtainable percentage.
Is the obtainable percentage applied to TAM or SAM?
It is applied to SAM. This makes SOM a realistic subset of the market the business can actually serve.
Can either percentage exceed 100?
No. The calculator returns an invalid-input error when the serviceable or obtainable percentage exceeds 100.
Which currency does the calculator use?
It preserves the unit of the TAM input. If TAM is in US dollars, euros, customers, or units, SAM and SOM use that same unit.
How much does the API calculation cost?
Each API request costs $0.002. The same deterministic calculation can also run in the browser.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/biz/market-size-estimate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"tam":500000000,"serviceable_percentage":30,"obtainable_percentage":8}'const res = await fetch("https://api.kit.forhosting.com/biz/market-size-estimate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"tam": 500000000,
"serviceable_percentage": 30,
"obtainable_percentage": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/biz/market-size-estimate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"tam": 500000000,
"serviceable_percentage": 30,
"obtainable_percentage": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/biz/market-size-estimate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"tam":500000000,"serviceable_percentage":30,"obtainable_percentage":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"tam":500000000,"serviceable_percentage":30,"obtainable_percentage":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/biz/market-size-estimate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"tam": 500000000,
"serviceable_percentage": 30,
"obtainable_percentage": 8
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "biz.market_size_estimate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |