API 参考
API 的每个路由,读取自 OpenAPI 文档。每个路由都有使用真实公司的示例请求。交互式参考 可以在浏览器中运行同样的调用。路由说明为英文。
GET /v1/companies
Search or page the company directory. Use it to turn a name into a company id, or to list every company with a dataset. Each item has fmd_id, cik, primary_ticker and available_datasets.
Example: GET https://api.financial.md/v1/companies?q=Apple&limit=5
| Parameter | In | Description |
|---|---|---|
q | query | Name or ticker search (names as substring, tickers as prefix; case-insensitive) |
country | query | ISO 3166-1 alpha-2 |
exchange | query | MIC of a listing, e.g. XNAS |
template | query | Reporting template |
status | query | Company status |
updated_since | query | Companies updated since this date or timestamp |
limit | query | Maximum companies per page |
cursor | query | Opaque cursor from meta.next_cursor |
curl "https://api.financial.md/v1/companies?q=Apple&limit=5"GET /v1/company/profile
One company's identity: CIK, listings with exchange codes, sector, industry, reporting template, fiscal year end and which datasets are served. Call it first when you are unsure a ticker is covered.
Example: GET https://api.financial.md/v1/company/profile?company=ticker:AAPL
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
curl "https://api.financial.md/v1/company/profile?company=ticker:AAPL"GET /v1/company/financials/{statement}/standardized
A financial statement on the FinancialMD template, so line items compare across companies. Use it for questions such as "What was Apple's revenue in fiscal 2024?" or "What is AAPL's free cash flow?". data.periods is most recent first and row.cells[i] is the value object for periods[i], each with the 10-K or 10-Q it came from. Add as_of for what was known on a date, original=true for first-reported values, history=true for every restatement.
Example: GET https://api.financial.md/v1/company/financials/income_statement/standardized?company=ticker:AAPL&period_type=annual&limit=5
| Parameter | In | Description |
|---|---|---|
statement (required) | path | Statement; supplemental carries share counts and per-share figures |
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
period_type | query | Period type |
limit | query | Maximum periods (most recent first) |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
original | query | First-reported version of each period |
history | query | Every knowledge version of each period, oldest first |
curl "https://api.financial.md/v1/company/financials/income_statement/standardized?company=ticker:AAPL&period_type=annual&limit=5"GET /v1/company/financials/{statement}/as_reported
The same grid with the filer's own line items: one row per XBRL tag and dimension as filed. Use it when you need the company's exact label or a line the template folds into a total.
Example: GET https://api.financial.md/v1/company/financials/balance_sheet/as_reported?company=cik:320193&period_type=annual&limit=2
| Parameter | In | Description |
|---|---|---|
statement (required) | path | Statement |
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
period_type | query | Period type (as-reported serves annual and quarterly; balance sheets are instants at the period end) |
limit | query | Maximum periods |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
history | query | Every filing's version of each line and period, oldest first |
accession | query | Only facts from this filing |
curl "https://api.financial.md/v1/company/financials/balance_sheet/as_reported?company=cik:320193&period_type=annual&limit=2"GET /v1/company/ratios
Margins, returns, leverage, liquidity, growth and per-share ratios for each period, computed from the standardized facts. Each ratio carries the proof ids of its inputs, so it can be traced to the filing.
Example: GET https://api.financial.md/v1/company/ratios?company=ticker:AAPL&period_type=annual&limit=5
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
period_type | query | Period type |
limit | query | Maximum periods (most recent first) |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
curl "https://api.financial.md/v1/company/ratios?company=ticker:AAPL&period_type=annual&limit=5"GET /v1/company/ratios/daily/{ratio_id}
One ratio as a series. Fundamental ratios have one point per fiscal period; valuation ratios (market cap, P/E, EV/EBITDA and others) have one point per trading session, pairing the IEX close with the facts known that evening.
Example: GET https://api.financial.md/v1/company/ratios/daily/gross_margin?company=ticker:AAPL&period_type=annual&limit=10
| Parameter | In | Description |
|---|---|---|
ratio_id (required) | path | Ratio id from GET /v1/company/metrics?statement=ratios |
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
period_type | query | Period type |
limit | query | Maximum periods (most recent first); sessions for a valuation ratio |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
ticker | query | Valuation ratios: the listing whose close is used |
from | query | Valuation ratios: first session, inclusive |
to | query | Valuation ratios: last session, inclusive |
cursor | query | Opaque cursor from meta.next_cursor |
curl "https://api.financial.md/v1/company/ratios/daily/gross_margin?company=ticker:AAPL&period_type=annual&limit=10"GET /v1/company/metrics
The concept ids, labels, display order and subtotal formulas of the company's template. Use the ids in /v1/screen, /v1/verify and to read statement rows. statement=ratios lists the ratio ids and formulas.
Example: GET https://api.financial.md/v1/company/metrics?company=ticker:AAPL&statement=income_statement
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
statement | query | Only this statement; ratios lists the serve-time ratios with their formulas |
curl "https://api.financial.md/v1/company/metrics?company=ticker:AAPL&statement=income_statement"GET /v1/company/filings
A company's SEC filings, newest first, with accession number, form, period and filing date and an EDGAR link.
Example: GET https://api.financial.md/v1/company/filings?company=ticker:AAPL&form=10-K&limit=5
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
form | query | Form type, e.g. 10-K |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum filings |
cursor | query | Opaque cursor from meta.next_cursor |
curl "https://api.financial.md/v1/company/filings?company=ticker:AAPL&form=10-K&limit=5"GET /v1/filing/{accession}
One filing by accession number: form, fiscal period, filing and acceptance times, primary document and EDGAR link.
Example: GET https://api.financial.md/v1/filing/0000320193-24-000123
| Parameter | In | Description |
|---|---|---|
accession (required) | path | Accession number, e.g. 0000320193-24-000123 |
curl "https://api.financial.md/v1/filing/0000320193-24-000123"GET /v1/filing/{accession}/document
Links to every document of a filing on EDGAR. format=html returns the primary document itself.
Example: GET https://api.financial.md/v1/filing/0000320193-24-000123/document
| Parameter | In | Description |
|---|---|---|
accession (required) | path | Accession number |
format | query | json: the links; html: the primary document as EDGAR serves it (relative links resolve to EDGAR) |
curl "https://api.financial.md/v1/filing/0000320193-24-000123/document"GET /v1/filing/{accession}/facts
Every fact one filing tagged that maps to a statement concept, grouped by statement, in one call. Use it to read what a single 10-K or 10-Q said.
Example: GET https://api.financial.md/v1/filing/0000320193-24-000123/facts?statement=income_statement
| Parameter | In | Description |
|---|---|---|
accession (required) | path | Accession number |
statement | query | Only this statement |
limit | query | Maximum facts |
curl "https://api.financial.md/v1/filing/0000320193-24-000123/facts?statement=income_statement"GET /v1/company/ownership/insiders
Insider transactions from Forms 3, 4 and 5, newest first: who, role, transaction code, shares, price and the filing.
Example: GET https://api.financial.md/v1/company/ownership/insiders?company=ticker:AAPL&limit=20
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum transactions |
cursor | query | Opaque cursor from meta.next_cursor |
curl "https://api.financial.md/v1/company/ownership/insiders?company=ticker:AAPL&limit=20"GET /v1/company/ownership/institutional
Form 13F managers that reported a position in the company for a quarter, with shares, value and the change against the prior quarter.
Example: GET https://api.financial.md/v1/company/ownership/institutional?company=ticker:AAPL&limit=20
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
period | query | Calendar quarter end the holdings are reported for |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum positions |
cursor | query | Opaque cursor from meta.next_cursor |
curl "https://api.financial.md/v1/company/ownership/institutional?company=ticker:AAPL&limit=20"GET /v1/ownership/institutional/holders
Search Form 13F managers by name. Each has a CIK to pass to /v1/ownership/institutional/holdings.
Example: GET https://api.financial.md/v1/ownership/institutional/holders?q=Berkshire
| Parameter | In | Description |
|---|---|---|
q | query | Manager name search (case-insensitive substring) |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum managers |
cursor | query | Opaque cursor from meta.next_cursor |
curl "https://api.financial.md/v1/ownership/institutional/holders?q=Berkshire"GET /v1/ownership/institutional/holdings
One Form 13F manager's portfolio for a quarter, largest positions first.
Example: GET https://api.financial.md/v1/ownership/institutional/holdings?holder=cik:1067983&period=2026-06-30&limit=20
| Parameter | In | Description |
|---|---|---|
holder (required) | query | The manager's SEC CIK |
period | query | Calendar quarter end the holdings are reported for |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum positions |
cursor | query | Opaque cursor from meta.next_cursor |
curl "https://api.financial.md/v1/ownership/institutional/holdings?holder=cik:1067983&period=2026-06-30&limit=20"GET /v1/company/stock_prices
Daily bars built from trades at IEX only. This is not the consolidated tape and the close is not the official close. adjust=splits adds split-adjusted values; adjust=total_return adds dividend-reinvested values.
Example: GET https://api.financial.md/v1/company/stock_prices?company=ticker:AAPL&from=2026-10-01&to=2026-10-31
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
ticker | query | One of the company's listings; default is the ticker named in company, else the primary listing with bars |
from | query | First session, inclusive |
to | query | Last session, inclusive |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum sessions |
cursor | query | Opaque cursor from meta.next_cursor |
adjust | query | splits: each bar also carries split_adjusted values (confirmed splits after the session only); total_return: also total_return values (split-adjusted times the dividend factors of every ex-date after the session) |
curl "https://api.financial.md/v1/company/stock_prices?company=ticker:AAPL&from=2026-10-01&to=2026-10-31"GET /v1/company/splits
Stock splits as filed in XBRL, each with whether IEX prices confirm it.
Example: GET https://api.financial.md/v1/company/splits?company=ticker:AAPL
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
curl "https://api.financial.md/v1/company/splits?company=ticker:AAPL"GET /v1/company/dividends
Dividends per share declared or paid in each fiscal period, as filed, with proof.
Example: GET https://api.financial.md/v1/company/dividends?company=ticker:AAPL&limit=8
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
kind | query | Only declared or only paid |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum periods |
curl "https://api.financial.md/v1/company/dividends?company=ticker:AAPL&limit=8"GET /v1/events_calendar
Earnings releases (8-K Item 2.02 filed) and model-expected report dates, for one company or for every company in a date range.
Example: GET https://api.financial.md/v1/events_calendar?company=ticker:AAPL
| Parameter | In | Description |
|---|---|---|
company | query | Optional: one company |
from | query | First date, inclusive |
to | query | Last date, inclusive |
confidence | query | confirmed: 8-K Item 2.02 filed; predicted: cadence model |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum events |
cursor | query | Opaque cursor from meta.next_cursor |
curl "https://api.financial.md/v1/events_calendar?company=ticker:AAPL"GET /v1/company/events
A company's 8-K filings with the items they report (earnings, leadership changes, agreements and others), newest first.
Example: GET https://api.financial.md/v1/company/events?company=ticker:AAPL&limit=10
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
event_type | query | Only items of this type |
importance_min | query | Only filings whose highest item is at least this important |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum items |
cursor | query | Opaque cursor from meta.next_cursor |
curl "https://api.financial.md/v1/company/events?company=ticker:AAPL&limit=10"GET /v1/news
8-K filings across every company, newest first, each with its items, event types, a headline and an importance from 1 to 5 (FinancialMD's rule by item number). importance_min=4 gives the top stories: earnings, M&A, impairments, auditor changes, restatements, bankruptcies. Built from EDGAR, not wire news.
Example: GET https://api.financial.md/v1/news?importance_min=4&limit=20
| Parameter | In | Description |
|---|---|---|
company | query | Optional: one company |
event_type | query | Only filings with an item of this type |
importance_min | query | Only filings whose highest item is at least this important (FinancialMD's rule by 8-K item; see note) |
from | query | Accepted on or after this date (UTC) |
to | query | Accepted on or before this date (UTC) |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum filings |
cursor | query | Opaque cursor from meta.next_cursor |
curl "https://api.financial.md/v1/news?importance_min=4&limit=20"GET /v1/search/filings
Find the EDGAR documents (filings and exhibits since 2001) that contain words or a quoted phrase, through SEC EDGAR full-text search. Each hit names its filing, form, date and companies with FinancialMD ids, and links the document.
Example: GET https://api.financial.md/v1/search/filings?q=%22going%20concern%22&forms=10-K&limit=10
| Parameter | In | Description |
|---|---|---|
q (required) | query | Words to find; a phrase in double quotes matches exactly |
forms | query | Comma-separated form types |
company | query | Optional: only this company's documents |
from | query | Filed on or after |
to | query | Filed on or before |
page | query | Page number, 1-based |
limit | query | Maximum documents per page |
curl "https://api.financial.md/v1/search/filings?q=%22going%20concern%22&forms=10-K&limit=10"GET /v1/coverage
Which datasets FinancialMD serves and which it does not (licensed, not built, or waiting on a decision), with the routes, MCP tools, reason and alternatives for each. Read it before looking for consensus estimates, transcripts or real-time prices.
Example: GET https://api.financial.md/v1/coverage?status=conceded
| Parameter | In | Description |
|---|---|---|
status | query | Only datasets with this status |
curl "https://api.financial.md/v1/coverage?status=conceded"GET /v1/company/segments
As-reported segment facts: revenue and other lines by business segment, geography or product.
Example: GET https://api.financial.md/v1/company/segments?company=ticker:AAPL&kind=geography
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
period_type | query | Annual (four quarters) or quarterly facts |
kind | query | Segment axis kind |
tag | query | Only this XBRL tag |
limit | query | Maximum period ends |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
curl "https://api.financial.md/v1/company/segments?company=ticker:AAPL&kind=geography"GET /v1/company/ownership/insider_holders
What each insider owned after their latest Form 4 or 5 transaction.
Example: GET https://api.financial.md/v1/company/ownership/insider_holders?company=ticker:AAPL
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum holders |
curl "https://api.financial.md/v1/company/ownership/insider_holders?company=ticker:AAPL"GET /v1/company/ownership/funds
Funds holding the company in their latest Form N-PORT, with shares and value.
Example: GET https://api.financial.md/v1/company/ownership/funds?company=ticker:AAPL&limit=20
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
period | query | Report period window ending on or before this date (default: the newest) |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum funds |
cursor | query | Opaque cursor from meta.next_cursor |
curl "https://api.financial.md/v1/company/ownership/funds?company=ticker:AAPL&limit=20"GET /v1/funds
Search Form N-PORT funds by name or series id. Each has a series id to pass to /v1/fund/holdings and /v1/fund/profile.
Example: GET https://api.financial.md/v1/funds?q=Vanguard%20500
| Parameter | In | Description |
|---|---|---|
q | query | Fund or registrant name, or a series id |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum funds |
cursor | query | Opaque cursor from meta.next_cursor |
curl "https://api.financial.md/v1/funds?q=Vanguard%20500"GET /v1/fund/holdings
One fund's Form N-PORT holdings for a report period, largest first.
Example: GET https://api.financial.md/v1/fund/holdings?fund=S000002839&limit=20
| Parameter | In | Description |
|---|---|---|
fund (required) | query | SEC series id |
period | query | Report period (month end); default the newest |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum holdings |
cursor | query | Opaque cursor from meta.next_cursor |
curl "https://api.financial.md/v1/fund/holdings?fund=S000002839&limit=20"GET /v1/company/kpis
Company-reported metrics read from earnings releases and reports: adjusted (non-GAAP) measures and operating statistics such as product-line sales. Each value carries its exact citation and a confidence.
Example: GET https://api.financial.md/v1/company/kpis?company=ticker:AAPL&kind=operating&limit=20
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
metric | query | Only this metric slug (data.metrics lists the company's) |
kind | query | adjusted: non-GAAP measures under the company's own definition; operating: operating statistics |
period_type | query | Only this period type |
from | query | First period end, inclusive |
to | query | Last period end, inclusive |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum values |
cursor | query | Opaque cursor from meta.next_cursor |
curl "https://api.financial.md/v1/company/kpis?company=ticker:AAPL&kind=operating&limit=20"GET /v1/company/dividend_events
Cash dividends with declaration, record, ex and pay dates as the company's filings state them. A missing ex-date is never inferred.
Example: GET https://api.financial.md/v1/company/dividend_events?company=ticker:AAPL&limit=8
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
from | query | First date, inclusive |
to | query | Last date, inclusive |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum dividends |
curl "https://api.financial.md/v1/company/dividend_events?company=ticker:AAPL&limit=8"GET /v1/company/ownership/insider_holdings
Holding lines of Forms 3, 4 and 5 as filed.
Example: GET https://api.financial.md/v1/company/ownership/insider_holdings?company=ticker:AAPL&limit=20
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
form | query | Only lines of this form |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum lines |
curl "https://api.financial.md/v1/company/ownership/insider_holdings?company=ticker:AAPL&limit=20"GET /v1/fund/profile
A fund's type (ETF, index fund and others) from Form N-CEN and each share class's prospectus fees and expense ratio. Accepts a series id or a share-class ticker.
Example: GET https://api.financial.md/v1/fund/profile?fund=VOO
| Parameter | In | Description |
|---|---|---|
fund (required) | query | Series id or share-class ticker |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
curl "https://api.financial.md/v1/fund/profile?fund=VOO"GET /v1/company/identifiers
CIK, LEI and FIGI of a company with the evidence for each.
Example: GET https://api.financial.md/v1/company/identifiers?company=ticker:AAPL
| Parameter | In | Description |
|---|---|---|
company (required) | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
curl "https://api.financial.md/v1/company/identifiers?company=ticker:AAPL"GET /v1/screen
Screen every covered company on its latest period. filter takes metric:min:max ranges with raw values (0.2 is 20 percent), sort takes metric:desc. Each result carries one value object with proof per metric.
Example: GET https://api.financial.md/v1/screen?filter=net_margin:0.2:,income_statement_total_revenues:10000000000:&sort=net_margin:desc&limit=20
| Parameter | In | Description |
|---|---|---|
status | query | Listing status of the companies screened: active (default), delisted, inactive or all |
metrics | query | Comma-separated columns: concept ids (GET /v1/company/metrics) or ratio ids. Up to 12. Defaults to revenue, net income, the three margins, revenue growth and return on equity. |
filter | query | Comma-separated range filters metric:min:max; either bound may be empty. Values are raw: 0.1 is 10 percent, amounts are in the reporting currency. A company without a value for a filtered metric does not match. |
sort | query | <metric|name|ticker>[:asc|:desc]; companies without a value sort last. Default name:asc. |
period_type | query | The period type whose latest period is screened |
q | query | Name or ticker search (names as substring, tickers as prefix) |
sector | query | Exact sector (case-insensitive) |
industry | query | Exact industry (case-insensitive) |
template | query | Reporting template |
country | query | ISO 3166-1 alpha-2 |
as_of | query | Point in time: a date (YYYY-MM-DD, end of day UTC) or ISO timestamp. Answers what was known then. |
limit | query | Maximum companies per page |
cursor | query | Opaque cursor from meta.next_cursor |
curl "https://api.financial.md/v1/screen?filter=net_margin:0.2:,income_statement_total_revenues:10000000000:&sort=net_margin:desc&limit=20"GET /v1/company/estimates
Always 404 not_covered: consensus estimates are licensed data FinancialMD does not carry. error.details names the reason and what to use instead; do not retry.
Example: GET https://api.financial.md/v1/company/estimates?company=ticker:AAPL
curl "https://api.financial.md/v1/company/estimates?company=ticker:AAPL"GET /v1/company/analyst_ratings
Always 404 not_covered: analyst ratings and price targets are licensed. error.details names the reason and what to use instead; do not retry.
Example: GET https://api.financial.md/v1/company/analyst_ratings?company=ticker:AAPL
curl "https://api.financial.md/v1/company/analyst_ratings?company=ticker:AAPL"GET /v1/company/transcripts
Always 404 not_covered: call transcripts and audio are licensed. error.details names the reason and what to use instead; do not retry.
Example: GET https://api.financial.md/v1/company/transcripts?company=ticker:AAPL
curl "https://api.financial.md/v1/company/transcripts?company=ticker:AAPL"GET /v1/company/stock_prices/intraday
Always 404 not_covered: real-time and intraday prices are licensed; daily IEX bars are at /v1/company/stock_prices. error.details names the reason and what to use instead; do not retry.
Example: GET https://api.financial.md/v1/company/stock_prices/intraday?company=ticker:AAPL
curl "https://api.financial.md/v1/company/stock_prices/intraday?company=ticker:AAPL"GET /v1/company/logo
Always 404 not_covered: logos wait on a trademark review. error.details names the reason and what to use instead; do not retry.
Example: GET https://api.financial.md/v1/company/logo?company=ticker:AAPL
curl "https://api.financial.md/v1/company/logo?company=ticker:AAPL"GET /v1/politician_trades
Always 404 not_covered: politician trades wait on a legal review. error.details names the reason and what to use instead; do not retry.
Example: GET https://api.financial.md/v1/politician_trades
curl "https://api.financial.md/v1/politician_trades"GET /v1/fund_letters
Always 404 not_covered: fund letters are not built. error.details names the reason and what to use instead; do not retry.
Example: GET https://api.financial.md/v1/fund_letters
curl "https://api.financial.md/v1/fund_letters"GET /proof/{id}
The proof behind any value: the filing, the XBRL tag and dimensions, the source URL and the raw as-reported facts it derives from.
Example: GET https://api.financial.md/proof/p_edt68ehn6cw3ed0
| Parameter | In | Description |
|---|---|---|
id (required) | path | Proof id from any value object |
curl "https://api.financial.md/proof/p_edt68ehn6cw3ed0"POST /v1/verify
Check a number you got elsewhere against what the company filed. Returns verdict (matches, differs or unknown), the filed value with proof, the difference, the tolerance from the filer's precision, and a scale_hint when your number is off by a power of ten.
Example: POST https://api.financial.md/v1/verify with body {"company":"ticker:AAPL","concept":"income_statement_total_revenues","period":"FY2024","value":391035000000}
curl -X POST "https://api.financial.md/v1/verify" -H "content-type: application/json" -d '{"company":"ticker:AAPL","concept":"income_statement_total_revenues","period":"FY2024","value":391035000000}'GET /v1/changes
Standardized facts whose knowledge interval opened since a time: new filings and restatements. Poll it to keep a local copy current.
Example: GET https://api.financial.md/v1/changes?since=2026-11-01T00:00:00Z&company=ticker:AAPL&limit=50
| Parameter | In | Description |
|---|---|---|
since (required) | query | Facts whose knowledge interval opened at or after this instant |
company | query | Company as fmd_<id>, cik:<number>, ticker:<symbol>[.<mic>]; a bare symbol means ticker, bare digits mean cik |
limit | query | Maximum changes |
cursor | query | Opaque cursor from meta.next_cursor |
curl "https://api.financial.md/v1/changes?since=2026-11-01T00:00:00Z&company=ticker:AAPL&limit=50"GET /v1/request-data
How to tell us about data or analysis you needed and did not find: the body POST /v1/request-data takes, the kinds, the limits and how to follow a request.
Example: GET https://api.financial.md/v1/request-data
curl "https://api.financial.md/v1/request-data"POST /v1/request-data
Tell us what you needed and did not find. Free, keyless, never charged. Similar requests merge into one demand item and count as votes; the answer has request_id, item_id, status and the vote counts. Do not include personal data.
Example: POST https://api.financial.md/v1/request-data with body {"kind":"dataset","want":"Quarterly order backlog by segment","why":"Modeling revenue visibility","company":"ticker:BA","endpoint_or_tool":"/v1/company/kpis"}
curl -X POST "https://api.financial.md/v1/request-data" -H "content-type: application/json" -d '{"kind":"dataset","want":"Quarterly order backlog by segment","why":"Modeling revenue visibility","company":"ticker:BA","endpoint_or_tool":"/v1/company/kpis"}'GET /v1/request-data/{id}
Follow a request by the request_id POST /v1/request-data returned: new, triaged, planned, done (with served_by, the endpoint or tool) or wontfix (with a public note), and the vote counts.
Example: GET https://api.financial.md/v1/request-data/0b8f6a52-6f0e-4a8e-9a43-3c0f6b2d1e11
| Parameter | In | Description |
|---|---|---|
id (required) | path | The request_id POST /v1/request-data returned, or a demand item id |
curl "https://api.financial.md/v1/request-data/0b8f6a52-6f0e-4a8e-9a43-3c0f6b2d1e11"GET /v1/requested
Requested and shipped: the reviewed demand items with status, public note, served_by and vote counts, and counts per status. Aggregate only, no submitter details.
Example: GET https://api.financial.md/v1/requested
curl "https://api.financial.md/v1/requested"GET /v1/me
For a keyed caller: principal, plan and remaining limits. Needs an API key; keys are not issued publicly yet.
Example: GET https://api.financial.md/v1/me
curl "https://api.financial.md/v1/me"