API reference
Valuation
Our discounted cash flow (DCF) valuation, built only from the company's SEC filings: a 10-year free cash flow projection, the assumptions, and the fair value per share. When a free cash flow model does not fit the company (banks, insurers and real estate companies, or too little history) the response has meaningful: false and a reason. See the valuation methodology guide.
GET /api/v1/companies/{symbol}/valuation
Requires an API key in the X-Api-Key header.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
symbol |
path | string | yes | Ticker symbol of a listed company, for example CSCO. Case-insensitive. |
Request
curl
curl "https://studyingstocks.com/api/v1/companies/CSCO/valuation" \
-H "X-Api-Key: $STUDYING_STOCKS_API_KEY"
Python
import os
import requests
response = requests.get("https://studyingstocks.com/api/v1/companies/CSCO/valuation", headers={"X-Api-Key": os.environ["STUDYING_STOCKS_API_KEY"]})
response.raise_for_status()
print(response.json())
JavaScript
const response = await fetch("https://studyingstocks.com/api/v1/companies/CSCO/valuation", {
headers: { "X-Api-Key": process.env.STUDYING_STOCKS_API_KEY },
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());
Response
The valuation, or the reason there is none.
{
"data": {
"meaningful": true,
"fair_value_per_share": 61.42,
"fair_equity_value": 245000000000,
"enterprise_value": 249000000000,
"net_debt": 4000000000,
"currency": "USD",
"assumptions": {
"required_return": 0.085,
"perpetual_growth": 0.025,
"projection_years": 10,
"stage_one_years": 5,
"stage_one_growth": 0.04
},
"inputs": {
"as_of": "2026-07-25",
"balance_sheet_as_of": "2026-07-25",
"total_debt": 28000000000,
"cash_and_equivalents": 24000000000,
"shares": 4000000000
},
"free_cash_flow_history": [
{
"fiscal_year": 2025,
"free_cash_flow": 11500000000
},
{
"fiscal_year": 2026,
"free_cash_flow": 12767000000
}
],
"free_cash_flow_projection": [
{
"fiscal_year": 2027,
"free_cash_flow": 13300000000,
"growth_rate": 0.04,
"discount_factor": 1.085,
"present_value": 12258064516.13
}
],
"terminal_value": {
"value": 330000000000,
"present_value": 145000000000
},
"reason": null,
"methodology_version": "1"
},
"meta": {
"symbol": "CSCO",
"currency": "USD",
"source": "SEC EDGAR",
"api_version": "v1",
"generated_at": "2026-10-16T02:00:00Z"
}
}
Response fields
| Field | Type | Description |
|---|---|---|
data.meaningful |
boolean | false when a free cash flow model does not fit this company; see reason. |
data.reason |
object or null | |
data.methodology_version |
string | |
data.fair_value_per_share |
number | Fair value per share, in the reporting currency. |
data.fair_equity_value |
number | |
data.enterprise_value |
number | Present value of the projected free cash flows and the terminal value. |
data.net_debt |
number | |
data.currency |
string | |
data.assumptions.required_return |
number | Discount rate as a fraction. |
data.assumptions.perpetual_growth |
number | Growth after the projection, as a fraction. |
data.assumptions.projection_years |
integer | |
data.assumptions.stage_one_years |
integer | |
data.assumptions.stage_one_growth |
number | Yearly growth in the first stage, as a fraction. |
data.inputs.as_of |
string | Period end of the latest period, where the share count is taken from. |
data.inputs.balance_sheet_as_of |
string | Oldest period end that debt and cash are taken from: the newest period that reports each. |
data.inputs.total_debt |
number | |
data.inputs.cash_and_equivalents |
number | |
data.inputs.shares |
number | |
data.free_cash_flow_history[].fiscal_year |
integer | |
data.free_cash_flow_history[].free_cash_flow |
number | |
data.free_cash_flow_projection[].fiscal_year |
integer | |
data.free_cash_flow_projection[].free_cash_flow |
number | |
data.free_cash_flow_projection[].growth_rate |
number | |
data.free_cash_flow_projection[].discount_factor |
number or null | |
data.free_cash_flow_projection[].present_value |
number or null | |
data.terminal_value |
object or null | |
meta.source |
string | Where the data comes from: always SEC EDGAR (calculated items are derived from it). |
meta.api_version |
string | |
meta.generated_at |
string | When this response was generated (responses are cached for a few hours). |
meta.symbol |
string | |
meta.currency |
string |
Errors
| Status | Code | When |
|---|---|---|
| 401 | unauthenticated |
Missing or invalid API key. |
| 403 | subscription_inactive |
The Premium subscription behind the key is not active. |
| 404 | not_found |
The company is not covered. |
| 422 | invalid_parameter |
An unknown query parameter was sent. |
| 429 | rate_limited |
Rate limit reached. |
| 500 | server_error |
Something went wrong on our side. |
All errors have the same shape.