Skip to content

Fundamentals

Overview

The Fundamentals scraper retrieves comprehensive financial data — income statement, balance sheet, cash flow, margins, profitability, liquidity, leverage, valuation, and dividends — for any symbol via the TradingView scanner API.

Quick Start

from tv_scraper.scrapers.market_data import Fundamentals

scraper = Fundamentals()

# All fundamental metrics for Apple
result = scraper.get_fundamentals(exchange="NASDAQ", symbol="AAPL")
print(result["data"])

# Income statement only
income = scraper.get_income_statement(exchange="NASDAQ", symbol="AAPL")

# Compare multiple symbols
comparison = scraper.compare_fundamentals(
    symbols=[
        {"exchange": "NASDAQ", "symbol": "AAPL"},
        {"exchange": "NASDAQ", "symbol": "MSFT"},
    ],
    fields=["total_revenue", "net_income", "market_cap_basic"],
)

Constructor

Fundamentals(
    export_result: bool = False,
    export_type: str = "json",   # "json" or "csv"
    timeout: int = 10,
)

Methods

get_fundamentals(exchange, symbol, fields=None)

Fetch fundamental data for a single symbol.

Parameter Type Default Description
exchange str Exchange name (e.g. "NASDAQ")
symbol str Trading symbol (e.g. "AAPL")
fields list[str] \| None None Specific fields. None → all fields.

Returns a standardized response envelope:

{
    "status": "success",
    "data": {"symbol": "NASDAQ:AAPL", "total_revenue": ..., ...},
    "metadata": {"exchange": "NASDAQ", "symbol": "AAPL"},
    "error": None,
}

compare_fundamentals(symbols, fields=None)

Compare fundamental data across multiple symbols.

Parameter Type Default Description
symbols list[dict] List of {"exchange": "...", "symbol": "..."} dicts
fields list[str] \| None None Specific fields. None → key comparison metrics.

Category Helpers

Each takes exchange: str, symbol: str and returns the same envelope:

Method Fields
get_income_statement() Revenue, profit, EPS, EBITDA
get_balance_sheet() Assets, debt, equity
get_cash_flow() Operating, investing, financing cash flows
get_statistics() Liquidity + leverage + valuation ratios
get_dividends() Yield, per share, payout ratio
get_profitability() ROE, ROA, ROI
get_margins() Gross, operating, net, EBITDA margins

Field Categories

Income Statement (13 fields)

total_revenue, revenue_per_share_ttm, total_revenue_fy, gross_profit, gross_profit_fy, operating_income, operating_income_fy, net_income, net_income_fy, EBITDA, basic_eps_net_income, earnings_per_share_basic_ttm, earnings_per_share_diluted_ttm

Balance Sheet (9 fields)

total_assets, total_assets_fy, cash_n_short_term_invest, cash_n_short_term_invest_fy, total_debt, total_debt_fy, stockholders_equity, stockholders_equity_fy, book_value_per_share_fq

Cash Flow (7 fields)

cash_f_operating_activities, cash_f_operating_activities_fy, cash_f_investing_activities, cash_f_investing_activities_fy, cash_f_financing_activities, cash_f_financing_activities_fy, free_cash_flow

Margins (8 fields)

gross_margin, gross_margin_percent_ttm, operating_margin, operating_margin_ttm, pretax_margin_percent_ttm, net_margin, net_margin_percent_ttm, EBITDA_margin

Profitability (5 fields)

return_on_equity, return_on_equity_fq, return_on_assets, return_on_assets_fq, return_on_investment_ttm

Liquidity (4 fields)

current_ratio, current_ratio_fq, quick_ratio, quick_ratio_fq

Leverage (3 fields)

debt_to_equity, debt_to_equity_fq, debt_to_assets

Valuation (8 fields)

market_cap_basic, market_cap_calc, market_cap_diluted_calc, enterprise_value_fq, price_earnings_ttm, price_book_fq, price_sales_ttm, price_free_cash_flow_ttm

Dividends (3 fields)

dividends_yield, dividends_per_share_fq, dividend_payout_ratio_ttm