Skip to content

API Reference

Closed request vocabularies

Period, PeriodFiscal, PeriodAnnualQuarter, Interval, TechnicalInterval, Timeframe, and Structure are re-exported from fmp_data. They are the typed contracts for client method parameters. Import them from the package root:

from fmp_data import (
    Interval,
    Period,
    PeriodAnnualQuarter,
    PeriodFiscal,
    Structure,
    TechnicalInterval,
    Timeframe,
)

Do not collapse the three period aliases. Most statement endpoints take Period (annual / quarter / FY / Q1Q4). Financial reports and batch bulk accept only PeriodFiscal. Some company series take only PeriodAnnualQuarter. Timeframe is Interval plus "1day". TechnicalClient.interval= takes TechnicalInterval (Interval plus "daily" / "hourly"), not Timeframe. Revenue segmentation structure= takes Structure (flat / nested); live /stable returns the same list-of-objects for both.

Main Clients

Sync Client

FMPDataClient

Bases: BaseClient

Main client for FMP Data API

alternative property

Get or create the alternative markets client instance

batch property

Get or create the batch data client instance

company property

Get or create the company client instance

economics property

Get or create the economics data client instance

fundamental property

Get or create the fundamental client instance

index property

Get or create the index constituents client instance

institutional property

Get or create the institutional activity client instance

intelligence property

Get or create the market intelligence client instance

investment property

Get or create the investment products client instance

logger deletable property writable

Get the logger instance, creating one if needed

market property

Get or create the market data client instance

sec property

Get or create the SEC filings client instance

technical property

Get or create the technical analysis client instance

transcripts property

Get or create the transcripts client instance

__aenter__() async

Async context manager enter

__aexit__(exc_type, exc_val, exc_tb) async

Async context manager exit - closes all client resources

__del__()

Destructor that ensures resources are cleaned up

__enter__()

Context manager enter

__exit__(exc_type, exc_val, exc_tb)

Context manager exit

Parameters:

Name Type Description Default
exc_type type[BaseException] | None

Exception type if an error occurred

required
exc_val BaseException | None

Exception value if an error occurred

required
exc_tb TracebackType | None

Exception traceback if an error occurred

required

aclose() async

Clean up all resources (both async and sync clients).

This is the recommended cleanup method when using async methods.

close()

Clean up sync resources.

Note: If you've used async methods, call aclose() instead to properly close both sync and async clients.

from_env(debug=False) classmethod

Create client instance from environment variables

Parameters:

Name Type Description Default
debug bool

Enable debug logging if True

False

handler: python options: show_root_heading: true show_source: false members_order: source docstring_section_style: spacy

Async Client

AsyncFMPDataClient

Bases: BaseClient

Async client for FMP Data API.

All sub-clients expose async methods without the _async suffix.

Example

async with AsyncFMPDataClient.from_env() as client: profile = await client.company.get_profile("AAPL")

alternative property

Get or create the async alternative markets client instance

batch property

Get or create the async batch data client instance

company property

Get or create the async company client instance

economics property

Get or create the async economics data client instance

fundamental property

Get or create the async fundamental client instance

index property

Get or create the async index constituents client instance

institutional property

Get or create the async institutional activity client instance

intelligence property

Get or create the async market intelligence client instance

investment property

Get or create the async investment products client instance

logger deletable property writable

Get the logger instance, creating one if needed

market property

Get or create the async market data client instance

sec property

Get or create the async SEC filings client instance

technical property

Get or create the async technical analysis client instance

transcripts property

Get or create the async transcripts client instance

__aenter__() async

Async context manager enter

__aexit__(exc_type, exc_val, exc_tb) async

Async context manager exit - closes all client resources

aclose() async

Clean up all resources (both async and sync clients).

from_env(debug=False) classmethod

Create async client instance from environment variables

Parameters:

Name Type Description Default
debug bool

Enable debug logging if True

False

handler: python options: show_root_heading: true show_source: false members_order: source docstring_section_style: spacy

Configuration

ClientConfig

Bases: BaseModel

Base client configuration for FMP Data API.

