Fundamentals

Public company financials, SEC EDGAR filings, institutional ownership, and growth metrics — cached, validated, and ready for instant AI analysis. Built on 200+ years of audited earnings data from the SEC, WRDS, and real-time market snapshots.

What's inside#

DimensionCoverageSource
Financial statementsIncome statements, balance sheets, cash flow statements (quarterly / annual / TTM)SEC EDGAR + Polygon + Finnhub
Metrics & ratiosP/E, ROE, margins, FCF yield, debt-to-equity, current ratio, DPS, growth ratesPolygon / Finnhub calculated
Company factsSector, industry, CIK, exchange, employees, founded year, websitePolygon company info
Price historyDaily / weekly / monthly OHLCV bars (intraday via vendor)Polygon + vendor fundamentals feed
ScreenerMulti-factor stock filter: profitability, growth, health, dividend filtersFundamentalsAPI universe
As-reported XBRLPoint-in-time company facts — every concept a filer has reported, each tagged with the filed date; ?as_of= serves the number that was public on a given date, restatements excludedIn-house SEC EDGAR companyfacts corpus (19,288 CIKs)
Business segmentsRevenue, sales and operating income by line of business, geography, ASC-280 operating segment and US stateCompustat Business Information File (WRDS, 2.8M rows / 29,934 GVKEYs)

Access#

1 credit/call | Free and up

The fundamentals product is available on Free plan and all paid tiers (Starter, Pro, Enterprise). Every call debits 1 credit from your wallet.

Endpoints#

MethodPathDescription
GET/api/v3/fundamentals/company_full/{ticker}Full company snapshot: company info + TTM + ratios + growth + balance
GET/api/v3/fundamentals/income_statementsIncome statements (quarterly / annual / TTM)
GET/api/v3/fundamentals/balance_sheetsBalance sheets (quarterly / annual)
GET/api/v3/fundamentals/cash_flow_statementsCash-flow statements (quarterly / annual)
GET/api/v3/fundamentals/allAll three statements in one call (income + balance + cash flow)
GET/api/v3/fundamentals/metricsFinancial metrics by period (P/E, ROE, margins, FCF yield, etc.)
GET/api/v3/fundamentals/screenerMulti-filter stock screener (profitability, growth, health, dividend filters)
GET/api/v3/fundamentals/companyfacts/{ticker}Discover the as-reported XBRL concepts a company has filed (taxonomy, units, observation count, first/last period) from our in-house SEC EDGAR companyfacts corpus. ?search= substring-filters the concept tag; ?limit= (1–2000, default 400)
GET/api/v3/fundamentals/xbrl/{ticker}/{concept}One XBRL concept's point-in-time, as-reported history. ?as_of=YYYY-MM-DD returns only values filed on or before that date (excludes later restatements — the anti-look-ahead knob); ?history=true shows every original + restated filing. Filters: taxonomy, unit, form, start, end
GET/api/v3/fundamentals/segments/{ticker}Compustat business + geographic segment breakdown: sales, revenue and operating income by line of business (BUSSEG), region (GEOSEG), ASC-280 operating segment (OPSEG) and US state (STSEG). ?year= / ?date= page history; ?stype= filters to one segment type. Latest-available if unspecified

Examples#

Example 1: Get a full company snapshot#

Retrieve a complete fundamentals snapshot for Apple in one call.

