Embed Fair Value data
Every way to use our fair-value data elsewhere: as a ready-made block on your own website, as a table in Excel or Google Sheets, as a dataset for your own analysis, or straight inside your AI assistant. Over 40,000 stocks, updated daily, free to use with attribution (CC BY 4.0). No key, no sign-up. For the AI connection a free account is enough.
1 · Show it on your own website
The simplest route, no coding: copy the code, paste it into your page, done. It is plain HTML, so it works in WordPress, Wix, Squarespace, Notion or a newsletter, with no script and no changes to your stylesheet.
Fair-value badge for one stock
Shows fair value and the gap, updated daily. Dropbox as an example. This is how it looks:
Copy this code (click selects everything):
For another stock: search the generator or open “For bloggers & editors” on that stock page.
List of undervalued quality stocks
The current top 5 as a compact list:
- Lululemon Athletica Inc.+186%
- Contemporary Amperex Technology Co Ltd Class A+170%
- Haier Smart Home Co Ltd+158%
- Evolution AB (publ)+158%
- China Resources Land Ltd+153%
Note: the snippet is a snapshot. For permanently fresh numbers, copy the code again now and then, or read the datasets below automatically.
2 · In Excel or Google Sheets
One line into an empty cell and the list appears as a table, refreshable with one click. No download needed.
Google Sheets
=IMPORTDATA("https://www.fairvalue-calculator.com/undervalued-stocks.csv")
Excel
Data → From Web → paste the address above. Excel creates a refreshable connection.
3 · Download the datasets
Five ready-made, daily-fresh lists. Choose the format via the extension: .json or .csv. No sign-up, no key.
Every row also carries the uptrend (trend12) and the three buy rules of the strategy (kaufregeln): fair value at least 30% above the price, Quality Score of 50 or more, uptrend. New columns are always added at the end, existing ones never move.
Undervalued quality stocks
40 stocksBig names trading below our fair value, with a quality score. Optional sector filter: ?sector=technology
Show fields
| Field | Meaning |
|---|---|
ticker | Exchange ticker symbol |
company | Company name |
upside_pct | Gap from price to our fair value in % (positive = undervalued) |
quality_score | Quality score 0 to 100 (profitability, growth, balance sheet, moat) |
price_local | Current price in the listing currency |
evidence | Confidence tier: low, medium or high |
sector | GICS sector |
country | Listing country |
url | Link to the stock page |
currency | Currency of price_local (ISO code) |
market_cap_usd_bn | Market cap in billions of US dollars |
trend12 | Uptrend: true if the price a month ago was higher than twelve months ago (21 against 252 trading days), false if not, null if unknown (less than a year of prices, or a split-sized jump in the window) |
trend12_pct | Change from the price twelve months ago to the price a month ago, in percent; null if unknown |
trend_stufe | Trend arrow: auf (uptrend), seitwaerts (between -10% and 0%), ab (-10% or lower), null if unknown |
kaufregeln | The three buy rules of the strategy, each true, false or null: fv = fair value at least 30% above the price, qualitaet = Quality Score of 50 or more (measured as in the backtest, without the AI Quality points), trend = uptrend; alle = true only if all three are met, false as soon as one is not met, otherwise null. In the CSV as kaufregeln_fv, kaufregeln_qualitaet, kaufregeln_trend, kaufregeln_alle |
quality_rule | Quality Score the buy rule decided on (without the AI Quality points), only when it sets the quality check differently from quality_score, otherwise null |
upside_rule | Upside in percent the buy rule decided on (fair value of the track record without the cyclical and dilution damping), only when it sets the fair value check differently from upside_pct, otherwise null |
Overvalued stocks
Same calculation, other direction: stocks well above our fair value.
Show fields
| Field | Meaning |
|---|---|
ticker | Exchange ticker symbol |
company | Company name |
upside_pct | Gap from price to our fair value in % (positive = undervalued) |
quality_score | Quality score 0 to 100 (profitability, growth, balance sheet, moat) |
price_local | Current price in the listing currency |
evidence | Confidence tier: low, medium or high |
sector | GICS sector |
country | Listing country |
url | Link to the stock page |
currency | Currency of price_local (ISO code) |
market_cap_usd_bn | Market cap in billions of US dollars |
trend12 | Uptrend: true if the price a month ago was higher than twelve months ago (21 against 252 trading days), false if not, null if unknown (less than a year of prices, or a split-sized jump in the window) |
trend12_pct | Change from the price twelve months ago to the price a month ago, in percent; null if unknown |
trend_stufe | Trend arrow: auf (uptrend), seitwaerts (between -10% and 0%), ab (-10% or lower), null if unknown |
kaufregeln | The three buy rules of the strategy, each true, false or null: fv = fair value at least 30% above the price, qualitaet = Quality Score of 50 or more (measured as in the backtest, without the AI Quality points), trend = uptrend; alle = true only if all three are met, false as soon as one is not met, otherwise null. In the CSV as kaufregeln_fv, kaufregeln_qualitaet, kaufregeln_trend, kaufregeln_alle |
quality_rule | Quality Score the buy rule decided on (without the AI Quality points), only when it sets the quality check differently from quality_score, otherwise null |
upside_rule | Upside in percent the buy rule decided on (fair value of the track record without the cyclical and dilution damping), only when it sets the fair value check differently from upside_pct, otherwise null |
Value traps
Optically cheap but weak quality. The dataset nobody else publishes.
Show fields
| Field | Meaning |
|---|---|
ticker | Exchange ticker symbol |
company | Company name |
upside_pct | Gap from price to our fair value in % (positive = undervalued) |
quality_score | Quality score 0 to 100 (profitability, growth, balance sheet, moat) |
price_local | Current price in the listing currency |
evidence | Confidence tier: low, medium or high |
sector | GICS sector |
country | Listing country |
url | Link to the stock page |
currency | Currency of price_local (ISO code) |
market_cap_usd_bn | Market cap in billions of US dollars |
trend12 | Uptrend: true if the price a month ago was higher than twelve months ago (21 against 252 trading days), false if not, null if unknown (less than a year of prices, or a split-sized jump in the window) |
trend12_pct | Change from the price twelve months ago to the price a month ago, in percent; null if unknown |
trend_stufe | Trend arrow: auf (uptrend), seitwaerts (between -10% and 0%), ab (-10% or lower), null if unknown |
kaufregeln | The three buy rules of the strategy, each true, false or null: fv = fair value at least 30% above the price, qualitaet = Quality Score of 50 or more (measured as in the backtest, without the AI Quality points), trend = uptrend; alle = true only if all three are met, false as soon as one is not met, otherwise null. In the CSV as kaufregeln_fv, kaufregeln_qualitaet, kaufregeln_trend, kaufregeln_alle |
quality_rule | Quality Score the buy rule decided on (without the AI Quality points), only when it sets the quality check differently from quality_score, otherwise null |
upside_rule | Upside in percent the buy rule decided on (fair value of the track record without the cyclical and dilution damping), only when it sets the fair value check differently from upside_pct, otherwise null |
Largest companies by country
520 companies from 42 countriesThe 10 largest listed companies per country by market cap in USD, 20 for the ten largest markets, plus fair value and quality score. One row per company, home listings only. Optional single country: ?country=DE
Show fields
| Field | Meaning |
|---|---|
country | Country code (ISO-2) of the home listing |
country_name | Country name |
rank | Rank within the country by market cap |
company | Company name |
ticker | Ticker |
symbol | Ticker with exchange code, e.g. SAP.XETRA |
exchange | Exchange |
market_cap_usd | Market cap in USD: price x shares outstanding, reproducible from the fields in this row |
market_cap_reported_usd | Market cap as reported by our data vendor (a snapshot, often older) |
market_cap_ratio | Ratio of the two figures, 1.00 = agreement. Rows beyond a factor of 2 are dropped |
shares_outstanding | Share count we calculate with |
currency | Listing currency (price and fair value are in this currency) |
price | Latest closing price in the listing currency |
previous_close | Previous closing price |
change_1d_pct | One-day change in percent |
price_date | Trading day the price belongs to |
website | Company website (use it with any logo service you like) |
fair_value | Our fair value per share, null when we withhold it |
quality_score | Quality score 0 to 100 |
valuation_status | published or withheld |
sector | GICS sector |
as_of | Snapshot date of the dataset |
url | Link to the stock page |
trend12 | Uptrend: true if the price a month ago was higher than twelve months ago (21 against 252 trading days), false if not, null if unknown (less than a year of prices, or a split-sized jump in the window) |
trend12_pct | Change from the price twelve months ago to the price a month ago, in percent; null if unknown |
trend_stufe | Trend arrow: auf (uptrend), seitwaerts (between -10% and 0%), ab (-10% or lower), null if unknown |
kaufregeln | The three buy rules of the strategy, each true, false or null: fv = fair value at least 30% above the price, qualitaet = Quality Score of 50 or more (measured as in the backtest, without the AI Quality points), trend = uptrend; alle = true only if all three are met, false as soon as one is not met, otherwise null. In the CSV as kaufregeln_fv, kaufregeln_qualitaet, kaufregeln_trend, kaufregeln_alle |
quality_rule | Quality Score the buy rule decided on (without the AI Quality points), only when it sets the quality check differently from quality_score, otherwise null |
upside_rule | Upside in percent the buy rule decided on (fair value of the track record without the cyclical and dilution damping), only when it sets the fair value check differently from upside_pct, otherwise null |
The 150 largest companies worldwide
150 companiesThe same fields without the country grid: the 150 largest listed companies by market cap in USD, across all markets.
Show fields
| Field | Meaning |
|---|---|
country | Country code (ISO-2) of the home listing |
country_name | Country name |
rank | Rank within the country by market cap |
company | Company name |
ticker | Ticker |
symbol | Ticker with exchange code, e.g. SAP.XETRA |
exchange | Exchange |
market_cap_usd | Market cap in USD: price x shares outstanding, reproducible from the fields in this row |
market_cap_reported_usd | Market cap as reported by our data vendor (a snapshot, often older) |
market_cap_ratio | Ratio of the two figures, 1.00 = agreement. Rows beyond a factor of 2 are dropped |
shares_outstanding | Share count we calculate with |
currency | Listing currency (price and fair value are in this currency) |
price | Latest closing price in the listing currency |
previous_close | Previous closing price |
change_1d_pct | One-day change in percent |
price_date | Trading day the price belongs to |
website | Company website (use it with any logo service you like) |
fair_value | Our fair value per share, null when we withhold it |
quality_score | Quality score 0 to 100 |
valuation_status | published or withheld |
sector | GICS sector |
as_of | Snapshot date of the dataset |
url | Link to the stock page |
trend12 | Uptrend: true if the price a month ago was higher than twelve months ago (21 against 252 trading days), false if not, null if unknown (less than a year of prices, or a split-sized jump in the window) |
trend12_pct | Change from the price twelve months ago to the price a month ago, in percent; null if unknown |
trend_stufe | Trend arrow: auf (uptrend), seitwaerts (between -10% and 0%), ab (-10% or lower), null if unknown |
kaufregeln | The three buy rules of the strategy, each true, false or null: fv = fair value at least 30% above the price, qualitaet = Quality Score of 50 or more (measured as in the backtest, without the AI Quality points), trend = uptrend; alle = true only if all three are met, false as soon as one is not met, otherwise null. In the CSV as kaufregeln_fv, kaufregeln_qualitaet, kaufregeln_trend, kaufregeln_alle |
quality_rule | Quality Score the buy rule decided on (without the AI Quality points), only when it sets the quality check differently from quality_score, otherwise null |
upside_rule | Upside in percent the buy rule decided on (fair value of the track record without the cyclical and dilution damping), only when it sets the fair value check differently from upside_pct, otherwise null |
Provenance: our fair value from multiple models on company-reported fundamentals (regulatory filings) plus third-party market data. Update frequency: daily. Every response carries snapshot_date and updated_at. Where we withhold a valuation, you get null instead of a number.
4 · In your AI assistant (ChatGPT, Claude and others)
Connect Fair Value Calculator to ChatGPT, Claude, Perplexity and others via our MCP server. The assistant can then find a stock, fetch the fair value with its range, verdict, quality score, trend and buy rules, get a quick snapshot, screen for undervalued stocks, compare several stocks, show your watchlist, add stocks to your watchlist, remove stocks from it, switch the email alert (Pro) and suggest stocks that fit your watchlist (Pro). For the AI connection a free account is enough.
5 · In your own code
curl
curl -s https://www.fairvalue-calculator.com/undervalued-stocks.json
Python (pandas)
import pandas as pd
df = pd.read_json("https://www.fairvalue-calculator.com/undervalued-stocks.json")
print(df["stocks"].apply(pd.Series)[["ticker","upside_pct","quality_score"]].head())
JavaScript
const r = await fetch("https://www.fairvalue-calculator.com/undervalued-stocks.json");
const { stocks } = await r.json();
console.table(stocks.slice(0, 10));
Google Sheets
=IMPORTDATA("https://www.fairvalue-calculator.com/undervalued-stocks.csv")
Zenodo
All datasets are also a citable archive with a permanent DOI (including market valuation by sector and country): 10.5281/zenodo.21639205
License & citation
Free to use under CC BY 4.0. Attribution is appreciated, a plain-text credit or a link is fine:
Source: Fair Value Calculator (fairvalue-calculator.com), accessed 2026-11-13.
Rate limits protect the service; for higher frequency or a custom cut, write to [email protected].
Research & data
Dated data studies from the Fair Value engine, free to cite with attribution. Every study ships methodology, limitations and a CSV download.
Global market vs aggregate fair value: +13.5 % Global Equity Fair Value Report October 2026
Global market vs aggregate fair value: +14.8 % Global Equity Fair Value Report September 2026
Global market vs aggregate fair value: +34.6 % Global Equity Fair Value Report August 2026
Global market vs aggregate fair value: +34.6 % Global Equity Fair Value Report July 2026
Global market vs aggregate fair value: +33.8 %
Common questions
Do I need an account or an API key?
No. The datasets are available without an account or key, as .json or .csv, refreshed daily.
How do I get the data into Excel or Google Sheets?
In Google Sheets, one line in an empty cell: =IMPORTDATA("https://www.fairvalue-calculator.com/undervalued-stocks.csv"). In Excel: Data, From Web, paste the same address; the connection refreshes with one click.
May I use and publish the data?
Yes, under CC BY 4.0 with attribution ("Source: fairvalue-calculator.com"). Not investment advice.