Adding a credential field, here or on a subclass: type it SecretStr and mark it repr=False. SecretStr keeps it out of model_dump and model_dump_json; repr=False keeps it out of __str__ and __repr__. Neither is a name allowlist, so nothing here needs editing to make a new field safe -- read the value back with .get_secret_value() (#252).

__repr__()

Representation with masked API key

__str__()

String representation with credentials masked.

Redaction is driven by field metadata and key shape, not by a list of field names. The previous version dumped the whole model and masked three names it knew about, so anything else rendered verbatim: a subclass field, or a secret inside LogHandlerConfig.handler_kwargs -- a bare dict[str, Any] that needs no subclass to reach (#252).

Three passes, narrowest signal first:

  1. repr=False fields. That is pydantic's own "not for display" marker and every credential field already carries it, so a subclass gets correct behaviour from the standard idiom rather than from being added to a list here.
  2. A recursive sweep for secret-shaped keys, which is the only handle available on untyped dict[str, Any] bags.
  3. The two values worth rendering richer than ***.

The richer masks are computed from the fields, not from the dump: credential fields are SecretStr, so the dump already holds SecretStr('**********') and re-masking that would print a mask of a mask -- losing the leading-4-character affordance that makes this string useful for telling two keys apart.

from_env() classmethod

Create configuration from environment variables

validate_api_key(v) classmethod

Validate API key is not empty.

Unwraps first: model_config's str_strip_whitespace does not reach inside a SecretStr, and SecretStr has no .strip(), so the stripping this validator has always done has to be explicit now (#252).

validate_base_url(v) classmethod

Validate base URL format.

HTTPS is required except for loopback HTTP (local mocks). A non-loopback http:// origin would send apikey in the clear (#252 FMP-SEC-004).

handler: python options: show_root_heading: true show_source: false

CacheConfig

Bases: BaseModel

Configuration for the response cache.

from_env() classmethod

Create cache config from environment variables.

Returns None if FMP_CACHE_ENABLED is not set or is 'false'.

handler: python options: show_root_heading: true show_source: false

LoggingConfig

Bases: BaseModel

Logging configuration

from_env() classmethod

Create logging config from environment variables

model_post_init(__context)

Post-initialization hook to create log directory if needed

handler: python options: show_root_heading: true show_source: false

Endpoint Group Clients

The library provides both sync and async versions of each endpoint group client. All async clients have the same methods as their sync counterparts, but return awaitables.

Company Client

CompanyClient

Bases: EndpointGroup

Client for company-related API endpoints.

For async support, use AsyncCompanyClient instead.

get_aftermarket_quote(symbol)

Get aftermarket quote data

get_aftermarket_trade(symbol)

Get aftermarket trade data

get_analyst_estimates(symbol, period='annual', page=0, limit=10)

Get analyst estimates

get_analyst_recommendations(symbol)

Get analyst recommendations

.. deprecated:: analyst-stock-recommendations 404s on the FMP API and will be removed in a future version. It currently returns an empty list. Use client.intelligence.get_grades_consensus(symbol). It is not a drop-in: this method returned one row per month with rolling counts, and the replacement returns one current consensus record.

get_balance_sheet_as_reported(symbol, period='annual', limit=10)

Get balance sheet as originally reported

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
period PeriodAnnualQuarter

'annual' or 'quarter' (default: 'annual')

'annual'
limit int

Number of periods to return (default: 10)

10

Returns:

Type Description
list[AsReportedBalanceSheet]

List of as-reported balance sheets

get_balance_sheet_growth(symbol, period='annual', limit=20)

Get year-over-year growth rates for balance sheet items

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
period Period

'annual', 'quarter', 'FY', or 'Q1'-'Q4' (default: 'annual')

'annual'
limit int

Number of periods to return (default: 20)

20

Returns:

Type Description
list[FinancialGrowth]

List of balance sheet growth data

get_balance_sheet_ttm(symbol, limit=None)

Get trailing twelve months (TTM) balance sheet

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
limit int | None

Number of periods to return

None

Returns:

Type Description
list[BalanceSheet]

List of TTM balance sheet data

get_cash_flow_as_reported(symbol, period='annual', limit=10)

Get cash flow statement as originally reported

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
period PeriodAnnualQuarter

'annual' or 'quarter' (default: 'annual')

'annual'
limit int

Number of periods to return (default: 10)

10

Returns:

Type Description
list[AsReportedCashFlowStatement]

List of as-reported cash flow statements

get_cash_flow_growth(symbol, period='annual', limit=20)

Get year-over-year growth rates for cash flow items

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
period Period

'annual', 'quarter', 'FY', or 'Q1'-'Q4' (default: 'annual')

'annual'
limit int

Number of periods to return (default: 20)

20

Returns:

Type Description
list[FinancialGrowth]

List of cash flow growth data

get_cash_flow_ttm(symbol, limit=None)

Get trailing twelve months (TTM) cash flow statement

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
limit int | None

Number of periods to return

None

Returns:

Type Description
list[CashFlowStatement]

List of TTM cash flow data

get_company_logo_url(symbol)

Get the company logo URL

get_company_notes(symbol)

Get company financial notes

get_company_peers(symbol)

Get company peers

get_core_information(symbol)

Get core company information

.. deprecated:: company-core-information 404s on the FMP API and will be removed in a future version. It currently returns None. Use :meth:get_profile instead. It is not a drop-in: profile is a flatter record and does not carry the registration-detail fields this model declares, so read the fields you need from :class:~fmp_data.company.models.CompanyProfile directly.

get_delisted_companies(page=0, limit=100)

Get companies FMP reports as delisted.

Parameters:

Name Type Description Default
page int

Page number for pagination (default 0)

0
limit int

Number of results per page (default 100)

100

Returns:

Type Description
list[DelistedCompany]

List of slim delisted rows (symbol, companyName, exchange,

list[DelistedCompany]

IPO and delist dates).

get_dividends(symbol, from_date=None, to_date=None, limit=None)

Get historical dividend payments for a specific company

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
from_date date | None

Start date (optional)

None
to_date date | None

End date (optional)

None
limit int | None

Number of dividend records to return (optional)

None

Returns:

Type Description
list[DividendEvent]

List of DividendEvent objects containing dividend history

get_earnings(symbol, limit=20)

Get historical earnings reports for a specific company

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
limit int

Number of earnings reports to return (default: 20)

20

Returns:

Type Description
list[EarningEvent]

List of EarningEvent objects containing earnings history

get_employee_count(symbol)

Get company employee count history

get_enterprise_values(symbol, period='annual', limit=20)

Get historical enterprise value data

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
period Period

'annual', 'quarter', 'FY', or 'Q1'-'Q4' (default: 'annual')

'annual'
limit int

Number of periods to return (default: 20)

20

Returns:

Type Description
list[EnterpriseValue]

List of enterprise value data

get_executive_compensation(symbol)

Get executive compensation data for a company

get_executive_compensation_benchmark(year)

Get executive compensation benchmark data by industry and year

Parameters:

Name Type Description Default
year int

Year for compensation data

required

Returns:

Type Description
list[ExecutiveCompensationBenchmark]

List of executive compensation benchmarks by industry

get_executives(symbol)

Get company executives information

get_financial_growth(symbol, period='annual', limit=20)

Get comprehensive financial growth metrics

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
period Period

'annual', 'quarter', 'FY', or 'Q1'-'Q4' (default: 'annual')

'annual'
limit int

Number of periods to return (default: 20)

20

Returns:

Type Description
list[FinancialGrowth]

List of comprehensive financial growth data

get_financial_ratios_ttm(symbol)

Get trailing twelve months (TTM) financial ratios

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required

Returns:

Type Description
list[FinancialRatiosTTM]

List of TTM financial ratios

get_financial_reports_json(symbol, year, period='FY')

Get Form 10-K financial reports in JSON format

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
year int

Report year

required
period PeriodFiscal

Report period - 'FY' or 'Q1'-'Q4' (default: 'FY')

'FY'

Returns:

Type Description
dict

Dictionary containing financial report data

get_financial_reports_xlsx(symbol, year, period='FY')

Get Form 10-K financial reports in Excel format

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
year int

Report year

required
period PeriodFiscal

Report period - 'FY' or 'Q1'-'Q4' (default: 'FY')

'FY'

Returns:

Type Description
bytes

Binary data for XLSX file

get_financial_scores(symbol)

Get comprehensive financial health scores

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required

Returns:

Type Description
list[FinancialScore]

List of financial scores including Altman Z-Score and Piotroski Score

get_geographic_revenue_segmentation(symbol, period='annual', structure='flat')

Get revenue segmentation by geographic region.

Parameters:

Name Type Description Default
symbol str

Company symbol

required
period PeriodAnnualQuarter

Data period ('annual' or 'quarter')

'annual'
structure Structure

Response layout ('flat' or 'nested'). Stable currently returns the same list-of-objects for both (probed 2026-08-17).

'flat'

Returns:

Type Description
list[GeographicRevenueSegment]

List of geographic revenue segments by fiscal year

get_historical_market_cap(symbol)

Get historical market capitalization data

get_historical_prices(symbol, from_date=None, to_date=None)

Get historical daily price data

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
from_date date | None

Start date (optional)

None
to_date date | None

End date (optional)

None

Returns:

Type Description
HistoricalData

HistoricalData object containing the price history

get_historical_prices_dividend_adjusted(symbol, from_date=None, to_date=None)

Get historical daily price data adjusted for dividends

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
from_date date | None

Start date (optional)

None
to_date date | None

End date (optional)

None

Returns:

Type Description
HistoricalData

HistoricalData object containing the dividend-adjusted price history

get_historical_prices_light(symbol, from_date=None, to_date=None)

Get lightweight historical daily price data (open, high, low, close only)

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
from_date date | None

Start date (optional)

None
to_date date | None

End date (optional)

None

Returns:

Type Description
HistoricalData

HistoricalData object containing the price history

get_historical_prices_non_split_adjusted(symbol, from_date=None, to_date=None)

Get historical daily price data without split adjustments

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
from_date date | None

Start date (optional)

None
to_date date | None

End date (optional)

None

Returns:

Type Description
HistoricalData

HistoricalData object containing the price history without split adjustments

get_historical_share_float(symbol)

Get historical share float data for a company

.. deprecated:: historical/shares-float 404s and will be removed in a future version. It currently returns an empty list. Use :meth:get_share_float, which serves the live shares-float with the same fields (date, floatShares, freeFloat, outstandingShares, source, symbol). It is not a drop-in: it answers with the current snapshot rather than a history, so back-fill is no longer available from FMP.

get_income_statement_as_reported(symbol, period='annual', limit=10)

Get income statement as originally reported

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
period PeriodAnnualQuarter

'annual' or 'quarter' (default: 'annual')

'annual'
limit int

Number of periods to return (default: 10)

10

Returns:

Type Description
list[AsReportedIncomeStatement]

List of as-reported income statements

get_income_statement_growth(symbol, period='annual', limit=20)

Get year-over-year growth rates for income statement items

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
period Period

'annual', 'quarter', 'FY', or 'Q1'-'Q4' (default: 'annual')

'annual'
limit int

Number of periods to return (default: 20)

20

Returns:

Type Description
list[FinancialGrowth]

List of income statement growth data

get_income_statement_ttm(symbol, limit=None)

Get trailing twelve months (TTM) income statement

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
limit int | None

Number of periods to return

None

Returns:

Type Description
list[IncomeStatement]

List of TTM income statement data

get_intraday_prices(symbol, interval='1min', from_date=None, to_date=None, nonadjusted=None)

Get intraday price data

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
interval Interval

Time interval (1min, 5min, 15min, 30min, 1hour, 4hour)

'1min'
from_date date | None

Start date (optional)

None
to_date date | None

End date (optional)

None
nonadjusted bool | None

Use non-adjusted data (optional)

None

get_key_metrics_ttm(symbol)

Get trailing twelve months (TTM) key financial metrics

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required

Returns:

Type Description
list[KeyMetricsTTM]

List of TTM key metrics

get_market_cap(symbol)

Get market capitalization data

get_mergers_acquisitions_latest(page=0, limit=100)

Get latest mergers and acquisitions transactions

Parameters:

Name Type Description Default
page int

Page number for pagination (default 0)

0
limit int

Number of results per page (default 100)

100

Returns:

Type Description
list[MergerAcquisition]

List of recent M&A transactions

Search mergers and acquisitions transactions by company name

Parameters:

Name Type Description Default
name str

Company name to search for

required
page int

Page number for pagination (default 0)

0
limit int

Number of results per page (default 100)

100

Returns:

Type Description
list[MergerAcquisition]

List of M&A transactions matching the search

get_price_target(symbol)

Get price targets

.. deprecated:: price-target 404s on the FMP API and will be removed in a future version. It currently returns an empty list. Use :meth:get_price_target_summary or :meth:get_price_target_consensus. Neither is a drop-in: this method yielded one row per analyst target, and both replacements return a single aggregated record with no per-analyst detail.

get_price_target_consensus(symbol)

Get price target consensus

get_price_target_summary(symbol)

Get price target summary

get_product_revenue_segmentation(symbol, period='annual', structure='flat')

Get revenue segmentation by product.

Parameters:

Name Type Description Default
symbol str

Company symbol

required
period PeriodAnnualQuarter

Data period ('annual' or 'quarter')

'annual'
structure Structure

Response layout ('flat' or 'nested'). Stable currently returns the same list-of-objects for both (probed 2026-08-17).

'flat'

Returns:

Type Description
list[ProductRevenueSegment]

List of product revenue segments by fiscal year

get_profile(symbol)

Get company profile

get_profile_cik(cik)

Get company profile by CIK number

get_quote(symbol)

Get real-time stock quote

get_share_float(symbol)

Get current share float data for a company

get_simple_quote(symbol)

Get simple stock quote

get_stock_price_change(symbol)

Get stock price change percentages across time horizons

get_stock_splits(symbol, from_date=None, to_date=None, limit=None)

Get historical stock split information for a specific company

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
from_date date | None

Start date (optional)

None
to_date date | None

End date (optional)

None
limit int | None

Number of split records to return (optional)

None

Returns:

Type Description
list[StockSplitEvent]

List of StockSplitEvent objects containing split history

get_symbol_changes()

Get symbol change history

get_upgrades_downgrades(symbol)

Get upgrades and downgrades

.. deprecated:: upgrades-downgrades 404s on the FMP API and will be removed in a future version. It currently returns an empty list. Use client.intelligence.get_grades(symbol), which returns the same class of grade-change rows via :class:~fmp_data.intelligence.models.StockGrade. It is not a drop-in: the field names differ and the action/price-target columns this model declared are absent.

get_upgrades_downgrades_consensus(symbol)

Get upgrades and downgrades consensus

.. deprecated:: upgrades-downgrades-consensus 404s on the FMP API and will be removed in a future version. It currently returns None. Use client.intelligence.get_grades_consensus(symbol), which returns :class:~fmp_data.intelligence.models.StockGradesConsensus -- the same strongBuy/buy/hold/sell/strongSell tally under a different model, without this model's derived consensus label.

handler: python options: show_root_heading: true show_source: false

AsyncCompanyClient

Bases: AsyncEndpointGroup

Async client for company-related API endpoints.

All methods are async and use the same names as the sync CompanyClient.

Example

async with AsyncFMPDataClient.from_env() as client: profile = await client.company.get_profile("AAPL")

get_aftermarket_quote(symbol) async

Get aftermarket quote data

get_aftermarket_trade(symbol) async

Get aftermarket trade data

get_analyst_estimates(symbol, period='annual', page=0, limit=10) async

Get analyst estimates

get_analyst_recommendations(symbol) async

Get analyst recommendations

.. deprecated:: analyst-stock-recommendations 404s on the FMP API and will be removed in a future version. It currently returns an empty list. Use client.intelligence.get_grades_consensus(symbol). It is not a drop-in: this method returned one row per month with rolling counts, and the replacement returns one current consensus record.

get_balance_sheet_as_reported(symbol, period='annual', limit=10) async

Get balance sheet as originally reported

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
period PeriodAnnualQuarter

'annual' or 'quarter' (default: 'annual')

'annual'
limit int

Number of periods to return (default: 10)

10

Returns:

Type Description
list[AsReportedBalanceSheet]

List of as-reported balance sheets

get_balance_sheet_growth(symbol, period='annual', limit=20) async

Get year-over-year growth rates for balance sheet items

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
period Period

'annual', 'quarter', 'FY', or 'Q1'-'Q4' (default: 'annual')

'annual'
limit int

Number of periods to return (default: 20)

20

Returns:

Type Description
list[FinancialGrowth]

List of balance sheet growth data

get_balance_sheet_ttm(symbol, limit=None) async

Get trailing twelve months (TTM) balance sheet

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
limit int | None

Number of periods to return

None

Returns:

Type Description
list[BalanceSheet]

List of TTM balance sheet data

get_cash_flow_as_reported(symbol, period='annual', limit=10) async

Get cash flow statement as originally reported

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
period PeriodAnnualQuarter

'annual' or 'quarter' (default: 'annual')

'annual'
limit int

Number of periods to return (default: 10)

10

Returns:

Type Description
list[AsReportedCashFlowStatement]

List of as-reported cash flow statements

get_cash_flow_growth(symbol, period='annual', limit=20) async

Get year-over-year growth rates for cash flow items

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
period Period

'annual', 'quarter', 'FY', or 'Q1'-'Q4' (default: 'annual')

'annual'
limit int

Number of periods to return (default: 20)

20

Returns:

Type Description
list[FinancialGrowth]

List of cash flow growth data

get_cash_flow_ttm(symbol, limit=None) async

Get trailing twelve months (TTM) cash flow statement

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
limit int | None

Number of periods to return

None

Returns:

Type Description
list[CashFlowStatement]

List of TTM cash flow data

get_company_logo_url(symbol)

Get the company logo URL (sync, no API call needed)

get_company_notes(symbol) async

Get company financial notes

get_company_peers(symbol) async

Get company peers

get_core_information(symbol) async

Get core company information

.. deprecated:: company-core-information 404s on the FMP API and will be removed in a future version. It currently returns None. Use :meth:get_profile instead. It is not a drop-in: profile is a flatter record and does not carry the registration-detail fields this model declares, so read the fields you need from :class:~fmp_data.company.models.CompanyProfile directly.

get_delisted_companies(page=0, limit=100) async

Get companies FMP reports as delisted.

Parameters:

Name Type Description Default
page int

Page number for pagination (default 0)

0
limit int

Number of results per page (default 100)

100

Returns:

Type Description
list[DelistedCompany]

List of slim delisted rows (symbol, companyName, exchange,

list[DelistedCompany]

IPO and delist dates).

get_dividends(symbol, from_date=None, to_date=None, limit=None) async

Get historical dividend payments for a specific company

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
from_date date | None

Start date (optional)

None
to_date date | None

End date (optional)

None
limit int | None

Number of dividend records to return (optional)

None

Returns:

Type Description
list[DividendEvent]

List of DividendEvent objects containing dividend history

get_earnings(symbol, limit=20) async

Get historical earnings reports for a specific company

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
limit int

Number of earnings reports to return (default: 20)

20

Returns:

Type Description
list[EarningEvent]

List of EarningEvent objects containing earnings history

get_employee_count(symbol) async

Get company employee count history

get_enterprise_values(symbol, period='annual', limit=20) async

Get historical enterprise value data

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
period Period

'annual', 'quarter', 'FY', or 'Q1'-'Q4' (default: 'annual')

'annual'
limit int

Number of periods to return (default: 20)

20

Returns:

Type Description
list[EnterpriseValue]

List of enterprise value data

get_executive_compensation(symbol) async

Get executive compensation data for a company

get_executive_compensation_benchmark(year) async

Get executive compensation benchmark data by industry and year

Parameters:

Name Type Description Default
year int

Year for compensation data

required

Returns:

Type Description
list[ExecutiveCompensationBenchmark]

List of executive compensation benchmarks by industry

get_executives(symbol) async

Get company executives information

get_financial_growth(symbol, period='annual', limit=20) async

Get comprehensive financial growth metrics

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
period Period

'annual', 'quarter', 'FY', or 'Q1'-'Q4' (default: 'annual')

'annual'
limit int

Number of periods to return (default: 20)

20

Returns:

Type Description
list[FinancialGrowth]

List of comprehensive financial growth data

get_financial_ratios_ttm(symbol) async

Get trailing twelve months (TTM) financial ratios

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required

Returns:

Type Description
list[FinancialRatiosTTM]

List of TTM financial ratios

get_financial_reports_json(symbol, year, period='FY') async

Get Form 10-K financial reports in JSON format

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
year int

Report year

required
period PeriodFiscal

Report period - 'FY' or 'Q1'-'Q4' (default: 'FY')

'FY'

Returns:

Type Description
dict

Dictionary containing financial report data

get_financial_reports_xlsx(symbol, year, period='FY') async

Get Form 10-K financial reports in Excel format

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
year int

Report year

required
period PeriodFiscal

Report period - 'FY' or 'Q1'-'Q4' (default: 'FY')

'FY'

Returns:

Type Description
bytes

Binary data for XLSX file

get_financial_scores(symbol) async

Get comprehensive financial health scores

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required

Returns:

Type Description
list[FinancialScore]

List of financial scores including Altman Z-Score and Piotroski Score

get_geographic_revenue_segmentation(symbol, period='annual', structure='flat') async

Get revenue segmentation by geographic region.

Parameters:

Name Type Description Default
symbol str

Company symbol

required
period PeriodAnnualQuarter

Data period ('annual' or 'quarter')

'annual'
structure Structure

Response layout ('flat' or 'nested'). Stable currently returns the same list-of-objects for both (probed 2026-08-17).

'flat'

Returns:

Type Description
list[GeographicRevenueSegment]

List of geographic revenue segments by fiscal year

get_historical_market_cap(symbol) async

Get historical market capitalization data

get_historical_prices(symbol, from_date=None, to_date=None) async

Get historical daily price data

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
from_date date | None

Start date (optional)

None
to_date date | None

End date (optional)

None

Returns:

Type Description
HistoricalData

HistoricalData object containing the price history

get_historical_prices_dividend_adjusted(symbol, from_date=None, to_date=None) async

Get historical daily price data adjusted for dividends

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
from_date date | None

Start date (optional)

None
to_date date | None

End date (optional)

None

Returns:

Type Description
HistoricalData

HistoricalData object containing the dividend-adjusted price history

get_historical_prices_light(symbol, from_date=None, to_date=None) async

Get lightweight historical daily price data (open, high, low, close only)

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
from_date date | None

Start date (optional)

None
to_date date | None

End date (optional)

None

Returns:

Type Description
HistoricalData

HistoricalData object containing the price history

get_historical_prices_non_split_adjusted(symbol, from_date=None, to_date=None) async

Get historical daily price data without split adjustments

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
from_date date | None

Start date (optional)

None
to_date date | None

End date (optional)

None

Returns:

Type Description
HistoricalData

HistoricalData object containing the price history without split adjustments

get_historical_share_float(symbol) async

Get historical share float data for a company

.. deprecated:: historical/shares-float 404s and will be removed in a future version. It currently returns an empty list. Use :meth:get_share_float, which serves the live shares-float with the same fields (date, floatShares, freeFloat, outstandingShares, source, symbol). It is not a drop-in: it answers with the current snapshot rather than a history, so back-fill is no longer available from FMP.

get_income_statement_as_reported(symbol, period='annual', limit=10) async

Get income statement as originally reported

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
period PeriodAnnualQuarter

'annual' or 'quarter' (default: 'annual')

'annual'
limit int

Number of periods to return (default: 10)

10

Returns:

Type Description
list[AsReportedIncomeStatement]

List of as-reported income statements

get_income_statement_growth(symbol, period='annual', limit=20) async

Get year-over-year growth rates for income statement items

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
period Period

'annual', 'quarter', 'FY', or 'Q1'-'Q4' (default: 'annual')

'annual'
limit int

Number of periods to return (default: 20)

20

Returns:

Type Description
list[FinancialGrowth]

List of income statement growth data

get_income_statement_ttm(symbol, limit=None) async

Get trailing twelve months (TTM) income statement

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
limit int | None

Number of periods to return

None

Returns:

Type Description
list[IncomeStatement]

List of TTM income statement data

get_intraday_prices(symbol, interval='1min', from_date=None, to_date=None, nonadjusted=None) async

Get intraday price data

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
interval Interval

Time interval (1min, 5min, 15min, 30min, 1hour, 4hour)

'1min'
from_date date | None

Start date (optional)

None
to_date date | None

End date (optional)

None
nonadjusted bool | None

Use non-adjusted data (optional)

None

get_key_metrics_ttm(symbol) async

Get trailing twelve months (TTM) key financial metrics

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required

Returns:

Type Description
list[KeyMetricsTTM]

List of TTM key metrics

get_market_cap(symbol) async

Get market capitalization data

get_mergers_acquisitions_latest(page=0, limit=100) async

Get latest mergers and acquisitions transactions

Parameters:

Name Type Description Default
page int

Page number for pagination (default 0)

0
limit int

Number of results per page (default 100)

100

Returns:

Type Description
list[MergerAcquisition]

List of recent M&A transactions

Search mergers and acquisitions transactions by company name

Parameters:

Name Type Description Default
name str

Company name to search for

required
page int

Page number for pagination (default 0)

0
limit int

Number of results per page (default 100)

100

Returns:

Type Description
list[MergerAcquisition]

List of M&A transactions matching the search

get_price_target(symbol) async

Get price targets

.. deprecated:: price-target 404s on the FMP API and will be removed in a future version. It currently returns an empty list. Use :meth:get_price_target_summary or :meth:get_price_target_consensus. Neither is a drop-in: this method yielded one row per analyst target, and both replacements return a single aggregated record with no per-analyst detail.

get_price_target_consensus(symbol) async

Get price target consensus

get_price_target_summary(symbol) async

Get price target summary

get_product_revenue_segmentation(symbol, period='annual', structure='flat') async

Get revenue segmentation by product.

Parameters:

Name Type Description Default
symbol str

Company symbol

required
period PeriodAnnualQuarter

Data period ('annual' or 'quarter')

'annual'
structure Structure

Response layout ('flat' or 'nested'). Stable currently returns the same list-of-objects for both (probed 2026-08-17).

'flat'

Returns:

Type Description
list[ProductRevenueSegment]

List of product revenue segments by fiscal year

get_profile(symbol) async

Get company profile

get_profile_cik(cik) async

Get company profile by CIK number

get_quote(symbol) async

Get real-time stock quote

get_share_float(symbol) async

Get current share float data for a company

get_simple_quote(symbol) async

Get simple stock quote

get_stock_price_change(symbol) async

Get stock price change percentages across time horizons

get_stock_splits(symbol, from_date=None, to_date=None, limit=None) async

Get historical stock split information for a specific company

Parameters:

Name Type Description Default
symbol str

Stock symbol (e.g., 'AAPL')

required
from_date date | None

Start date (optional)

None
to_date date | None

End date (optional)

None
limit int | None

Number of split records to return (optional)

None

Returns:

Type Description
list[StockSplitEvent]

List of StockSplitEvent objects containing split history

get_symbol_changes() async

Get symbol change history

get_upgrades_downgrades(symbol) async

Get upgrades and downgrades

.. deprecated:: upgrades-downgrades 404s on the FMP API and will be removed in a future version. It currently returns an empty list. Use client.intelligence.get_grades(symbol), which returns the same class of grade-change rows via :class:~fmp_data.intelligence.models.StockGrade. It is not a drop-in: the field names differ and the action/price-target columns this model declared are absent.

get_upgrades_downgrades_consensus(symbol) async

Get upgrades and downgrades consensus

.. deprecated:: upgrades-downgrades-consensus 404s on the FMP API and will be removed in a future version. It currently returns None. Use client.intelligence.get_grades_consensus(symbol), which returns :class:~fmp_data.intelligence.models.StockGradesConsensus -- the same strongBuy/buy/hold/sell/strongSell tally under a different model, without this model's derived consensus label.

handler: python options: show_root_heading: true show_source: false

Market Client

MarketClient

Bases: EndpointGroup

Client for market data endpoints

get_actively_trading_list()

Get list of actively trading stocks

get_all_exchange_market_hours()

Get market trading hours information for all exchanges

get_all_shares_float()

Get share float data for all companies

get_available_countries()

Get a comprehensive list of countries where stock symbols are available

get_available_exchanges()

Get a complete list of supported stock exchanges

get_available_indexes()

Get list of all available indexes

get_available_industries()

Get a comprehensive list of industries where stock symbols are available

get_available_sectors()

Get a complete list of industry sectors

get_cik_list(page=0, limit=1000)

Get complete list of all CIK numbers

get_company_screener(market_cap_more_than=None, market_cap_less_than=None, price_more_than=None, price_less_than=None, beta_more_than=None, beta_less_than=None, volume_more_than=None, volume_less_than=None, dividend_more_than=None, dividend_less_than=None, is_etf=None, is_fund=None, is_actively_trading=None, sector=None, industry=None, country=None, exchange=None, limit=None, page=None, include_all_share_classes=None)

Screen companies based on various criteria.

page is omitted from the request when unset so existing callers keep the same wire shape. Pass 0 or a later page to paginate.

get_etf_list()

Get list of all available ETFs

get_financial_statement_symbol_list()

Get list of symbols with financial statements available

get_gainers()

Get market gainers

get_historical_industry_pe(industry, from_date=None, to_date=None, exchange=None)

Get historical industry price-to-earnings data

get_historical_industry_performance(industry, from_date=None, to_date=None, exchange=None)

Get historical industry performance data

get_historical_sector_pe(sector, from_date=None, to_date=None, exchange=None)

Get historical sector price-to-earnings data

get_historical_sector_performance(sector, from_date=None, to_date=None, exchange=None)

Get historical sector performance data

get_holidays_by_exchange(exchange='NYSE')

Get market holidays for a specific exchange

get_industry_pe_snapshot(date=None, industry=None, exchange=None)

Get industry price-to-earnings snapshot data

get_industry_performance_snapshot(industry=None, date=None, exchange=None)

Get industry performance snapshot data

get_ipo_disclosure(from_date=None, to_date=None, limit=100)

Get IPO disclosure documents

Parameters:

Name Type Description Default
from_date date | None

Start date for IPO search (YYYY-MM-DD)

None
to_date date | None

End date for IPO search (YYYY-MM-DD)

None
limit int

Number of results to return (default: 100)

100

Returns:

Type Description
list[IPODisclosure]

List of IPO disclosure information

get_ipo_prospectus(from_date=None, to_date=None, limit=100)

Get IPO prospectus documents

Parameters:

Name Type Description Default
from_date date | None

Start date for IPO search (YYYY-MM-DD)

None
to_date date | None

End date for IPO search (YYYY-MM-DD)

None
limit int

Number of results to return (default: 100)

100

Returns:

Type Description
list[IPOProspectus]

List of IPO prospectus information

get_losers()

Get market losers

get_market_hours(exchange='NYSE')

Get market trading hours information for a specific exchange

Parameters:

Name Type Description Default
exchange str

Exchange code (e.g., "NYSE", "NASDAQ"). Defaults to "NYSE".

'NYSE'

Returns:

Name Type Description
MarketHours MarketHours

Exchange trading hours object

Raises:

Type Description
ValueError

If the API returns an empty list

get_most_active()

Get most active stocks

get_pre_post_market()

Get pre/post market data

.. deprecated:: pre-post-market 404s and will be removed in a future version. It currently returns an empty list. The no-argument, market-wide call no longer exists at FMP — extended-hours data is per-symbol now, so there is no signature-compatible replacement. Use client.company.get_aftermarket_quote(symbol), or batch-aftermarket-quote/batch-aftermarket-trade with a mandatory symbols parameter for several at once. The payload differs too: bid/ask price and size, not this model's price and session.

get_sector_pe_snapshot(date=None, sector=None, exchange=None)

Get sector price-to-earnings snapshot data

get_sector_performance(sector=None, date=None, exchange=None)

Get sector performance data

get_stock_list()

Get list of all available stocks

get_tradable_list(limit=None, offset=None)

Get list of tradable securities

.. deprecated:: tradable-list 404s and will be removed in a future version. It currently returns an empty list. There is no drop-in replacement — every path variant probed also 404s. The closest live sources are :meth:get_stock_list, :meth:get_etf_list and :meth:get_actively_trading_list, but each defines a different universe: "tradable" is not the same set as "every listed stock", so choosing one is a decision about which universe you want, not a mechanical substitution.

search_by_cik(query)

Search companies by CIK number.

Parameters:

Name Type Description Default
query str

The CIK number, e.g. "320193" or "0000320193". Despite the parameter name this is not a free-text search: the API matches a CIK only and rejects a company name with 400 Invalid or missing query parameter - cik. A numeric value is zero-padded to the canonical 10 digits before it is sent.

required

Returns:

Type Description
list[CIKResult]

List of matching CIK records.

search_by_cusip(query)

Search companies by CUSIP

search_by_isin(query)

Search companies by ISIN

search_company(query, limit=None, exchange=None)

Search for companies

search_exchange_variants(query)

Search for exchange trading variants of a company

search_symbol(query, limit=None, exchange=None)

Search for security symbols across all asset types

handler: python options: show_root_heading: true show_source: false

AsyncMarketClient

Bases: AsyncEndpointGroup

Async client for market data endpoints.

get_actively_trading_list() async

Get list of actively trading stocks

get_all_exchange_market_hours() async

Get market trading hours information for all exchanges

get_all_shares_float() async

Get share float data for all companies

get_available_countries() async

Get a comprehensive list of countries where stock symbols are available

get_available_exchanges() async

Get a complete list of supported stock exchanges

get_available_indexes() async

Get list of all available indexes

get_available_industries() async

Get a comprehensive list of industries where stock symbols are available

get_available_sectors() async

Get a complete list of industry sectors

get_cik_list(page=0, limit=1000) async

Get complete list of all CIK numbers

get_company_screener(market_cap_more_than=None, market_cap_less_than=None, price_more_than=None, price_less_than=None, beta_more_than=None, beta_less_than=None, volume_more_than=None, volume_less_than=None, dividend_more_than=None, dividend_less_than=None, is_etf=None, is_fund=None, is_actively_trading=None, sector=None, industry=None, country=None, exchange=None, limit=None, page=None, include_all_share_classes=None) async

Screen companies based on various criteria.

page is omitted from the request when unset so existing callers keep the same wire shape. Pass 0 or a later page to paginate.

get_etf_list() async

Get list of all available ETFs

get_financial_statement_symbol_list() async

Get list of symbols with financial statements available

get_gainers() async

Get market gainers

get_historical_industry_pe(industry, from_date=None, to_date=None, exchange=None) async

Get historical industry price-to-earnings data

get_historical_industry_performance(industry, from_date=None, to_date=None, exchange=None) async

Get historical industry performance data

get_historical_sector_pe(sector, from_date=None, to_date=None, exchange=None) async

Get historical sector price-to-earnings data

get_historical_sector_performance(sector, from_date=None, to_date=None, exchange=None) async

Get historical sector performance data

get_holidays_by_exchange(exchange='NYSE') async

Get market holidays for a specific exchange

get_industry_pe_snapshot(date=None, industry=None, exchange=None) async

Get industry price-to-earnings snapshot data

get_industry_performance_snapshot(industry=None, date=None, exchange=None) async

Get industry performance snapshot data

get_ipo_disclosure(from_date=None, to_date=None, limit=100) async

Get IPO disclosure documents

Parameters:

Name Type Description Default
from_date date | None

Start date for IPO search (YYYY-MM-DD)

None
to_date date | None

End date for IPO search (YYYY-MM-DD)

None
limit int

Number of results to return (default: 100)

100

Returns:

Type Description
list[IPODisclosure]

List of IPO disclosure information

get_ipo_prospectus(from_date=None, to_date=None, limit=100) async

Get IPO prospectus documents

Parameters:

Name Type Description Default
from_date date | None

Start date for IPO search (YYYY-MM-DD)

None
to_date date | None

End date for IPO search (YYYY-MM-DD)

None
limit int

Number of results to return (default: 100)

100

Returns:

Type Description
list[IPOProspectus]

List of IPO prospectus information

get_losers() async

Get market losers

get_market_hours(exchange='NYSE') async

Get market trading hours information for a specific exchange

Parameters:

Name Type Description Default
exchange str

Exchange code (e.g., "NYSE", "NASDAQ"). Defaults to "NYSE".

'NYSE'

Returns:

Name Type Description
MarketHours MarketHours

Exchange trading hours object

Raises:

Type Description
ValueError

If the API returns an empty list

get_most_active() async

Get most active stocks

get_pre_post_market() async

Get pre/post market data

.. deprecated:: pre-post-market 404s and will be removed in a future version. It currently returns an empty list. The no-argument, market-wide call no longer exists at FMP — extended-hours data is per-symbol now, so there is no signature-compatible replacement. Use client.company.get_aftermarket_quote(symbol), or batch-aftermarket-quote/batch-aftermarket-trade with a mandatory symbols parameter for several at once. The payload differs too: bid/ask price and size, not this model's price and session.

get_sector_pe_snapshot(date=None, sector=None, exchange=None) async

Get sector price-to-earnings snapshot data

get_sector_performance(sector=None, date=None, exchange=None) async

Get sector performance data

get_stock_list() async

Get list of all available stocks

get_tradable_list(limit=None, offset=None) async

Get list of tradable securities

.. deprecated:: tradable-list 404s and will be removed in a future version. It currently returns an empty list. There is no drop-in replacement — every path variant probed also 404s. The closest live sources are :meth:get_stock_list, :meth:get_etf_list and :meth:get_actively_trading_list, but each defines a different universe: "tradable" is not the same set as "every listed stock", so choosing one is a decision about which universe you want, not a mechanical substitution.

search_by_cik(query) async

Search companies by CIK number.

Parameters:

Name Type Description Default
query str

The CIK number, e.g. "320193" or "0000320193". Despite the parameter name this is not a free-text search: the API matches a CIK only and rejects a company name with 400 Invalid or missing query parameter - cik. A numeric value is zero-padded to the canonical 10 digits before it is sent.

required

Returns:

Type Description
list[CIKResult]

List of matching CIK records.

search_by_cusip(query) async

Search companies by CUSIP

search_by_isin(query) async

Search companies by ISIN

search_company(query, limit=None, exchange=None) async

Search for companies

search_exchange_variants(query) async

Search for exchange trading variants of a company

search_symbol(query, limit=None, exchange=None) async

Search for security symbols across all asset types

handler: python options: show_root_heading: true show_source: false

Fundamental Client

FundamentalClient

Bases: EndpointGroup

Client for fundamental analysis endpoints

get_balance_sheet(symbol, period='annual', limit=None)

Get balance sheets

get_cash_flow(symbol, period='annual', limit=None)

Get cash flow statements

get_custom_discounted_cash_flow(symbol)

Get advanced DCF analysis with detailed projections

get_custom_levered_dcf(symbol)

Get levered DCF analysis using FCFE

get_discounted_cash_flow(symbol)

Get discounted cash flow valuation

get_financial_ratios(symbol, period='annual', limit=None)

Get financial ratios

get_financial_reports_dates(symbol)

Get list of financial reports dates

get_full_financial_statement(symbol, period='annual', limit=None)

Get full financial statements as reported

get_historical_rating(symbol)

Get historical company ratings

.. deprecated:: historical-rating 404s and will be removed in a future version. It currently returns an empty list. Use client.intelligence.get_ratings_historical(symbol), which serves the live ratings-historical. It is not a drop-in: that payload carries overallScore plus per-metric scores (discountedCashFlowScore, returnOnEquityScore, …) where this model declared ratingScore, ratingDetails and ratingRecommendation.

get_income_statement(symbol, period='annual', limit=None)

Get income statements

get_key_metrics(symbol, period='annual', limit=None)

Get key financial metrics

get_latest_financial_statements(page=0, limit=250)

Get latest financial statement metadata across symbols

get_levered_dcf(symbol)

Get levered DCF valuation

get_owner_earnings(symbol, limit=None)

Get owner earnings metrics

handler: python options: show_root_heading: true show_source: false

AsyncFundamentalClient

Bases: AsyncEndpointGroup

Async client for fundamental analysis endpoints.

get_balance_sheet(symbol, period='annual', limit=None) async

Get balance sheets

get_cash_flow(symbol, period='annual', limit=None) async

Get cash flow statements

get_custom_discounted_cash_flow(symbol) async

Get advanced DCF analysis with detailed projections

get_custom_levered_dcf(symbol) async

Get levered DCF analysis using FCFE

get_discounted_cash_flow(symbol) async

Get discounted cash flow valuation

get_financial_ratios(symbol, period='annual', limit=None) async

Get financial ratios

get_financial_reports_dates(symbol) async

Get list of financial reports dates

get_full_financial_statement(symbol, period='annual', limit=None) async

Get full financial statements as reported

get_historical_rating(symbol) async

Get historical company ratings

.. deprecated:: historical-rating 404s and will be removed in a future version. It currently returns an empty list. Use client.intelligence.get_ratings_historical(symbol), which serves the live ratings-historical. It is not a drop-in: that payload carries overallScore plus per-metric scores (discountedCashFlowScore, returnOnEquityScore, …) where this model declared ratingScore, ratingDetails and ratingRecommendation.

get_income_statement(symbol, period='annual', limit=None) async

Get income statements

get_key_metrics(symbol, period='annual', limit=None) async

Get key financial metrics

get_latest_financial_statements(page=0, limit=250) async

Get latest financial statement metadata across symbols

get_levered_dcf(symbol) async

Get levered DCF valuation

get_owner_earnings(symbol, limit=None) async

Get owner earnings metrics

handler: python options: show_root_heading: true show_source: false

Technical Client

TechnicalClient

Bases: EndpointGroup

Client for technical analysis endpoints

get_adx(symbol, period_length=14, timeframe='1day', interval=None, start_date=None, end_date=None)

Get Average Directional Index values

get_dema(symbol, period_length=20, timeframe='1day', interval=None, start_date=None, end_date=None)

Get Double Exponential Moving Average values

get_ema(symbol, period_length=20, timeframe='1day', interval=None, start_date=None, end_date=None)

Get Exponential Moving Average values

get_rsi(symbol, period_length=14, timeframe='1day', interval=None, start_date=None, end_date=None)

Get Relative Strength Index values

get_sma(symbol, period_length=20, timeframe='1day', interval=None, start_date=None, end_date=None)

Get Simple Moving Average values

get_standard_deviation(symbol, period_length=20, timeframe='1day', interval=None, start_date=None, end_date=None)

Get Standard Deviation values

get_tema(symbol, period_length=20, timeframe='1day', interval=None, start_date=None, end_date=None)

Get Triple Exponential Moving Average values

get_williams(symbol, period_length=14, timeframe='1day', interval=None, start_date=None, end_date=None)

Get Williams %R values

get_wma(symbol, period_length=20, timeframe='1day', interval=None, start_date=None, end_date=None)

Get Weighted Moving Average values

handler: python options: show_root_heading: true show_source: false

AsyncTechnicalClient

Bases: AsyncEndpointGroup

Async client for technical analysis endpoints.

get_adx(symbol, period_length=14, timeframe='1day', interval=None, start_date=None, end_date=None) async

Get Average Directional Index values

get_dema(symbol, period_length=20, timeframe='1day', interval=None, start_date=None, end_date=None) async

Get Double Exponential Moving Average values

get_ema(symbol, period_length=20, timeframe='1day', interval=None, start_date=None, end_date=None) async

Get Exponential Moving Average values

get_rsi(symbol, period_length=14, timeframe='1day', interval=None, start_date=None, end_date=None) async

Get Relative Strength Index values

get_sma(symbol, period_length=20, timeframe='1day', interval=None, start_date=None, end_date=None) async

Get Simple Moving Average values

get_standard_deviation(symbol, period_length=20, timeframe='1day', interval=None, start_date=None, end_date=None) async

Get Standard Deviation values

get_tema(symbol, period_length=20, timeframe='1day', interval=None, start_date=None, end_date=None) async

Get Triple Exponential Moving Average values

get_williams(symbol, period_length=14, timeframe='1day', interval=None, start_date=None, end_date=None) async

Get Williams %R values

get_wma(symbol, period_length=20, timeframe='1day', interval=None, start_date=None, end_date=None) async

Get Weighted Moving Average values

handler: python options: show_root_heading: true show_source: false

Market Intelligence Client

MarketIntelligenceClient

Bases: EndpointGroup

Client for market intelligence endpoints

get_crowdfunding_by_cik(cik)

Get crowdfunding offerings by CIK

get_crowdfunding_rss(page=0, limit=100)

Get latest crowdfunding offerings

get_crypto_news(page=0, symbol=None, from_date=None, to_date=None, limit=20)

Get a list of the latest crypto news articles (or search by symbol)

get_crypto_symbol_news(symbol, page=0, from_date=None, to_date=None, limit=20)

Search crypto news articles by symbol

get_dividends_calendar(start_date=None, end_date=None)

Get dividends calendar

get_earnings_calendar(start_date=None, end_date=None, include_report_times=None)

Get earnings calendar

Parameters:

Name Type Description Default
start_date date | None

Earliest reporting date to include

None
end_date date | None

Latest reporting date to include

None
include_report_times bool | None

When True, the API may include session time ('bmo'/'amc'), period_ending, fiscal_period, fiscal_year and confirmed on events (per-row optional). Omitted from the query when unset; explicit True/False is sent.

None

Returns:

Type Description
list[EarningEvent]

list[EarningEvent]: Earnings events in the requested window

get_earnings_confirmed(start_date=None, end_date=None)

Get confirmed earnings dates

.. deprecated:: This endpoint is no longer available on the FMP API and will be removed in a future version. It currently returns an empty list. Use :meth:get_earnings_calendar with include_report_times=True and read confirmed plus session time (bmo/amc), which is not a drop-in for the old clock-time field.

get_earnings_surprises(symbol)

Get earnings surprises

.. deprecated:: This endpoint is no longer available on the FMP API and will be removed in a future version. It currently returns an empty list. Use :meth:get_historical_earnings and compare eps against eps_estimated (old model used actual_earning_result / estimated_earning).

get_equity_offering_by_cik(cik)

Get equity offerings by CIK

get_equity_offering_rss(page=0, limit=10, cik=None)

Get latest equity offerings

get_esg_benchmark()

Get ESG benchmark data

get_esg_data(symbol)

Get ESG data for a company

get_esg_ratings(symbol)

Get ESG ratings for a company

get_fmp_articles(page=0, limit=20, size=None)

Get a list of the latest FMP articles

Parameters:

Name Type Description Default
page int

Page number to fetch (default: 0)

0
limit int

Number of articles per page (default: 20)

20
size int | None

Deprecated alias for limit (default: None)

None

Returns:

Type Description
list[FMPArticle]

list[FMPArticle]: List of FMP articles from the content array

get_forex_news(page=0, symbol=None, from_date=None, to_date=None, limit=20)

Get a list of the latest forex news articles (or search by symbol)

get_forex_symbol_news(symbol, page=0, from_date=None, to_date=None, limit=20)

Search forex news articles by symbol

get_general_news(page=0, from_date=None, to_date=None, limit=20)

Get a list of the latest general news articles

get_grades(symbol, page=0)

Get stock grades from analysts

get_grades_consensus(symbol)

Get stock grades consensus summary

get_grades_historical(symbol, limit=100)

Get historical stock grades

get_grades_latest_news(page=0)

Get latest stock grade news

get_grades_news(symbol, page=0)

Get stock grade news

get_historical_earnings(symbol, limit=None, include_report_times=None)

Get historical and upcoming earnings reports for a symbol

Parameters:

Name Type Description Default
symbol str

Stock symbol

required
limit int | None

Maximum number of reports to return

None
include_report_times bool | None

When True, the API may include session time ('bmo'/'amc'), period_ending, fiscal_period, fiscal_year and confirmed on reports (per-row optional). Omitted from the query when unset; explicit True/False is sent.

None

Returns:

Type Description
list[EarningEvent]

list[EarningEvent]: Earnings reports for the symbol

get_historical_social_sentiment(symbol, page=0)

Get historical social sentiment data (REMOVED)

get_house_disclosure(symbol)

Get House disclosure data

get_house_latest(page=0, limit=100)

Get latest House financial disclosures

get_house_trades_by_id(senate_id, page=0, limit=100)

Get House trading data by member id

get_house_trades_by_name(name)

Get House trading data by name

get_ipo_calendar(start_date=None, end_date=None)

Get IPO calendar

get_press_releases(page=0, from_date=None, to_date=None, limit=20)

Get a list of the latest press releases

get_press_releases_by_symbol(symbol, page=0, from_date=None, to_date=None, limit=20)

Get a list of the latest press releases for a specific company

get_price_target_latest_news(page=0)

Get latest price target news

get_price_target_news(symbol, page=0)

Get price target news

get_ratings_historical(symbol, limit=100)

Get historical analyst ratings

get_ratings_snapshot(symbol)

Get current analyst ratings snapshot

get_senate_latest(page=0, limit=100)

Get latest Senate financial disclosures

get_senate_net_worth(senate_id, page=0, limit=250)

Get itemized Senate/House net-worth disclosures.

get_senate_net_worth_aggregated(senate_id, *, totals_col=None)

Get yearly aggregated Senate/House net-worth totals.

get_senate_positions(senate_id=None, *, party=None, position=None, page=0, limit=300)

Get Congress member term history.

get_senate_profile(senate_id=None, *, active=None, latest_party=None, latest_position=None, page=0, limit=500)

Get Congress member profiles.

get_senate_trades_by_id(senate_id, page=0, limit=100)

Get Senate trading data by member id

get_senate_trades_by_name(name)

Get Senate trading data by name

get_senate_trading(symbol)

Get Senate trading data

get_senate_trading_rss(page=0)

Get Senate trading RSS feed

.. deprecated:: senate-trading-rss-feed 404s and will be removed in a future version. It currently returns an empty list. Use :meth:get_senate_latest, which serves the live senate-latest and returns the same :class:~fmp_data.intelligence.models.SenateTrade rows.

get_social_sentiment_changes(type, source)

Get changes in social sentiment data (REMOVED)

get_stock_news(symbol=None, page=0, from_date=None, to_date=None, limit=20)

Get a list of the latest stock news articles

get_stock_news_sentiments(page=0)

Get a list of the latest stock news articles with sentiment analysis

.. deprecated:: This endpoint is no longer available on the FMP API and will be removed in a future version. It currently returns an empty list. Use :meth:get_stock_news for the articles; the sentiment and sentiment-score fields have no stable replacement.

get_stock_splits_calendar(start_date=None, end_date=None)

Get stock splits calendar

get_stock_symbol_news(symbol, page=0, from_date=None, to_date=None, limit=20)

Get a list of the latest stock news articles

Get trending social sentiment data (REMOVED)

search_crowdfunding(name)

Search crowdfunding offerings

search_equity_offering(name)

Search equity offerings

handler: python options: show_root_heading: true show_source: false

AsyncMarketIntelligenceClient

Bases: AsyncEndpointGroup

Async client for market intelligence endpoints.

get_crowdfunding_by_cik(cik) async

Get crowdfunding offerings by CIK

get_crowdfunding_rss(page=0, limit=100) async

Get latest crowdfunding offerings

get_crypto_news(page=0, symbol=None, from_date=None, to_date=None, limit=20) async

Get a list of the latest crypto news articles (or search by symbol)

get_crypto_symbol_news(symbol, page=0, from_date=None, to_date=None, limit=20) async

Search crypto news articles by symbol

get_dividends_calendar(start_date=None, end_date=None) async

Get dividends calendar

get_earnings_calendar(start_date=None, end_date=None, include_report_times=None) async

Get earnings calendar

Parameters:

Name Type Description Default
start_date date | None

Earliest reporting date to include

None
end_date date | None

Latest reporting date to include

None
include_report_times bool | None

When True, the API may include session time ('bmo'/'amc'), period_ending, fiscal_period, fiscal_year and confirmed on events (per-row optional). Omitted from the query when unset; explicit True/False is sent.

None

Returns:

Type Description
list[EarningEvent]

list[EarningEvent]: Earnings events in the requested window

get_earnings_confirmed(start_date=None, end_date=None) async

Get confirmed earnings dates

.. deprecated:: This endpoint is no longer available on the FMP API and will be removed in a future version. It currently returns an empty list. Use :meth:get_earnings_calendar with include_report_times=True and read confirmed plus session time (bmo/amc), which is not a drop-in for the old clock-time field.

get_earnings_surprises(symbol) async

Get earnings surprises

.. deprecated:: This endpoint is no longer available on the FMP API and will be removed in a future version. It currently returns an empty list. Use :meth:get_historical_earnings and compare eps against eps_estimated (old model used actual_earning_result / estimated_earning).

get_equity_offering_by_cik(cik) async

Get equity offerings by CIK

get_equity_offering_rss(page=0, limit=10, cik=None) async

Get latest equity offerings

get_esg_benchmark() async

Get ESG benchmark data

get_esg_data(symbol) async

Get ESG data for a company

get_esg_ratings(symbol) async

Get ESG ratings for a company

get_fmp_articles(page=0, limit=20, size=None) async

Get a list of the latest FMP articles

Parameters:

Name Type Description Default
page int

Page number to fetch (default: 0)

0
limit int

Number of articles per page (default: 20)

20
size int | None

Deprecated alias for limit (default: None)

None

Returns:

Type Description
list[FMPArticle]

list[FMPArticle]: List of FMP articles from the content array

get_forex_news(page=0, symbol=None, from_date=None, to_date=None, limit=20) async

Get a list of the latest forex news articles (or search by symbol)

get_forex_symbol_news(symbol, page=0, from_date=None, to_date=None, limit=20) async

Search forex news articles by symbol

get_general_news(page=0, from_date=None, to_date=None, limit=20) async

Get a list of the latest general news articles

get_grades(symbol, page=0) async

Get stock grades from analysts

get_grades_consensus(symbol) async

Get stock grades consensus summary

get_grades_historical(symbol, limit=100) async

Get historical stock grades

get_grades_latest_news(page=0) async

Get latest stock grade news

get_grades_news(symbol, page=0) async

Get stock grade news

get_historical_earnings(symbol, limit=None, include_report_times=None) async

Get historical and upcoming earnings reports for a symbol

Parameters:

Name Type Description Default
symbol str

Stock symbol

required
limit int | None

Maximum number of reports to return

None
include_report_times bool | None

When True, the API may include session time ('bmo'/'amc'), period_ending, fiscal_period, fiscal_year and confirmed on reports (per-row optional). Omitted from the query when unset; explicit True/False is sent.

None

Returns:

Type Description
list[EarningEvent]

list[EarningEvent]: Earnings reports for the symbol

get_historical_social_sentiment(symbol, page=0) async

Get historical social sentiment data (REMOVED)

get_house_disclosure(symbol) async

Get House disclosure data

get_house_latest(page=0, limit=100) async

Get latest House financial disclosures

get_house_trades_by_id(senate_id, page=0, limit=100) async

Get House trading data by member id

get_house_trades_by_name(name) async

Get House trading data by name

get_ipo_calendar(start_date=None, end_date=None) async

Get IPO calendar

get_press_releases(page=0, from_date=None, to_date=None, limit=20) async

Get a list of the latest press releases

get_press_releases_by_symbol(symbol, page=0, from_date=None, to_date=None, limit=20) async

Get a list of the latest press releases for a specific company

get_price_target_latest_news(page=0) async

Get latest price target news

get_price_target_news(symbol, page=0) async

Get price target news

get_ratings_historical(symbol, limit=100) async

Get historical analyst ratings

get_ratings_snapshot(symbol) async

Get current analyst ratings snapshot

get_senate_latest(page=0, limit=100) async

Get latest Senate financial disclosures

get_senate_net_worth(senate_id, page=0, limit=250) async

Get itemized Senate/House net-worth disclosures.

get_senate_net_worth_aggregated(senate_id, *, totals_col=None) async

Get yearly aggregated Senate/House net-worth totals.

get_senate_positions(senate_id=None, *, party=None, position=None, page=0, limit=300) async

Get Congress member term history.

get_senate_profile(senate_id=None, *, active=None, latest_party=None, latest_position=None, page=0, limit=500) async

Get Congress member profiles.

get_senate_trades_by_id(senate_id, page=0, limit=100) async

Get Senate trading data by member id

get_senate_trades_by_name(name) async

Get Senate trading data by name

get_senate_trading(symbol) async

Get Senate trading data

get_senate_trading_rss(page=0) async

Get Senate trading RSS feed

.. deprecated:: senate-trading-rss-feed 404s and will be removed in a future version. It currently returns an empty list. Use :meth:get_senate_latest, which serves the live senate-latest and returns the same :class:~fmp_data.intelligence.models.SenateTrade rows.

get_social_sentiment_changes(type, source) async

Get changes in social sentiment data (REMOVED)

get_stock_news(symbol=None, page=0, from_date=None, to_date=None, limit=20) async

Get a list of the latest stock news articles

get_stock_news_sentiments(page=0) async

Get a list of the latest stock news articles with sentiment analysis

.. deprecated:: This endpoint is no longer available on the FMP API and will be removed in a future version. It currently returns an empty list. Use :meth:get_stock_news for the articles; the sentiment and sentiment-score fields have no stable replacement.

get_stock_splits_calendar(start_date=None, end_date=None) async

Get stock splits calendar

get_stock_symbol_news(symbol, page=0, from_date=None, to_date=None, limit=20) async

Get a list of the latest stock news articles

Get trending social sentiment data (REMOVED)

search_crowdfunding(name) async

Search crowdfunding offerings

search_equity_offering(name) async

Search equity offerings

handler: python options: show_root_heading: true show_source: false

Institutional Client

InstitutionalClient

Bases: EndpointGroup

Client for institutional activity endpoints

get_asset_allocation(report_date)

Get 13F asset allocation data for a report period end date

.. deprecated:: This endpoint 404s on the FMP API and will be removed in a future version. It currently returns an empty list. FMP publishes no stable replacement for the pre-aggregated allocation breakdown; the closest live source is per-filer 13F holdings, which you would have to aggregate yourself.

get_beneficial_ownership(symbol)

Get beneficial ownership data for a symbol

get_cik_mappings(page=0, limit=1000)

Get CIK to name mappings

get_fail_to_deliver(symbol, page=0)

Get fail to deliver data for a symbol

.. deprecated:: This endpoint 404s on the FMP API and will be removed in a future version. It currently returns an empty list. No stable FMP endpoint replaces it; the SEC publishes the same fails-to-deliver data itself, which is the only remaining source.

get_form_13f(cik, report_date)

Get Form 13F filing data for the quarter containing report_date.

Parameters:

Name Type Description Default
cik str | int

Central Index Key (CIK)

required
report_date date

Any date inside the report period (e.g., 2023-09-30). Only its year and calendar quarter reach the API.

required

Returns:

Type Description
list[Form13F]

List of Form13F objects. Empty list if no records found.

get_form_13f_by_quarter(cik, year, quarter)

Get Form 13F filing data for a calendar quarter.

This is the shape /stable/institutional-ownership/extract actually takes. year and quarter are mandatory query parameters -- the API answers 400 Query Error: Invalid or missing query parameter - year without them -- and there is no date parameter at all. The period end date is a response field.

:meth:get_form_13f is the date-shaped convenience layered over this method, not the other way round. This one is what the LangChain and MCP tools dispatch through, so their arguments match the wire (#188).

Parameters:

Name Type Description Default
cik str | int

Central Index Key (CIK)

required
year int

Filing year (e.g., 2023)

required
quarter int

Calendar quarter, 1-4

required

Returns:

Type Description
list[Form13F]

List of Form13F objects. Empty list if no records found.

get_form_13f_dates(cik)

Get Form 13F filing dates

Parameters:

Name Type Description Default
cik str | int

Central Index Key (CIK)

required

Returns:

Type Description
list[Form13FDate]

List of Form13FDate objects with filing dates.

list[Form13FDate]

Empty list if no records found.

get_holder_industry_breakdown(cik, report_date)

Get holders industry breakdown for a report period end date

get_holder_industry_breakdown_by_quarter(cik, year, quarter)

Get holders industry breakdown for a calendar quarter.

Wire shape of the industry-breakdown endpoint. :meth:get_holder_industry_breakdown is the date-shaped convenience.

get_holder_performance_summary(cik, report_date=None, page=0)

Get holder performance summary for a holder's full history.

Omitting report_date is the correct usage and is what the endpoint actually supports: the request goes without year/quarter and you get every period.

Warning

Passing report_date does not select a period -- the API ignores the derived year/quarter -- so it warns. See :meth:get_holder_performance_summary_by_quarter.

get_holder_performance_summary_by_quarter(cik, year, quarter, page=0)

Get holder performance summary -- the quarter is not applied.

Warning

This endpoint accepts year/quarter and then ignores them. It returns the holder's entire history whatever you pass, so this method does not do what its name says, and calling it emits a :class:UserWarning. Filter the returned rows by their date field instead.

Probed against the live API (re-checked while cutting 2.6.0): cik=0001067983 returns a byte-identical 52-row payload spanning 2013-06-30 to 2026-03-31 with no filter, with year=2023&quarter=3, and with year=2019&quarter=1. The five sibling *_by_quarter methods were probed the same way and do filter correctly; this one is the exception (#192).

The parameters are still sent, in case FMP starts honouring them.

get_industry_performance_summary(report_date)

Get industry performance summary for a report period end date

get_industry_performance_summary_by_quarter(year, quarter)

Get industry performance summary for a calendar quarter.

Wire shape of the industry-performance endpoint. :meth:get_industry_performance_summary is the date-shaped convenience.

get_insider_roster(symbol)

Get insider roster

get_insider_statistics(symbol)

Get insider trading statistics

get_insider_trades(symbol, page=0, limit=100)

Get insider trades

get_insider_trading_by_name(reporting_name, page=0)

Search insider trades by reporting name

get_insider_trading_latest(page=0, limit=100, trade_date=None)

Get latest insider trading activity

get_insider_trading_statistics_enhanced(symbol)

Get enhanced insider trading statistics

get_institutional_holders(page=0, limit=100)

Get list of institutional holders

get_institutional_holdings(symbol, report_date, year=None, quarter=None)

Get institutional holdings by symbol for a report period end date

get_institutional_holdings_by_quarter(symbol, year, quarter)

Get institutional holdings for a symbol in a calendar quarter.

The wire shape of /stable/institutional-ownership/ symbol-positions-summary: year and quarter are mandatory and the API rejects a request without them. LangChain and MCP tools dispatch through this method (#188); :meth:get_institutional_holdings is the date-shaped convenience.

Parameters:

Name Type Description Default
symbol str

Stock symbol

required
year int

Filing year (e.g., 2023)

required
quarter int

Calendar quarter, 1-4

required

get_institutional_ownership_analytics(symbol, report_date, page=0, limit=100)

Get filings extract with analytics by holder for a report period end date

get_institutional_ownership_analytics_by_quarter(symbol, year, quarter, page=0, limit=100)

Get filings extract with analytics by holder for a calendar quarter.

Wire shape of the analytics endpoint. :meth:get_institutional_ownership_analytics is the date-shaped convenience layered over this method.

get_institutional_ownership_dates(cik)

Get Form 13F filing dates

get_institutional_ownership_extract(cik, report_date)

Get filings extract data for a report period end date

get_institutional_ownership_extract_by_quarter(cik, year, quarter)

Get filings extract data for a calendar quarter.

Wire shape of the extract endpoint: year and quarter are the query parameters the API takes. :meth:get_institutional_ownership_extract is the date-shaped convenience layered over this method.

get_institutional_ownership_latest(cik=None, page=0, limit=100)

Get latest institutional ownership filings

get_symbol_positions_summary(symbol, report_date)

Get positions summary by symbol for a report period end date

get_symbol_positions_summary_by_quarter(symbol, year, quarter)

Get positions summary by symbol for a calendar quarter.

Wire shape of the symbol-positions-summary endpoint. :meth:get_symbol_positions_summary is the date-shaped convenience.

get_transaction_types()

Get insider transaction types

search_cik_by_name(name, page=0)

Search CIK mappings by name using client-side filtering.

Note: The FMP API does not support server-side name filtering for CIK lookups. This method fetches a large batch of records (10,000) and filters them locally, which may impact performance for frequent searches.

Parameters:

Name Type Description Default
name str

Company name to search for (case-insensitive substring match)

required
page int

Page number for pagination (default: 0)

0

Returns:

Type Description
list[CIKMapping]

List of CIK mappings matching the name

search_insider_trading(symbol=None, page=0, limit=100, reporting_cik=None, company_cik=None, transaction_type=None)

Search insider trades with optional filters

handler: python options: show_root_heading: true show_source: false

AsyncInstitutionalClient

Bases: AsyncEndpointGroup

Async client for institutional activity endpoints.

get_asset_allocation(report_date) async

Get 13F asset allocation data for a report period end date

.. deprecated:: This endpoint 404s on the FMP API and will be removed in a future version. It currently returns an empty list. FMP publishes no stable replacement for the pre-aggregated allocation breakdown; the closest live source is per-filer 13F holdings, which you would have to aggregate yourself.

get_beneficial_ownership(symbol) async

Get beneficial ownership data for a symbol

get_cik_mappings(page=0, limit=1000) async

Get CIK to name mappings

get_fail_to_deliver(symbol, page=0) async

Get fail to deliver data for a symbol

.. deprecated:: This endpoint 404s on the FMP API and will be removed in a future version. It currently returns an empty list. No stable FMP endpoint replaces it; the SEC publishes the same fails-to-deliver data itself, which is the only remaining source.

get_form_13f(cik, report_date) async

Get Form 13F filing data for the quarter containing report_date.

Parameters:

Name Type Description Default
cik str | int

Central Index Key (CIK)

required
report_date date

Any date inside the report period (e.g., 2023-09-30). Only its year and calendar quarter reach the API.

required

Returns:

Type Description
list[Form13F]

List of Form13F objects. Empty list if no records found.

get_form_13f_by_quarter(cik, year, quarter) async

Get Form 13F filing data for a calendar quarter.

The wire shape of /stable/institutional-ownership/extract: year and quarter are mandatory query parameters and there is no date parameter. See the sync :meth:~fmp_data.institutional.client.InstitutionalClient.get_form_13f_by_quarter.

Parameters:

Name Type Description Default
cik str | int

Central Index Key (CIK)

required
year int

Filing year (e.g., 2023)

required
quarter int

Calendar quarter, 1-4

required

Returns:

Type Description
list[Form13F]

List of Form13F objects. Empty list if no records found.

get_form_13f_dates(cik) async

Get Form 13F filing dates

Parameters:

Name Type Description Default
cik str | int

Central Index Key (CIK)

required

Returns:

Type Description
list[Form13FDate]

List of Form13FDate objects with filing dates. Empty list if no

list[Form13FDate]

records found.

get_holder_industry_breakdown(cik, report_date) async

Get holders industry breakdown for a report period end date

get_holder_industry_breakdown_by_quarter(cik, year, quarter) async

Get holders industry breakdown for a calendar quarter.

Wire shape of the industry-breakdown endpoint. See the sync :meth:~fmp_data.institutional.client.InstitutionalClient.get_holder_industry_breakdown_by_quarter.

get_holder_performance_summary(cik, report_date=None, page=0) async

Get holder performance summary for a holder's full history.

Omitting report_date is the correct usage. Passing it does not select a period -- the API ignores the derived year/quarter -- so it warns (#192).

get_holder_performance_summary_by_quarter(cik, year, quarter, page=0) async

Get holder performance summary -- the quarter is not applied.

Warning

The endpoint accepts year/quarter and ignores them, returning the holder's full history regardless, so this emits a :class:UserWarning. See the sync :meth:~fmp_data.institutional.client.InstitutionalClient.get_holder_performance_summary_by_quarter for the live-API evidence (#192).

get_industry_performance_summary(report_date) async

Get industry performance summary for a report period end date

get_industry_performance_summary_by_quarter(year, quarter) async

Get industry performance summary for a calendar quarter.

Wire shape of the industry-performance endpoint. See the sync :meth:~fmp_data.institutional.client.InstitutionalClient.get_industry_performance_summary_by_quarter.

get_insider_roster(symbol) async

Get insider roster

get_insider_statistics(symbol) async

Get insider trading statistics

get_insider_trades(symbol, page=0, limit=100) async

Get insider trades

get_insider_trading_by_name(reporting_name, page=0) async

Search insider trades by reporting name

get_insider_trading_latest(page=0, limit=100, trade_date=None) async

Get latest insider trading activity

get_insider_trading_statistics_enhanced(symbol) async

Get enhanced insider trading statistics

get_institutional_holders(page=0, limit=100) async

Get list of institutional holders

get_institutional_holdings(symbol, report_date, year=None, quarter=None) async

Get institutional holdings by symbol for a report period end date

get_institutional_holdings_by_quarter(symbol, year, quarter) async

Get institutional holdings for a symbol in a calendar quarter.

The wire shape of /stable/institutional-ownership/ symbol-positions-summary: year and quarter are mandatory and the API rejects a request without them (#188).

Parameters:

Name Type Description Default
symbol str

Stock symbol

required
year int

Filing year (e.g., 2023)

required
quarter int

Calendar quarter, 1-4

required

get_institutional_ownership_analytics(symbol, report_date, page=0, limit=100) async

Get filings extract with analytics by holder for a report period end date

get_institutional_ownership_analytics_by_quarter(symbol, year, quarter, page=0, limit=100) async

Get filings extract with analytics by holder for a calendar quarter.

Wire shape of the analytics endpoint. See the sync :meth:~fmp_data.institutional.client.InstitutionalClient.get_institutional_ownership_analytics_by_quarter.

get_institutional_ownership_dates(cik) async

Get Form 13F filing dates

get_institutional_ownership_extract(cik, report_date) async

Get filings extract data for a report period end date

get_institutional_ownership_extract_by_quarter(cik, year, quarter) async

Get filings extract data for a calendar quarter.

Wire shape of the extract endpoint: year and quarter are the query parameters the API takes. See the sync :meth:~fmp_data.institutional.client.InstitutionalClient.get_institutional_ownership_extract_by_quarter.

get_institutional_ownership_latest(cik=None, page=0, limit=100) async

Get latest institutional ownership filings

get_symbol_positions_summary(symbol, report_date) async

Get positions summary by symbol for a report period end date

get_symbol_positions_summary_by_quarter(symbol, year, quarter) async

Get positions summary by symbol for a calendar quarter.

Wire shape of the symbol-positions-summary endpoint. See the sync :meth:~fmp_data.institutional.client.InstitutionalClient.get_symbol_positions_summary_by_quarter.

get_transaction_types() async

Get insider transaction types

search_cik_by_name(name, page=0) async

Search CIK mappings by name using client-side filtering.

Note: The FMP API does not support server-side name filtering for CIK lookups. This method fetches a large batch of records (10,000) and filters them locally, which may impact performance for frequent searches.

Parameters:

Name Type Description Default
name str

Company name to search for (case-insensitive substring match)

required
page int

Page number for pagination (default: 0)

0

Returns:

Type Description
list[CIKMapping]

List of CIK mappings matching the name

search_insider_trading(symbol=None, page=0, limit=100, reporting_cik=None, company_cik=None, transaction_type=None) async

Search insider trades with optional filters

handler: python options: show_root_heading: true show_source: false

Investment Client

InvestmentClient

Bases: EndpointGroup

Client for investment products endpoints

get_etf_country_weightings(symbol)

Get ETF country weightings

get_etf_exposure(symbol)

Get ETF stock exposure

get_etf_holder(symbol)

Get ETF holder information

.. deprecated:: etf/holder 404s and will be removed in a future version. It currently returns an empty list. The nearest live endpoint is :meth:get_fund_disclosure_holders_latest (funds/disclosure-holders-latest), but the payload differs: it carries holder, shares, change, dateReported and weightPercent, where :class:~fmp_data.investment.models.ETFHolder declares asset, cusip, isin, marketValue and sharesNumber. funds/disclosure-holders-search is not the replacement — it returns fund entity records (address, city, entityName).

get_etf_holding_dates(symbol)

Get ETF holding dates

.. deprecated:: etf/portfolio-dates 404s and will be removed in a future version. It currently returns an empty list. Use :meth:get_mutual_fund_dates or :meth:get_fund_disclosure_dates, which serve the live funds/disclosure-dates. Not a drop-in: they yield a date/year/quarter record per period, where this returned a bare :class:datetime.date.

get_etf_holdings(symbol, holdings_date=None)

Get ETF holdings

get_etf_info(symbol)

Get ETF information

Parameters:

Name Type Description Default
symbol str

ETF symbol

required

Returns:

Type Description
ETFInfo | None

ETFInfo object if found, or None if no data/error occurs

get_etf_sector_weightings(symbol)

Get ETF sector weightings

get_fund_disclosure(symbol, year, quarter, cik=None)

Get mutual fund/ETF disclosure holdings

get_fund_disclosure_dates(symbol, cik=None)

Get mutual fund/ETF disclosure dates

get_fund_disclosure_holders_latest(symbol)

Get latest mutual fund/ETF disclosure holders

get_mutual_fund_by_name(name)

Get mutual funds by name

.. deprecated:: mutual-fund-holdings/name 404s and will be removed in a future version. It currently returns an empty list. FMP publishes no replacement — a dozen path variants were probed and all 404. search-name is live but is a generic symbol search, not a holdings lookup, so it is not offered as a migration target.

get_mutual_fund_dates(symbol, cik=None)

Get mutual fund/ETF disclosure dates

Parameters:

Name Type Description Default
symbol str

Fund or ETF symbol

required
cik str | int | None

Optional fund CIK

None

Returns:

Type Description
list[PortfolioDate]

List of disclosure date records

get_mutual_fund_holder(symbol)

Get mutual fund holder information

.. deprecated:: etf/holder 404s and will be removed in a future version. It currently returns an empty list. This method and :meth:get_etf_holder declared the same dead path, so only one successor is needed: :meth:get_fund_disclosure_holders_latest (funds/disclosure-holders-latest). Its holder/shares/change/dateReported/weightPercent shape happens to be close to :class:~fmp_data.investment.models.MutualFundHolder, but it is not guaranteed identical — check the fields you rely on.

get_mutual_fund_holdings(symbol, holdings_date)

Get mutual fund holdings

.. deprecated:: mutual-fund-holdings 404s and will be removed in a future version. It currently returns an empty list. Use :meth:get_etf_holdings, which serves the live etf/holdings and answers for mutual fund symbols as well. Field names differ (securityCusip/sharesNumber rather than cusip/ shares) and cik/reportedDate are absent. If you need the full N-PORT record — assetCat, fairValLevel, payoffProfile, valUsd — use :meth:get_fund_disclosure.

search_fund_disclosure_holders(name)

Search mutual fund/ETF disclosure holders by name

handler: python options: show_root_heading: true show_source: false

AsyncInvestmentClient

Bases: AsyncEndpointGroup

Async client for investment products endpoints.

get_etf_country_weightings(symbol) async

Get ETF country weightings

get_etf_exposure(symbol) async

Get ETF stock exposure

get_etf_holder(symbol) async

Get ETF holder information

.. deprecated:: etf/holder 404s and will be removed in a future version. It currently returns an empty list. The nearest live endpoint is :meth:get_fund_disclosure_holders_latest (funds/disclosure-holders-latest), but the payload differs: it carries holder, shares, change, dateReported and weightPercent, where :class:~fmp_data.investment.models.ETFHolder declares asset, cusip, isin, marketValue and sharesNumber. funds/disclosure-holders-search is not the replacement — it returns fund entity records (address, city, entityName).

get_etf_holding_dates(symbol) async

Get ETF holding dates

.. deprecated:: etf/portfolio-dates 404s and will be removed in a future version. It currently returns an empty list. Use :meth:get_mutual_fund_dates or :meth:get_fund_disclosure_dates, which serve the live funds/disclosure-dates. Not a drop-in: they yield a date/year/quarter record per period, where this returned a bare :class:datetime.date.

get_etf_holdings(symbol, holdings_date=None) async

Get ETF holdings

get_etf_info(symbol) async

Get ETF information

Parameters:

Name Type Description Default
symbol str

ETF symbol

required

Returns:

Type Description
ETFInfo | None

ETFInfo object if found, or None if no data/error occurs

get_etf_sector_weightings(symbol) async

Get ETF sector weightings

get_fund_disclosure(symbol, year, quarter, cik=None) async

Get mutual fund/ETF disclosure holdings

get_fund_disclosure_dates(symbol, cik=None) async

Get mutual fund/ETF disclosure dates

get_fund_disclosure_holders_latest(symbol) async

Get latest mutual fund/ETF disclosure holders

get_mutual_fund_by_name(name) async

Get mutual funds by name

.. deprecated:: mutual-fund-holdings/name 404s and will be removed in a future version. It currently returns an empty list. FMP publishes no replacement — a dozen path variants were probed and all 404. search-name is live but is a generic symbol search, not a holdings lookup, so it is not offered as a migration target.

get_mutual_fund_dates(symbol, cik=None) async

Get mutual fund/ETF disclosure dates

Parameters:

Name Type Description Default
symbol str

Fund or ETF symbol

required
cik str | int | None

Optional fund CIK

None

Returns:

Type Description
list[PortfolioDate]

List of disclosure date records

get_mutual_fund_holder(symbol) async

Get mutual fund holder information

.. deprecated:: etf/holder 404s and will be removed in a future version. It currently returns an empty list. This method and :meth:get_etf_holder declared the same dead path, so only one successor is needed: :meth:get_fund_disclosure_holders_latest (funds/disclosure-holders-latest). Its holder/shares/change/dateReported/weightPercent shape happens to be close to :class:~fmp_data.investment.models.MutualFundHolder, but it is not guaranteed identical — check the fields you rely on.

get_mutual_fund_holdings(symbol, holdings_date) async

Get mutual fund holdings

.. deprecated:: mutual-fund-holdings 404s and will be removed in a future version. It currently returns an empty list. Use :meth:get_etf_holdings, which serves the live etf/holdings and answers for mutual fund symbols as well. Field names differ (securityCusip/sharesNumber rather than cusip/ shares) and cik/reportedDate are absent. If you need the full N-PORT record — assetCat, fairValLevel, payoffProfile, valUsd — use :meth:get_fund_disclosure.

search_fund_disclosure_holders(name) async

Search mutual fund/ETF disclosure holders by name

handler: python options: show_root_heading: true show_source: false

Alternative Markets Client

AlternativeMarketsClient

Bases: EndpointGroup

Client for alternative markets endpoints

get_commodities_list()

Get list of available commodities

get_commodities_quotes()

Get commodities quotes

.. deprecated:: quotes/commodity 404s and will be removed in a future version. It currently returns an empty list. Use client.batch.get_commodity_quotes(), which serves the live batch-commodity-quotes. It is not a drop-in: that endpoint returns only symbol/price/change/volume.

get_commodity_historical(symbol, start_date=None, end_date=None)

Get commodity historical prices

get_commodity_intraday(symbol, interval='5min')

Get commodity intraday prices

get_commodity_quote(symbol)

Get commodity quote

get_crypto_historical(symbol, start_date=None, end_date=None)

Get cryptocurrency historical prices

get_crypto_intraday(symbol, interval='5min')

Get cryptocurrency intraday prices

get_crypto_list()

Get list of available cryptocurrencies

get_crypto_quote(symbol)

Get cryptocurrency quote

get_crypto_quotes()

Get cryptocurrency quotes

.. deprecated:: quotes/crypto 404s and will be removed in a future version. It currently returns an empty list. Use client.batch.get_crypto_quotes(), which serves the live batch-crypto-quotes. It is not a drop-in: that endpoint returns only symbol/price/change/volume, so the day range, market cap and moving averages declared on :class:~fmp_data.alternative.models.CryptoQuote are unavailable.

get_forex_historical(symbol, start_date=None, end_date=None)

Get forex historical prices

get_forex_intraday(symbol, interval='5min')

Get forex intraday prices

get_forex_list()

Get list of available forex pairs

get_forex_quote(symbol)

Get forex quote

get_forex_quotes()

Get forex quotes

.. deprecated:: quotes/forex 404s and will be removed in a future version. It currently returns an empty list. Use client.batch.get_forex_quotes(), which serves the live batch-forex-quotes. It is not a drop-in: that endpoint returns only symbol/price/change/volume.

handler: python options: show_root_heading: true show_source: false

AsyncAlternativeMarketsClient

Bases: AsyncEndpointGroup

Async client for alternative markets endpoints.

get_commodities_list() async

Get list of available commodities

get_commodities_quotes() async

Get commodities quotes

.. deprecated:: quotes/commodity 404s and will be removed in a future version. It currently returns an empty list. Use client.batch.get_commodity_quotes(), which serves the live batch-commodity-quotes. It is not a drop-in: that endpoint returns only symbol/price/change/volume.

get_commodity_historical(symbol, start_date=None, end_date=None) async

Get commodity historical prices

get_commodity_intraday(symbol, interval='5min') async

Get commodity intraday prices

get_commodity_quote(symbol) async

Get commodity quote

get_crypto_historical(symbol, start_date=None, end_date=None) async

Get cryptocurrency historical prices

get_crypto_intraday(symbol, interval='5min') async

Get cryptocurrency intraday prices

get_crypto_list() async

Get list of available cryptocurrencies

get_crypto_quote(symbol) async

Get cryptocurrency quote

get_crypto_quotes() async

Get cryptocurrency quotes

.. deprecated:: quotes/crypto 404s and will be removed in a future version. It currently returns an empty list. Use client.batch.get_crypto_quotes(), which serves the live batch-crypto-quotes. It is not a drop-in: that endpoint returns only symbol/price/change/volume, so the day range, market cap and moving averages declared on :class:~fmp_data.alternative.models.CryptoQuote are unavailable.

get_forex_historical(symbol, start_date=None, end_date=None) async

Get forex historical prices

get_forex_intraday(symbol, interval='5min') async

Get forex intraday prices

get_forex_list() async

Get list of available forex pairs

get_forex_quote(symbol) async

Get forex quote

get_forex_quotes() async

Get forex quotes

.. deprecated:: quotes/forex 404s and will be removed in a future version. It currently returns an empty list. Use client.batch.get_forex_quotes(), which serves the live batch-forex-quotes. It is not a drop-in: that endpoint returns only symbol/price/change/volume.

handler: python options: show_root_heading: true show_source: false

Economics Client

EconomicsClient

Bases: EndpointGroup

Client for economics data endpoints

get_commitment_of_traders_analysis(symbol, start_date, end_date)

Get Commitment of Traders (COT) analysis data

get_commitment_of_traders_list()

Get list of available Commitment of Traders (COT) symbols

get_commitment_of_traders_report(symbol, start_date, end_date)

Get Commitment of Traders (COT) report data

get_economic_calendar(start_date=None, end_date=None)

Get economic calendar events

get_economic_indicators(indicator_name)

Get economic indicator data

get_market_risk_premium()

Get market risk premium data

get_treasury_rates(start_date=None, end_date=None)

Get treasury rates

handler: python options: show_root_heading: true show_source: false

AsyncEconomicsClient

Bases: AsyncEndpointGroup

Async client for economics data endpoints.

get_commitment_of_traders_analysis(symbol, start_date, end_date) async

Get Commitment of Traders (COT) analysis data

get_commitment_of_traders_list() async

Get list of available Commitment of Traders (COT) symbols

get_commitment_of_traders_report(symbol, start_date, end_date) async

Get Commitment of Traders (COT) report data

get_economic_calendar(start_date=None, end_date=None) async

Get economic calendar events

get_economic_indicators(indicator_name) async

Get economic indicator data

get_market_risk_premium() async

Get market risk premium data

get_treasury_rates(start_date=None, end_date=None) async

Get treasury rates

handler: python options: show_root_heading: true show_source: false

Batch Client

BatchClient

Bases: EndpointGroup

Client for batch data endpoints

Provides methods to retrieve data for multiple symbols or entire asset classes in a single API call.

get_aftermarket_quotes(symbols)

Get aftermarket quote data for multiple symbols

Parameters:

Name Type Description Default
symbols list[str]

List of stock symbols

required

Returns:

Type Description
list[AftermarketQuote]

List of aftermarket quote data

get_aftermarket_trades(symbols)

Get aftermarket (post-market) trade data for multiple symbols

Parameters:

Name Type Description Default
symbols list[str]

List of stock symbols

required

Returns:

Type Description
list[AftermarketTrade]

List of aftermarket trade data

get_balance_sheet_bulk(year, period)

Get bulk balance sheet statements

get_balance_sheet_growth_bulk(year, period)

Get bulk balance sheet growth data

get_cash_flow_bulk(year, period)

Get bulk cash flow statements

get_cash_flow_growth_bulk(year, period)

Get bulk cash flow growth data

get_commodity_quotes(short=None)

Get batch quotes for all commodities

Parameters:

Name Type Description Default
short bool | None

Whether to return short quote data

None

Returns:

Type Description
list[BatchQuote]

List of quotes for all commodities

get_crypto_quotes(short=None)

Get batch quotes for all cryptocurrencies

Parameters:

Name Type Description Default
short bool | None

Whether to return short quote data

None

Returns:

Type Description
list[BatchQuote]

List of quotes for all cryptocurrencies

get_dcf_bulk()

Get discounted cash flow valuations in bulk

get_earnings_surprises_bulk(year)

Get bulk earnings surprises for a given year

get_eod_bulk(target_date)

Get bulk end-of-day prices

get_etf_holder_bulk(part)

Get bulk ETF holdings

get_etf_quotes(short=None)

Get batch quotes for all ETFs

Parameters:

Name Type Description Default
short bool | None

Whether to return short quote data

None

Returns:

Type Description
list[BatchQuote]

List of quotes for all ETFs

get_exchange_quotes(exchange, short=None)

Get quotes for all stocks on a specific exchange

Parameters:

Name Type Description Default
exchange str

Exchange code (e.g., NYSE, NASDAQ)

required
short bool | None

Whether to return short quote data

None

Returns:

Type Description
list[BatchQuote]

List of quotes for all stocks on the exchange

get_forex_quotes(short=None)

Get batch quotes for all forex pairs

Parameters:

Name Type Description Default
short bool | None

Whether to return short quote data

None

Returns:

Type Description
list[BatchQuote]

List of quotes for all forex pairs

get_income_statement_bulk(year, period)

Get bulk income statements

get_income_statement_growth_bulk(year, period)

Get bulk income statement growth data

get_index_quotes(short=None)

Get batch quotes for all market indexes

Parameters:

Name Type Description Default
short bool | None

Whether to return short quote data

None

Returns:

Type Description
list[BatchQuote]

List of quotes for all market indexes

get_key_metrics_ttm_bulk()

Get bulk trailing twelve month key metrics

get_market_caps(symbols)

Get market capitalization for multiple symbols

Parameters:

Name Type Description Default
symbols list[str]

List of stock symbols

required

Returns:

Type Description
list[BatchMarketCap]

List of market cap data for each symbol

get_mutualfund_quotes(short=None)

Get batch quotes for all mutual funds

Parameters:

Name Type Description Default
short bool | None

Whether to return short quote data

None

Returns:

Type Description
list[BatchQuote]

List of quotes for all mutual funds

get_peers_bulk()

Get bulk peer lists

get_price_target_summary_bulk()

Get bulk price target summaries

get_profile_bulk(part)

Get company profile data in bulk

get_quotes(symbols)

Get real-time quotes for multiple symbols

Parameters:

Name Type Description Default
symbols list[str]

List of stock symbols

required

Returns:

Type Description
list[BatchQuote]

List of quote data for each symbol

get_quotes_short(symbols)

Get quick price snapshots for multiple symbols

Parameters:

Name Type Description Default
symbols list[str]

List of stock symbols

required

Returns:

Type Description
list[BatchQuoteShort]

List of short quote data for each symbol

get_rating_bulk()

Get stock ratings in bulk

get_ratios_ttm_bulk()

Get trailing twelve month financial ratios in bulk

get_scores_bulk()

Get financial scores in bulk

get_upgrades_downgrades_consensus_bulk()

Get bulk upgrades/downgrades consensus data

handler: python options: show_root_heading: true show_source: false

AsyncBatchClient

Bases: AsyncEndpointGroup

Async client for batch data endpoints.

Provides async methods to retrieve data for multiple symbols or entire asset classes in a single API call.

get_aftermarket_quotes(symbols) async

Get aftermarket quote data for multiple symbols

Parameters:

Name Type Description Default
symbols list[str]

List of stock symbols

required

Returns:

Type Description
list[AftermarketQuote]

List of aftermarket quote data

get_aftermarket_trades(symbols) async

Get aftermarket (post-market) trade data for multiple symbols

Parameters:

Name Type Description Default
symbols list[str]

List of stock symbols

required

Returns:

Type Description
list[AftermarketTrade]

List of aftermarket trade data

get_balance_sheet_bulk(year, period) async

Get bulk balance sheet statements

get_balance_sheet_growth_bulk(year, period) async

Get bulk balance sheet growth data

get_cash_flow_bulk(year, period) async

Get bulk cash flow statements

get_cash_flow_growth_bulk(year, period) async

Get bulk cash flow growth data

get_commodity_quotes(short=None) async

Get batch quotes for all commodities

Parameters:

Name Type Description Default
short bool | None

Whether to return short quote data

None

Returns:

Type Description
list[BatchQuote]

List of quotes for all commodities

get_crypto_quotes(short=None) async

Get batch quotes for all cryptocurrencies

Parameters:

Name Type Description Default
short bool | None

Whether to return short quote data

None

Returns:

Type Description
list[BatchQuote]

List of quotes for all cryptocurrencies

get_dcf_bulk() async

Get discounted cash flow valuations in bulk

get_earnings_surprises_bulk(year) async

Get bulk earnings surprises for a given year

get_eod_bulk(target_date) async

Get bulk end-of-day prices

get_etf_holder_bulk(part) async

Get bulk ETF holdings

get_etf_quotes(short=None) async

Get batch quotes for all ETFs

Parameters:

Name Type Description Default
short bool | None

Whether to return short quote data

None

Returns:

Type Description
list[BatchQuote]

List of quotes for all ETFs

get_exchange_quotes(exchange, short=None) async

Get quotes for all stocks on a specific exchange

Parameters:

Name Type Description Default
exchange str

Exchange code (e.g., NYSE, NASDAQ)

required
short bool | None

Whether to return short quote data

None

Returns:

Type Description
list[BatchQuote]

List of quotes for all stocks on the exchange

get_forex_quotes(short=None) async

Get batch quotes for all forex pairs

Parameters:

Name Type Description Default
short bool | None

Whether to return short quote data

None

Returns:

Type Description
list[BatchQuote]

List of quotes for all forex pairs

get_income_statement_bulk(year, period) async

Get bulk income statements

get_income_statement_growth_bulk(year, period) async

Get bulk income statement growth data

get_index_quotes(short=None) async

Get batch quotes for all market indexes

Parameters:

Name Type Description Default
short bool | None

Whether to return short quote data

None

Returns:

Type Description
list[BatchQuote]

List of quotes for all market indexes

get_key_metrics_ttm_bulk() async

Get bulk trailing twelve month key metrics

get_market_caps(symbols) async

Get market capitalization for multiple symbols

Parameters:

Name Type Description Default
symbols list[str]

List of stock symbols

required

Returns:

Type Description
list[BatchMarketCap]

List of market cap data for each symbol

get_mutualfund_quotes(short=None) async

Get batch quotes for all mutual funds

Parameters:

Name Type Description Default
short bool | None

Whether to return short quote data

None

Returns:

Type Description
list[BatchQuote]

List of quotes for all mutual funds

get_peers_bulk() async

Get bulk peer lists

get_price_target_summary_bulk() async

Get bulk price target summaries

get_profile_bulk(part) async

Get company profile data in bulk

get_quotes(symbols) async

Get real-time quotes for multiple symbols

Parameters:

Name Type Description Default
symbols list[str]

List of stock symbols

required

Returns:

Type Description
list[BatchQuote]

List of quote data for each symbol

get_quotes_short(symbols) async

Get quick price snapshots for multiple symbols

Parameters:

Name Type Description Default
symbols list[str]

List of stock symbols

required

Returns:

Type Description
list[BatchQuoteShort]

List of short quote data for each symbol

get_rating_bulk() async

Get stock ratings in bulk

get_ratios_ttm_bulk() async

Get trailing twelve month financial ratios in bulk

get_scores_bulk() async

Get financial scores in bulk

get_upgrades_downgrades_consensus_bulk() async

Get bulk upgrades/downgrades consensus data

handler: python options: show_root_heading: true show_source: false

Transcripts Client

TranscriptsClient

Bases: EndpointGroup

Client for earnings transcript endpoints

Provides methods to retrieve earnings call transcripts and related data.

get_available_dates(symbol)

Get available transcript dates for a specific company

Parameters:

Name Type Description Default
symbol str

Stock symbol

required

Returns:

Type Description
list[TranscriptDate]

List of available transcript dates

get_available_symbols()

Get list of all symbols with available earnings transcripts

Returns:

Type Description
list[TranscriptSymbol]

List of symbols with transcripts

get_latest(page=0, limit=100)

Get the most recent earnings call transcripts

Parameters:

Name Type Description Default
page int

Page number for pagination (default: 0)

0
limit int

Number of results per page (default: 100)

100

Returns:

Type Description
list[EarningsTranscript]

List of recent earnings transcripts

get_transcript(symbol, year, quarter, limit=None)

Get earnings call transcript for a specific company

Parameters:

Name Type Description Default
symbol str

Stock symbol

required
year int

Fiscal year

required
quarter int

Fiscal quarter 1-4

required
limit int | None

Number of transcripts to return (optional)

None

Returns:

Type Description
list[EarningsTranscript]

List of matching earnings transcripts

handler: python options: show_root_heading: true show_source: false

AsyncTranscriptsClient

Bases: AsyncEndpointGroup

Async client for earnings transcript endpoints.

Provides async methods to retrieve earnings call transcripts and related data.

get_available_dates(symbol) async

Get available transcript dates for a specific company

Parameters:

Name Type Description Default
symbol str

Stock symbol

required

Returns:

Type Description
list[TranscriptDate]

List of available transcript dates

get_available_symbols() async

Get list of all symbols with available earnings transcripts

Returns:

Type Description
list[TranscriptSymbol]

List of symbols with transcripts

get_latest(page=0, limit=100) async

Get the most recent earnings call transcripts

Parameters:

Name Type Description Default
page int

Page number for pagination (default: 0)

0
limit int

Number of results per page (default: 100)

100

Returns:

Type Description
list[EarningsTranscript]

List of recent earnings transcripts

get_transcript(symbol, year, quarter, limit=None) async

Get earnings call transcript for a specific company

Parameters:

Name Type Description Default
symbol str

Stock symbol

required
year int

Fiscal year

required
quarter int

Fiscal quarter 1-4

required
limit int | None

Number of transcripts to return (optional)

None

Returns:

Type Description
list[EarningsTranscript]

List of matching earnings transcripts

handler: python options: show_root_heading: true show_source: false

SEC Client

SECClient

Bases: EndpointGroup

Client for SEC filing and company data endpoints

Provides methods to retrieve SEC filings, company profiles, and related data.

get_all_industry_classification(page=0, limit=100)

Get all industry classification records

Parameters:

Name Type Description Default
page int

Page number for pagination (default: 0)

0
limit int

Number of results per page (default: 100)

100

Returns:

Type Description
list[IndustryClassification]

List of industry classification records

get_latest_8k(page=0, limit=100, from_date=None, to_date=None)

Get the latest SEC 8-K filings

Parameters:

Name Type Description Default
page int

Page number for pagination (default: 0)

0
limit int

Number of results per page (default: 100)

100
from_date date | None

Start date (default: 30 days ago)

None
to_date date | None

End date (default: today)

None

Returns:

Type Description
list[SECFiling8K]

List of recent 8-K filings

get_latest_financials(page=0, limit=100, from_date=None, to_date=None)

Get the latest SEC financial filings (10-K, 10-Q)

Parameters:

Name Type Description Default
page int

Page number for pagination (default: 0)

0
limit int

Number of results per page (default: 100)

100
from_date date | None

Start date (default: 30 days ago)

None
to_date date | None

End date (default: today)

None

Returns:

Type Description
list[SECFinancialFiling]

List of recent financial filings

get_profile(symbol)

Get SEC profile for a company

Parameters:

Name Type Description Default
symbol str

Stock symbol

required

Returns:

Type Description
SECProfile | None

SEC profile for the company, or None if not found

get_sic_codes()

Get list of all Standard Industrial Classification (SIC) codes

Returns:

Type Description
list[SICCode]

List of SIC codes

search_by_cik(cik, page=0, limit=100, from_date=None, to_date=None)

Search SEC filings by CIK number

Parameters:

Name Type Description Default
cik str | int

SEC CIK number

required
page int

Page number for pagination (default: 0)

0
limit int

Number of results per page (default: 100)

100

Returns:

Type Description
list[SECFilingSearchResult]

List of matching filings

search_by_form_type(form_type, page=0, limit=100, from_date=None, to_date=None)

Search SEC filings by form type

Parameters:

Name Type Description Default
form_type str

SEC form type (e.g., 10-K, 10-Q, 8-K)

required
page int

Page number for pagination (default: 0)

0
limit int

Number of results per page (default: 100)

100

Returns:

Type Description
list[SECFilingSearchResult]

List of matching filings

search_by_symbol(symbol, page=0, limit=100, from_date=None, to_date=None)

Search SEC filings by stock symbol

Parameters:

Name Type Description Default
symbol str

Stock symbol

required
page int

Page number for pagination (default: 0)

0
limit int

Number of results per page (default: 100)

100

Returns:

Type Description
list[SECFilingSearchResult]

List of matching filings

search_company_by_cik(cik)

Search SEC companies by CIK number

Parameters:

Name Type Description Default
cik str | int

SEC CIK number

required

Returns:

Type Description
list[SECCompanySearchResult]

List of matching companies

search_company_by_name(name, page=0, limit=100)

Search SEC companies by name

Parameters:

Name Type Description Default
name str

Company name or partial name

required
page int

Page number for pagination (default: 0)

0
limit int

Number of results per page (default: 100)

100

Returns:

Type Description
list[SECCompanySearchResult]

List of matching companies

search_company_by_symbol(symbol)

Search SEC companies by stock symbol

Parameters:

Name Type Description Default
symbol str

Stock symbol

required

Returns:

Type Description
list[SECCompanySearchResult]

List of matching companies

search_industry_classification(symbol=None, cik=None, sic_code=None)

Search industry classification data

Parameters:

Name Type Description Default
symbol str | None

Stock symbol

None
cik str | int | None

SEC CIK number

None
sic_code str | None

SIC code

None

Returns:

Type Description
list[IndustryClassification]

List of matching industry classification records

handler: python options: show_root_heading: true show_source: false

AsyncSECClient

Bases: AsyncEndpointGroup

Async client for SEC filing and company data endpoints.

Provides async methods to retrieve SEC filings, company profiles, and related data.

get_all_industry_classification(page=0, limit=100) async

Get all industry classification records

Parameters:

Name Type Description Default
page int

Page number for pagination (default: 0)

0
limit int

Number of results per page (default: 100)

100

Returns:

Type Description
list[IndustryClassification]

List of industry classification records

get_latest_8k(page=0, limit=100, from_date=None, to_date=None) async

Get the latest SEC 8-K filings

Parameters:

Name Type Description Default
page int

Page number for pagination (default: 0)

0
limit int

Number of results per page (default: 100)

100
from_date date | None

Start date (default: 30 days ago)

None
to_date date | None

End date (default: today)

None

Returns:

Type Description
list[SECFiling8K]

List of recent 8-K filings

get_latest_financials(page=0, limit=100, from_date=None, to_date=None) async

Get the latest SEC financial filings (10-K, 10-Q)

Parameters:

Name Type Description Default
page int

Page number for pagination (default: 0)

0
limit int

Number of results per page (default: 100)

100
from_date date | None

Start date (default: 30 days ago)

None
to_date date | None

End date (default: today)

None

Returns:

Type Description
list[SECFinancialFiling]

List of recent financial filings

get_profile(symbol) async

Get SEC profile for a company

Parameters:

Name Type Description Default
symbol str

Stock symbol

required

Returns:

Type Description
SECProfile | None

SEC profile for the company, or None if not found

get_sic_codes() async

Get list of all Standard Industrial Classification (SIC) codes

Returns:

Type Description
list[SICCode]

List of SIC codes

search_by_cik(cik, page=0, limit=100, from_date=None, to_date=None) async

Search SEC filings by CIK number

Parameters:

Name Type Description Default
cik str | int

SEC CIK number

required
page int

Page number for pagination (default: 0)

0
limit int

Number of results per page (default: 100)

100

Returns:

Type Description
list[SECFilingSearchResult]

List of matching filings

search_by_form_type(form_type, page=0, limit=100, from_date=None, to_date=None) async

Search SEC filings by form type

Parameters:

Name Type Description Default
form_type str

SEC form type (e.g., 10-K, 10-Q, 8-K)

required
page int

Page number for pagination (default: 0)

0
limit int

Number of results per page (default: 100)

100

Returns:

Type Description
list[SECFilingSearchResult]

List of matching filings

search_by_symbol(symbol, page=0, limit=100, from_date=None, to_date=None) async

Search SEC filings by stock symbol

Parameters:

Name Type Description Default
symbol str

Stock symbol

required
page int

Page number for pagination (default: 0)

0
limit int

Number of results per page (default: 100)

100

Returns:

Type Description
list[SECFilingSearchResult]

List of matching filings

search_company_by_cik(cik) async

Search SEC companies by CIK number

Parameters:

Name Type Description Default
cik str | int

SEC CIK number

required

Returns:

Type Description
list[SECCompanySearchResult]

List of matching companies

search_company_by_name(name, page=0, limit=100) async

Search SEC companies by name

Parameters:

Name Type Description Default
name str

Company name or partial name

required
page int

Page number for pagination (default: 0)

0
limit int

Number of results per page (default: 100)

100

Returns:

Type Description
list[SECCompanySearchResult]

List of matching companies

search_company_by_symbol(symbol) async

Search SEC companies by stock symbol

Parameters:

Name Type Description Default
symbol str

Stock symbol

required

Returns:

Type Description
list[SECCompanySearchResult]

List of matching companies

search_industry_classification(symbol=None, cik=None, sic_code=None) async

Search industry classification data

Parameters:

Name Type Description Default
symbol str | None

Stock symbol

None
cik str | int | None

SEC CIK number

None
sic_code str | None

SIC code

None

Returns:

Type Description
list[IndustryClassification]

List of matching industry classification records

handler: python options: show_root_heading: true show_source: false

Index Client

IndexClient

Bases: EndpointGroup

Client for market index endpoints

Provides methods to retrieve index constituents and historical changes.

get_dowjones_constituents()

Get current Dow Jones Industrial Average constituents

Returns:

Type Description
list[IndexConstituent]

List of Dow Jones constituent companies

get_historical_dowjones()

Get historical Dow Jones constituent changes

Returns:

Type Description
list[HistoricalIndexConstituent]

List of historical constituent additions and removals

get_historical_nasdaq()

Get historical NASDAQ constituent changes

Returns:

Type Description
list[HistoricalIndexConstituent]

List of historical constituent additions and removals

get_historical_sp500()

Get historical S&P 500 constituent changes

Returns:

Type Description
list[HistoricalIndexConstituent]

List of historical constituent additions and removals

get_nasdaq_constituents()

Get current NASDAQ index constituents

Returns:

Type Description
list[IndexConstituent]

List of NASDAQ constituent companies

get_sp500_constituents()

Get current S&P 500 index constituents

Returns:

Type Description
list[IndexConstituent]

List of S&P 500 constituent companies

handler: python options: show_root_heading: true show_source: false

AsyncIndexClient

Bases: AsyncEndpointGroup

Async client for market index endpoints.

Provides async methods to retrieve index constituents and historical changes.

get_dowjones_constituents() async

Get current Dow Jones Industrial Average constituents

Returns:

Type Description
list[IndexConstituent]

List of Dow Jones constituent companies

get_historical_dowjones() async

Get historical Dow Jones constituent changes

Returns:

Type Description
list[HistoricalIndexConstituent]

List of historical constituent additions and removals

get_historical_nasdaq() async

Get historical NASDAQ constituent changes

Returns:

Type Description
list[HistoricalIndexConstituent]

List of historical constituent additions and removals

get_historical_sp500() async

Get historical S&P 500 constituent changes

Returns:

Type Description
list[HistoricalIndexConstituent]

List of historical constituent additions and removals

get_nasdaq_constituents() async

Get current NASDAQ index constituents

Returns:

Type Description
list[IndexConstituent]

List of NASDAQ constituent companies

get_sp500_constituents() async

Get current S&P 500 index constituents

Returns:

Type Description
list[IndexConstituent]

List of S&P 500 constituent companies

handler: python options: show_root_heading: true show_source: false

Exceptions

exceptions

AuthenticationError

Bases: FMPError

Raised when API key is invalid or missing

ConfigError

Bases: FMPError

Raised when there's a configuration error

DependencyError

Bases: ConfigError

Raised when a required optional dependency is not installed.

FMPError

Bases: Exception

Base exception for FMP API errors

FMPNetworkError

Bases: FMPError

Raised when an FMP HTTP request fails at the transport layer.

Covers httpx.NetworkError and leftover httpx.RequestError subclasses that are not timeouts (#350 / #354). retryable is True for connect / protocol / proxy failures and False for UnsupportedProtocol, DecodingError, TooManyRedirects, and any future RequestError that is not one of those.

FMPNotFound

Bases: FMPError

Raised when a requested symbol or resource cannot be found.

FMPTimeoutError

Bases: FMPError

Raised when an FMP HTTP request times out.

InvalidResponseTypeError

Bases: FMPError

Raised when an API response has an unexpected type.

InvalidSymbolError

Bases: ValidationError

Raised when a required symbol is missing or blank.

RateLimitError

Bases: FMPError

Raised when API rate limit is exceeded

ValidationError

Bases: FMPError

Raised when request parameters are invalid

VectorStoreCreationError

Bases: FMPError

Raised when fmp_data.lc.create_vector_store cannot build a store.

Replaces the None that function used to return on any failure (#133). None was reachable from exactly one place -- a blanket except Exception -- so it meant "something threw" and nothing more, which also cancelled out the loud-failure behaviour #121/#127 added to setup_registry.

Attributes:

Name Type Description
cause

the exception that actually stopped the build. Also set as __cause__; exposed as a named attribute so callers can branch on it without reaching into dunders.

failures dict[str, str]

endpoint name -> validation error, for endpoints EndpointRegistry.register_batch skipped before the failure. Always a dict, never None. Empty when the build failed before registration, or when nothing was skipped.

Lives in the core exceptions module, not under fmp_data.lc, so except VectorStoreCreationError is importable without the langchain extra installed.

__str__()

Include the skipped endpoints, so log.error(exc) keeps them.

failures is the data #133 made programmatically reachable; leaving it out of the string form loses it again for every caller that logs the exception rather than destructuring it. Follows RateLimitError, which appends retry_after the same way.

handler: python options: show_root_heading: true show_source: false

Data Models

Company Models

models

AftermarketQuote

Bases: BaseModel

Aftermarket quote data

AftermarketTrade

Bases: BaseModel

Aftermarket trade data

AnalystEstimate

Bases: BaseModel

Analyst earnings and revenue estimates

AnalystRecommendation

Bases: BaseModel

Analyst stock recommendation

CompanyCoreInformation

Bases: BaseModel

Core company information.

CompanyExecutive

Bases: BaseModel

Company executive information

CompanyNote

Bases: BaseModel

Company financial note.

CompanyOutlook

Bases: BaseModel

Comprehensive company outlook payload.

The endpoint returns a heterogeneous object that can include profile, filings, metrics, and other dynamic sections. Known high-value fields are typed while unknown sections are preserved via extra="allow".

CompanyPeer

Bases: BaseModel

Company peer information.

CompanyPeers

Bases: BaseModel

Container for company peer information.

CompanyProfile

Bases: BaseModel

Company profile information.

market_cap property

Alias for mkt_cap, consistent with Quote.market_cap.

coerce_volume_to_int(value) classmethod

Coerce volume values to int (FMP API may return floats).

See: https://github.com/MehdiZare/fmp-data/issues/70

DelistedCompany

Bases: BaseModel

A symbol FMP reports as delisted.

Live /stable/delisted-companies rows are this slim shape, not a CompanyProfile. Probed 2026-08-12.

EmployeeCount

Bases: BaseModel

Company employee count history.

ExecutiveCompensation

Bases: BaseModel

Executive compensation information based on SEC filings

ExecutiveCompensationBenchmark

Bases: BaseModel

Executive compensation benchmark data by industry

FinancialReportJSON

Bases: BaseModel

Structured JSON response for Form 10-K financial reports.

FinancialReportSectionRow

Bases: BaseModel

Single row within a financial report section.

GeographicRevenueSegment

Bases: RevenueSegmentItem

Geographic revenue segmentation with region segments

HistoricalData

Bases: BaseModel

Model to parse the full historical data response

parse_api_response(data) classmethod

Parse raw API response into validated HistoricalData model.

HistoricalPrice

Bases: BaseModel

Historical price data point

HistoricalShareFloat

Bases: ShareFloat

Historical share float data with the same structure as current share float

IntradayPrice

Bases: BaseModel

Intraday price data point

MergerAcquisition

Bases: BaseModel

Merger and acquisition transaction data

PriceTarget

Bases: BaseModel

Price target data based on FMP API response

PriceTargetConsensus

Bases: BaseModel

Price target consensus data

PriceTargetSummary

Bases: BaseModel

Price target summary statistics

publishers_list property

Get publishers as a parsed list.

ProductRevenueSegment

Bases: RevenueSegmentItem

Product revenue segmentation with product segments

Quote

Bases: BaseModel

Real-time stock quote data

Relative path: models/quote.py

quote_datetime property

Convert Unix timestamp to datetime object

coerce_volume_to_int(value) classmethod

Coerce volume to int (FMP API may return floats).

parse_timestamp(value) classmethod

Parse Unix timestamp to datetime with UTC timezone

RevenueSegmentItem

Bases: BaseModel

Single year revenue segment data

__init__(**data)

Custom init to handle the single-key dictionary structure.

Parameters:

Name Type Description Default
**data Any

Dictionary of initialization parameters where either: - It contains a single key (date) mapping to a dict of segments - It contains 'date' and 'segments' keys directly - It contains full API response with metadata fields

{}

SimpleQuote

Bases: BaseModel

Simple stock quote data

coerce_volume_to_int(value) classmethod

Coerce volume to int (FMP API may return floats).

StockPriceChange

Bases: BaseModel

Stock price change percentages over multiple time horizons

SymbolChange

Bases: BaseModel

Symbol change information from the FMP API

UpgradeDowngrade

Bases: BaseModel

Stock upgrade/downgrade data

UpgradeDowngradeConsensus

Bases: BaseModel

Upgrade/downgrade consensus data

coerce_volume_value(value)

Coerce volume values to int (FMP may return floats or numeric strings).

JSON endpoints return volume as a number, but the bulk CSV endpoints (e.g. profile-bulk) return a possibly-fractional string such as "475.9". Both must land as int (truncating toward zero) so a fractional value doesn't fail the int field and silently drop the whole parsed row. Empty strings become None; non-numeric and non-finite values (nan, inf) are passed through unchanged so they surface as a validation error instead of raising OverflowError or masking bad data.

See: https://github.com/MehdiZare/fmp-data/issues/70

handler: python options: show_root_heading: true show_source: false filters: - "!^_"

Market Models

models

AvailableIndex

Bases: BaseModel

Market index information

CIKListEntry

Bases: BaseModel

CIK list entry

CIKResult

Bases: BaseModel

CIK search result

CUSIPResult

Bases: BaseModel

CUSIP search result

CompanySearchResult

Bases: BaseModel

Company search result

ExchangeSymbol

Bases: BaseModel

Exchange symbol information matching actual API response

validate_data(data) classmethod

Validate data and convert invalid values to None with warnings.

Parameters:

Name Type Description Default
data Any

Raw data to validate

required

Returns:

Type Description
dict[str, Any]

Dict[str, Any]: Cleaned data with invalid values converted to None

IPODisclosure

Bases: BaseModel

IPO disclosure information

IPOProspectus

Bases: BaseModel

IPO prospectus information

ISINResult

Bases: BaseModel

ISIN search result

IndexHistoricalLight

Bases: BaseModel

Light historical index price data

IndexHistoricalPrice

Bases: BaseModel

Historical index price data

IndexIntraday

Bases: BaseModel

Intraday index price data

IndexQuote

Bases: BaseModel

Index quote information

IndexShortQuote

Bases: BaseModel

Index short quote information

IndustryPESnapshot

Bases: BaseModel

Industry price-to-earnings snapshot data

IndustryPerformance

Bases: BaseModel

Industry performance data

MarketHoliday

Bases: BaseModel

Market holiday for a single exchange

MarketHours

Bases: BaseModel

Market trading hours for a single exchange

Relative path: fmp_data/market/models.py

MarketMover

Bases: BaseModel

Market mover (gainer/loser) data

PrePostMarketQuote

Bases: BaseModel

Pre/Post market quote data

SectorPESnapshot

Bases: BaseModel

Sector price-to-earnings snapshot data

SectorPerformance

Bases: BaseModel

Sector performance data

parse_percentage(value)

Convert percentage string or float to a float.

Parameters:

Name Type Description Default
value Any

Value to parse, can be a string ending with '%' or a float

required

Returns:

Type Description
float | None

float | None: Parsed percentage value as decimal, or None if value is None

Raises:

Type Description
ValueError

If value cannot be parsed as a percentage

handler: python options: show_root_heading: true show_source: false filters: - "!^_"

Fundamental Models

models

AsReportedBalanceSheet

Bases: AsReportedFinancialStatementBase

As-reported balance sheet data directly from SEC filings

AsReportedCashFlowStatement

Bases: AsReportedFinancialStatementBase

As-reported cash flow statement data directly from SEC filings

AsReportedFinancialStatementBase

Bases: BaseModel

Base model for as-reported financial statements

AsReportedIncomeStatement

Bases: AsReportedFinancialStatementBase

As-reported income statement data directly from SEC filings

BalanceSheet

Bases: FinancialStatementBase

Balance sheet data

CashFlowStatement

Bases: FinancialStatementBase

Cash flow statement data from FMP API

Relative path: fmp_data/fundamental/models.py

financing_cash_flow property

Net cash provided by financing activities.

investing_cash_flow property

Net cash provided by investing activities.

CompanyRating

Bases: BaseModel

Company rating data

CustomDCF

Bases: BaseModel

Custom discounted cash flow valuation with detailed components

CustomLeveredDCF

Bases: BaseModel

Custom levered discounted cash flow valuation with detailed components

DCF

Bases: BaseModel

Discounted cash flow valuation

EnterpriseValue

Bases: BaseModel

Enterprise value metrics

FinancialGrowth

Bases: BaseModel

Financial growth metrics

FinancialRatios

Bases: BaseModel

Financial ratios

FinancialRatiosTTM

Bases: BaseModel

Trailing twelve months financial ratios

FinancialReport

Bases: BaseModel

Financial report summary

FinancialReportDate

Bases: BaseModel

Financial report date

FinancialReportDates

Bases: BaseModel

Financial report date

FinancialScore

Bases: BaseModel

Company financial score

FinancialStatementBase

Bases: BaseModel

Base model for financial statements

FinancialStatementFull

Bases: BaseModel

Full financial statements as reported

HistoricalRating

Bases: BaseModel

Historical company rating data

IncomeStatement

Bases: FinancialStatementBase

Income statement data from FMP API

KeyMetrics

Bases: BaseModel

Key financial metrics

KeyMetricsTTM

Bases: BaseModel

Trailing twelve months key metrics

LatestFinancialStatement

Bases: BaseModel

Latest financial statement metadata

LeveredDCF

Bases: BaseModel

Levered discounted cash flow valuation

OwnerEarnings

Bases: BaseModel

Owner earnings data

coerce_rating_score(value)

Coerce rating-bulk score cells to int.

rating-bulk CSV may emit a whole score as "3" or "3.0". A strict int field rejects the latter and parse_csv_models then skips the entire company row. Empty cells are already None. Non-integral values ("3.5") raise so they fail validation instead of being truncated. Non-numeric or non-finite values pass through and still fail the int field.

handler: python options: show_root_heading: true show_source: false filters: - "!^_"

Technical Models

models

ADXIndicator

Bases: TechnicalIndicator

Average Directional Index (ADX) indicator

DEMAIndicator

Bases: TechnicalIndicator

Double Exponential Moving Average (DEMA) indicator

EMAIndicator

Bases: TechnicalIndicator

Exponential Moving Average (EMA) indicator

RSIIndicator

Bases: TechnicalIndicator

Relative Strength Index (RSI) indicator

SMAIndicator

Bases: TechnicalIndicator

Simple Moving Average indicator with extended fields

StandardDeviationIndicator

Bases: TechnicalIndicator

Standard Deviation indicator with extended fields

TEMAIndicator

Bases: TechnicalIndicator

Triple Exponential Moving Average (TEMA) indicator

TechnicalIndicator

Bases: BaseModel

Base class for technical indicators

WMAIndicator

Bases: TechnicalIndicator

Weighted Moving Average indicator

WilliamsIndicator

Bases: TechnicalIndicator

Williams %R indicator

handler: python options: show_root_heading: true show_source: false filters: - "!^_"

Market Intelligence Models

models

CrowdfundingOffering

Bases: BaseModel

Crowdfunding offering data

CrowdfundingOfferingSearchItem

Bases: BaseModel

Crowdfunding offering search item

CryptoNewsArticle

Bases: BaseModel

Crypto news article data

DividendEvent

Bases: BaseModel

Dividend calendar event

ESGData

Bases: BaseModel

ESG environmental, social and governance data

ESGRating

Bases: BaseModel

ESG rating data

EarningConfirmed

Bases: BaseModel

Confirmed earnings event

EarningEvent

Bases: BaseModel

Earnings calendar event based on FMP API response

EarningSurprise

Bases: BaseModel

Earnings surprise data based on FMP API response

EquityOffering

Bases: BaseModel

Equity offering data

EquityOfferingSearchItem

Bases: BaseModel

Equity offering search item

FMPArticle

Bases: BaseModel

Individual FMP article data

FMPArticlesResponse

Bases: BaseModel

Root response containing array of articles

ForexNewsArticle

Bases: BaseModel

Forex news article data

GeneralNewsArticle

Bases: BaseModel

General news article data

HistoricalRating

Bases: BaseModel

Historical analyst rating data

HistoricalSocialSentiment

Bases: BaseModel

Historical social sentiment data

HistoricalStockGrade

Bases: BaseModel

Historical stock grade data

HouseDisclosure

Bases: BaseModel

House disclosure data

disclosure_year property

Backward-compatible disclosure year.

representative property

Backward-compatible representative name.

ticker property

Backward-compatible ticker symbol.

IPOEvent

Bases: BaseModel

IPO calendar event

PressRelease

Bases: BaseModel

Press release data

PressReleaseBySymbol

Bases: BaseModel

Press release data by company symbol

PriceTargetNews

Bases: BaseModel

Price target news article

RatingsSnapshot

Bases: BaseModel

Current analyst ratings snapshot

SenateNetWorthAggregated

Bases: BaseModel

Yearly net-worth rollup. Extra columns stay allowed.

SenateNetWorthDebtDetails

Bases: BaseModel

Liability extras on an itemized net-worth row.

SenateNetWorthItem

Bases: BaseModel

Itemized Senate/House net-worth disclosure row.

SenateNetWorthValueRange

Bases: BaseModel

Disclosed min/max range on an itemized net-worth row.

SenatePosition

Bases: BaseModel

Congress member term history. Path is senate-positions.

SenateProfile

Bases: BaseModel

Congress member profile. Path is senate-profile; rows include House.

SenateTrade

Bases: BaseModel

Senate trading data

date_received property

Backward-compatible alias for disclosure_date.

SocialSentimentChanges

Bases: BaseModel

Changes in social sentiment data

StockGrade

Bases: BaseModel

Stock grade from analyst

StockGradeNews

Bases: BaseModel

Stock grade news article

StockGradesConsensus

Bases: BaseModel

Stock grades consensus summary

StockNewsArticle

Bases: BaseModel

Stock news article data

StockNewsSentiment

Bases: BaseModel

Stock news article with sentiment data

StockSplitEvent

Bases: BaseModel

Stock split calendar event

TrendingSocialSentiment

Bases: BaseModel

Trending social sentiment data

handler: python options: show_root_heading: true show_source: false filters: - "!^_"

Institutional Models

models

AssetAllocation

Bases: BaseModel

13F asset allocation data

BeneficialOwnership

Bases: BaseModel

Beneficial ownership information

CIKCompanyMap

Bases: BaseModel

CIK to company mapping information

CIKMapping

Bases: BaseModel

CIK to name mapping information

FailToDeliver

Bases: BaseModel

Fail to deliver information

Form13F

Bases: BaseModel

Individual holding in a 13F report

Form13FDate

Bases: BaseModel

Form 13F filing dates

validate_date(value)

Validate the date field. Raises exceptions for invalid data to fail fast.

Parameters:

Name Type Description Default
value Any

The value to validate, can be date, string, or any other type

required

Returns:

Type Description
date | None

date | None: Validated date object or None for None input

Raises:

Type Description
ValueError

If the date string format is invalid

TypeError

If the value type is unexpected

Example

"2023-01-01" -> date(2023, 1, 1) "invalid" -> raises ValueError None -> None

HolderIndustryBreakdown

Bases: BaseModel

Holders industry breakdown

HolderPerformanceSummary

Bases: BaseModel

Holder performance summary

IndustryPerformanceSummary

Bases: BaseModel

Industry performance summary

InsiderRoster

Bases: BaseModel

Insider roster information

InsiderStatistic

Bases: BaseModel

Insider trading statistics

InsiderTrade

Bases: BaseModel

Insider trade information

InsiderTradingByName

Bases: BaseModel

Insider trading by reporting name

InsiderTradingLatest

Bases: BaseModel

Latest insider trading information

InsiderTradingSearch

Bases: BaseModel

Search results for insider trading

InsiderTradingStatistics

Bases: BaseModel

Enhanced insider trading statistics

InsiderTransactionType

Bases: BaseModel

Insider transaction type

InstitutionalHolder

Bases: BaseModel

Institutional holder information

InstitutionalHolding

Bases: BaseModel

Institutional holding information

InstitutionalOwnershipAnalytics

Bases: BaseModel

Filings extract with analytics by holder

InstitutionalOwnershipDates

Bases: BaseModel

Form 13F filing dates.

cik is a request parameter for this endpoint, not a response field: probed 2026-08-07, institutional-ownership/dates returns rows containing only date, year and quarter. The field is kept declared so that a future API addition parses under strict mode rather than failing as an unexpected field; in practice it is always None.

InstitutionalOwnershipExtract

Bases: BaseModel

Filings extract information

InstitutionalOwnershipLatest

Bases: BaseModel

Latest institutional ownership filings

SymbolPositionsSummary

Bases: BaseModel

Positions summary by symbol

handler: python options: show_root_heading: true show_source: false filters: - "!^_"

Investment Models

models

ETFCountryWeighting

Bases: BaseModel

ETF country weighting

parse_weight_percentage(value)

Parse percentage string into float

ETFExposure

Bases: BaseModel

ETF stock exposure

ETFHolder

Bases: BaseModel

ETF holder information

ETFHolding

Bases: BaseModel

ETF holding information

ETFInfo

Bases: BaseModel

ETF information

ETFPortfolioDate

Bases: BaseModel

ETF portfolio date model

ETFSectorExposure

Bases: BaseModel

Sector exposure within the ETF

ETFSectorWeighting

Bases: BaseModel

ETF sector weighting

parse_weight_percentage(value)

Parse percentage string or number into normalized float (0-1 scale)

FundDisclosureHolderLatest

Bases: BaseModel

Latest mutual fund/ETF disclosure holder information

FundDisclosureHolding

Bases: BaseModel

Mutual fund/ETF disclosure holding data

FundDisclosureSearchResult

Bases: BaseModel

Mutual fund/ETF disclosure holder search result

MutualFundHolder

Bases: BaseModel

Mutual fund holder information

MutualFundHolding

Bases: BaseModel

Mutual fund holding information

PortfolioDate

Bases: BaseModel

Portfolio date model for ETFs and Mutual Funds

handler: python options: show_root_heading: true show_source: false filters: - "!^_"

Alternative Markets Models

models

Commodity

Bases: BaseModel

Commodity information

CommodityHistoricalPrice

Bases: HistoricalPrice

Commodity historical price

CommodityIntradayPrice

Bases: IntradayPrice

Commodity intraday price

CommodityPriceHistory

Bases: BaseModel

Full commodity price history

CommodityQuote

Bases: PriceQuote

Commodity price quote

CryptoHistoricalData

Bases: BaseModel

Historical price data wrapper

CryptoHistoricalPrice

Bases: HistoricalPrice

Cryptocurrency historical price

CryptoIntradayPrice

Bases: IntradayPrice

Cryptocurrency intraday price

CryptoPair

Bases: BaseModel

Cryptocurrency trading pair information

CryptoQuote

Bases: PriceQuote

Cryptocurrency price quote

ForexHistoricalPrice

Bases: HistoricalPrice

Forex historical price

ForexIntradayPrice

Bases: IntradayPrice

Forex intraday price

ForexPair

Bases: BaseModel

Forex trading pair information

ForexPriceHistory

Bases: BaseModel

Full forex price history

ForexQuote

Bases: PriceQuote

Forex price quote

HistoricalPrice

Bases: BaseModel

Base model for historical price data

IntradayPrice

Bases: BaseModel

Base model for intraday prices

PriceQuote

Bases: BaseModel

Base model for price quotes

parse_timestamp(value) classmethod

Parse Unix timestamp to datetime with UTC timezone

handler: python options: show_root_heading: true show_source: false filters: - "!^_"

Economics Models

models

CommitmentOfTradersAnalysis

Bases: BaseModel

Commitment of Traders (COT) analysis data

CommitmentOfTradersListItem

Bases: BaseModel

Commitment of Traders (COT) report list item

CommitmentOfTradersReport

Bases: BaseModel

Commitment of Traders (COT) report data

EconomicEvent

Bases: BaseModel

Economic calendar event data

EconomicIndicator

Bases: BaseModel

Economic indicator data

MarketRiskPremium

Bases: BaseModel

Market risk premium data

TreasuryRate

Bases: BaseModel

Treasury rate data

handler: python options: show_root_heading: true show_source: false filters: - "!^_"

Batch Models

models

AftermarketQuote

Bases: BaseModel

Aftermarket quote data.

Note: ask/bid size fields exist in two forms — legacy (aliases asize/ bsize) and current (aliases askSize/bidSize) — because the API may return either format depending on the endpoint version.

AftermarketTrade

Bases: BaseModel

Aftermarket trade data

BatchMarketCap

Bases: BaseModel

Batch market capitalization data

BatchQuote

Bases: BaseModel

Batch quote data for multiple symbols

BatchQuoteShort

Bases: BaseModel

Short batch quote data (quick snapshot)

EODBulk

Bases: BaseModel

Bulk end-of-day price data

EarningsSurpriseBulk

Bases: BaseModel

Bulk earnings surprise data

PeersBulk

Bases: BaseModel

Bulk peer list data

peers_list property

Return peers as a list of symbols.

handler: python options: show_root_heading: true show_source: false filters: - "!^_"

Transcripts Models

models

EarningsTranscript

Bases: BaseModel

Earnings call transcript data

TranscriptDate

Bases: BaseModel

Available transcript date information

TranscriptSymbol

Bases: BaseModel

Symbol with available transcripts

handler: python options: show_root_heading: true show_source: false filters: - "!^_"

SEC Models

models

IndustryClassification

Bases: BaseModel

Industry classification data

SECCompanySearchResult

Bases: BaseModel

SEC company search result

SECFiling8K

Bases: BaseModel

SEC 8-K filing data

SECFilingSearchResult

Bases: BaseModel

SEC filing search result

SECFinancialFiling

Bases: BaseModel

SEC financial filing data

SECProfile

Bases: BaseModel

SEC company profile

SICCode

Bases: BaseModel

Standard Industrial Classification code

handler: python options: show_root_heading: true show_source: false filters: - "!^_"

Index Models

models

HistoricalIndexConstituent

Bases: BaseModel

Historical index constituent change information

IndexConstituent

Bases: BaseModel

Index constituent information

handler: python options: show_root_heading: true show_source: false filters: - "!^_"

Usage Examples

Sync Client Usage

from fmp_data import FMPDataClient

# Initialize from environment
with FMPDataClient.from_env() as client:
    profile = client.company.get_profile("AAPL")
    print(f"Company: {profile.company_name}")

# Manual initialization
client = FMPDataClient(
    api_key="your_api_key",  # pragma: allowlist secret
    timeout=30,
    max_retries=3,
    debug=True,
)

Async Client Usage

import asyncio
from fmp_data import AsyncFMPDataClient


async def main():
    # Initialize from environment
    async with AsyncFMPDataClient.from_env() as client:
        profile = await client.company.get_profile("AAPL")
        print(f"Company: {profile.company_name}")

    # Manual initialization
    client = AsyncFMPDataClient(
        api_key="your_api_key",  # pragma: allowlist secret
        timeout=30,
        max_retries=3,
        debug=True,
    )
    try:
        quote = await client.company.get_quote("AAPL")
        print(f"Price: ${quote.price}")
    finally:
        await client.aclose()


asyncio.run(main())

Concurrent Async Requests

import asyncio
from fmp_data import AsyncFMPDataClient


async def fetch_multiple_profiles(symbols: list[str]):
    async with AsyncFMPDataClient.from_env() as client:
        # Fetch all profiles concurrently
        tasks = [client.company.get_profile(symbol) for symbol in symbols]
        profiles = await asyncio.gather(*tasks)

        for profile in profiles:
            print(f"{profile.symbol}: {profile.company_name}")


asyncio.run(fetch_multiple_profiles(["AAPL", "MSFT", "GOOGL"]))

Configuration Examples

from fmp_data import FMPDataClient, ClientConfig, LoggingConfig, LogHandlerConfig

# Custom configuration
config = ClientConfig(
    api_key="your_api_key",  # pragma: allowlist secret
    base_url="https://financialmodelingprep.com",
    timeout=60,
    max_retries=5,
    logging=LoggingConfig(
        level="INFO",
        handlers={
            "console": LogHandlerConfig(
                class_name="StreamHandler",
                level="INFO",
                format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
            )
        },
    ),
)

client = FMPDataClient(config=config)

Error Handling

from fmp_data import FMPDataClient
from fmp_data.exceptions import (
    FMPError,
    RateLimitError,
    AuthenticationError,
    ValidationError,
)

try:
    with FMPDataClient.from_env() as client:
        data = client.company.get_profile("INVALID")
except AuthenticationError:
    print("Check your API key")
except RateLimitError as e:
    print(f"Rate limited. Wait {e.retry_after} seconds")
except ValidationError as e:
    print(f"Invalid request: {e.message}")
except FMPError as e:
    print(f"API error: {e.message}")

Custom Logging

from fmp_data import FMPDataClient, LoggingConfig, LogHandlerConfig, ClientConfig

# Custom logging configuration
logging_config = LoggingConfig(
    level="DEBUG",
    handlers={
        "file": LogHandlerConfig(
            class_name="FileHandler",
            level="DEBUG",
            format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
        ),
        "console": LogHandlerConfig(
            class_name="StreamHandler",
            level="INFO",
            format="%(levelname)s - %(message)s",
        ),
    },
)

client = FMPDataClient(
    config=ClientConfig(
        api_key="your_api_key",  # pragma: allowlist secret
        logging=logging_config,
    )
)