Shell
1curl -H "Authorization: Bearer $TENGU_API_KEY" \2  "https://firm.tengu.co/api/v3/fundamentals/company_full/AAPL"3 4# Response structure:5# {6#   "ok": true,7#   "timestamp": "2024-12-16T14:22:00Z",8#   "ticker": "AAPL",9#   "data": {10#     "company_info": { "name": "Apple Inc.", "sector": "Technology", "employees": 164000, ... },11#     "income_statement": { "revenue": 394328000000, "net_income": 96995000000, ... },12#     "balance_sheet": { "total_assets": 352755000000, "total_liabilities": 115489000000, ... },13#     "cash_flow": { "operating_cf": 110543900000, "capex": 10900000000, ... },14#     "ttm": { "revenue": 394328000000, "eps": 6.05, ... },15#     "ratios": { "pe_ratio": 28.5, "roe": 0.95, "debt_to_equity": 2.16, ... },16#     "growth": { "revenue_growth": 0.021, "eps_growth": 0.045, ... }17#   }18# }
Python
1import os, requests2 3r = requests.get(4    "https://firm.tengu.co/api/v3/fundamentals/company_full/AAPL",5    headers={"Authorization": f"Bearer {os.environ['TENGU_API_KEY']}"},6    timeout=30,7)8r.raise_for_status()9data = r.json()10company = data["data"]11print(f"{data['ticker']}: {company['company_info']['name']}")12print(f"Revenue (TTM): ${company['ttm']['revenue'] / 1e9:.1f}B")13print(f"P/E: {company['ratios']['pe_ratio']}")14print(f"Revenue growth: {company['growth']['revenue_growth'] * 100:.1f}%")

Example 2: Screen stocks by multiple factors#

Find stocks with ROE > 15%, revenue growth > 10%, and dividend growth streak > 10 years.

Shell
1curl -H "Authorization: Bearer $TENGU_API_KEY" \2  "https://firm.tengu.co/api/v3/fundamentals/screener?roe_min=0.15&revenue_growth_min=0.10&years_dividend_growth_min=10&limit=50"3 4# Response structure:5# {6#   "ok": true,7#   "timestamp": "2024-12-16T14:22:15Z",8#   "filters": {9#     "roe_min": 0.15,10#     "revenue_growth_min": 0.10,11#     "years_dividend_growth_min": 1012#   },13#   "sort_by": null,14#   "sort_order": "desc",15#   "items": [16#     {17#       "ticker": "JNJ",18#       "name": "Johnson & Johnson",19#       "sector": "Healthcare",20#       "roe": 0.32,21#       "revenue_growth": 0.089,22#       "dividend_growth_streak": 62,23#       "payout_ratio": 0.61,24#       "pe_ratio": 24.1,25#       ...26#     },27#     {28#       "ticker": "PG",29#       "name": "Procter & Gamble",30#       "sector": "Consumer Staples",31#       "roe": 0.28,32#       "revenue_growth": 0.052,33#       "dividend_growth_streak": 67,34#       "payout_ratio": 0.65,35#       "pe_ratio": 25.3,36#       ...37#     }38#   ]39# }
Python
1import os, requests2 3r = requests.get(4    "https://firm.tengu.co/api/v3/fundamentals/screener",5    params={6        "roe_min": 0.15,7        "revenue_growth_min": 0.10,8        "years_dividend_growth_min": 10,9        "limit": 50,10    },11    headers={"Authorization": f"Bearer {os.environ['TENGU_API_KEY']}"},12    timeout=30,13)14r.raise_for_status()15results = r.json()16print(f"Found {len(results['items'])} Dividend Aristocrats with strong growth")17for stock in results["items"][:5]:18    print(f"  {stock['ticker']}: ROE {stock['roe']:.1%}, "19          f"Div streak {stock['dividend_growth_streak']} years")

Example 3: Point-in-time, as-reported XBRL (no restatement look-ahead)#

Vendors serve restated numbers — the value a period shows today after later revisions — which bakes look-ahead bias into any backtest. Our XBRL corpus carries the filed date on every fact, so ?as_of= returns exactly what was public on a given date. First discover the concept tag, then query it as-of a historical date.

Shell
1# 1. Discover the XBRL concepts Apple has filed (filter to net income)2curl -H "Authorization: Bearer $TENGU_API_KEY" \3  "https://firm.tengu.co/api/v3/fundamentals/companyfacts/AAPL?search=netincome"4 5# Response structure:6# {7#   "ok": true,8#   "timestamp": "2024-12-16T14:22:00Z",9#   "ticker": "AAPL",10#   "cik": 320193,11#   "entity_name": "Apple Inc.",12#   "n_concepts": 2,13#   "concepts": [14#     {15#       "taxonomy": "us-gaap",16#       "concept": "NetIncomeLoss",17#       "label": "Net Income (Loss) Attributable to Parent",18#       "units": ["USD"],19#       "n_observations": 112,20#       "first_period": "2008-09-27",21#       "last_period": "2024-09-28"22#     },23#     { ... }24#   ],25#   "source": "warehouse:edgar/companyfacts"26# }27 28# 2. Net income AS IT WAS PUBLIC on 2020-02-01 — no later restatement leaks in29curl -H "Authorization: Bearer $TENGU_API_KEY" \30  "https://firm.tengu.co/api/v3/fundamentals/xbrl/AAPL/NetIncomeLoss?form=10-K&as_of=2020-02-01"31 32# Response structure:33# {34#   "ok": true,35#   "timestamp": "2024-12-16T14:22:10Z",36#   "ticker": "AAPL",37#   "cik": 320193,38#   "entity_name": "Apple Inc.",39#   "taxonomy": "us-gaap",40#   "concept": "NetIncomeLoss",41#   "units_available": ["USD"],42#   "as_of": "2020-02-01",43#   "mode": "latest_per_period",44#   "n": 2,45#   "rows": [46#     {47#       "unit": "USD",48#       "start": "2018-09-30",49#       "end": "2019-09-28",50#       "val": 55256000000,51#       "fy": 2019,52#       "fp": "FY",53#       "form": "10-K",54#       "filed": "2019-10-31",55#       "accn": "0000320193-19-000119",56#       "frame": "CY2019"57#     },58#     { ... }59#   ],60#   "source": "warehouse:edgar/companyfacts"61# }
Python
1import os, requests2 3# Pull a concept as-of a historical date (point-in-time, as-reported)4r = requests.get(5    "https://firm.tengu.co/api/v3/fundamentals/xbrl/AAPL/NetIncomeLoss",6    params={"form": "10-K", "as_of": "2020-02-01"},7    headers={"Authorization": f"Bearer {os.environ['TENGU_API_KEY']}"},8    timeout=30,9)10r.raise_for_status()11data = r.json()12for row in data["rows"]:13    print(f"FY{row['fy']} ({row['end']}): ${row['val'] / 1e9:.1f}B "14          f"— filed {row['filed']} on {row['form']}")

Example 4: Business & geographic segments#

See where a company earns — revenue mix by region and by line of business — from the Compustat Business Information File. The WRDS archive lags by a few quarters, so with no year/date the latest available period is returned and the datadate served is reported.

Shell
1# Latest available segment breakdown for Apple2curl -H "Authorization: Bearer $TENGU_API_KEY" \3  "https://firm.tengu.co/api/v3/fundamentals/segments/AAPL"4 5# Response structure (abbreviated):6# {7#   "ok": true,8#   "timestamp": "2024-12-16T14:22:20Z",9#   "ticker": "AAPL",10#   "gvkey": "001690",11#   "company_name": "APPLE INC",12#   "datadate": "2023-09-30",13#   "fiscal_year": 2023,14#   "mode": "latest_available",15#   "currency": "USD",16#   "n_segments": 9,17#   "truncated": false,18#   "segment_type_legend": {19#     "BUSSEG": "business segment — line of business",20#     "GEOSEG": "geographic segment — region"21#   },22#   "segments": {23#     "GEOSEG": [24#       { "segment_id": "01", "name": "Americas", "sales": 162560.0, "revenue": 162560.0,25#         "operating_income": 60508.0, "geographic_type_code": "2", "geographic_type": null,26#         "currency": "USD", "datadate": "2023-09-30" },27#       { "segment_id": "03", "name": "Greater China", "sales": 72559.0, "revenue": 72559.0,28#         "operating_income": 30328.0, "geographic_type_code": "3", "geographic_type": "non_domestic",29#         "currency": "USD", "datadate": "2023-09-30" }30#     ],31#     "BUSSEG": [32#       { "segment_id": "01", "name": "iPhone", "sales": 200583.0, "revenue": 200583.0, ... }33#     ]34#   },35#   "available_datadates": ["...", "2022-09-30", "2023-09-30"],36#   "source": "warehouse:bronze.compustat_segments"37# }