Screen Companies (FinBridge DB)
screen_companiesScreen companies across five markets on annual fundamentals stored in the local finbridge database: Korea (DART), the US (SEC EDGAR), Taiwan (TWSE/TPEx), Japan (EDINET) and Europe (ESEF/IFRS). Filters and sorting run on standard metrics plus derived ratios; only annual rows (quarter=0) are considered. Base amounts are in each company's reporting currency — KRW, USD, TWD, JPY, or for Europe whatever the filer reports in (EUR, DKK, SEK, NOK, PLN, ...) — so absolute-value thresholds are market-dependent and cross-market (market='all') screens work best with ratio metrics (margins, roe, debt_ratio).
Coverage note: Taiwan carries only the latest reported period, because TWSE publishes a snapshot rather than history. Europe is still loading and is thinner than the others: about 1 in 8 rows has no operating_income (the filer tags it with a company extension rather than the IFRS concept) and about 1 in 5 has no revenue (banks and investment entities report interest revenue or fair-value gains, not a single IFRS revenue total — we leave the column empty rather than fill it with a component that would make margins mean different things per row). Germany and Ireland are largely absent from the ESEF index, and European rows carry no ticker yet (page_url is null). Every market here has financial statements — none of them is master-only.
What 'eu' means: any issuer that files under ESEF, i.e. has securities admitted to an EU/EEA/UK regulated market. That is a listing venue, not a domicile, so foreign issuers listed in Europe appear here too (Samsung Electronics, Toyota Caetano Portugal, Kazatomprom) and amounts stay in the filer's own reporting currency. A company cross-listed in several of our markets appears once per market with that market's own filing, so market='all' can show it more than once — this is not new to Europe (Toyota is already under both 'us' as TOYOTA MOTOR CORP and 'jp' as トヨタ自動車株式会社). Screen one market at a time when you need each company exactly once.
Period fallback: a single-market screen normally uses each company's latest ANNUAL report. When a market has no annual rows yet (Taiwan today reports a half-year cumulative), the screen drops to that market's latest available period and the response says which one in the 'period' field — e.g. "FY2026 Q2 (year-to-date cumulative)". Within one market every row is then the same period, so the ranking holds. market='all' never does this: lining up a half-year revenue against a full-year one would be a silently wrong table.
Args:
market: 'kr' (DART), 'us' (EDGAR), 'tw' (TWSE/TPEx), 'jp' (EDINET), 'eu' (ESEF), or 'all' (default)
fiscal_year: specific fiscal year; omit to use each company's latest annual report
filters: up to 5 of {metric, op, value}. op: gt|gte|lt|lte|eq. value is a number (ratios are in percent, e.g. 20 = 20%).
sort_by: metric to sort on (default 'revenue'); order: 'asc'|'desc' (default 'desc')
limit: 1-100 (default 20); response_format: 'markdown'|'json'
Metrics: revenue, gross_profit, operating_income, net_income, eps_diluted, assets, liabilities, equity, cash_and_equivalents, operating_cash_flow, plus derived operating_margin (operating_income/revenue100), net_margin (net_income/revenue100), roe (net_income/equity100), debt_ratio (liabilities/equity100).
Returns: {count, market, fiscal_year|'latest', sort_by, order, rows: [{name, source, ticker|stock_code, fiscal_year, currency, }]}. If a company reports under multiple accounting bases for the same year it may appear once per basis.
Examples:
KR companies with operating margin > 20%: {market: 'kr', filters: [{metric: 'operating_margin', op: 'gt', value: 20}], sort_by: 'operating_margin'}
US mega caps by revenue in FY2025: {market: 'us', fiscal_year: 2025, sort_by: 'revenue', limit: 10}
Use when: ranking or filtering many companies at once. Don't use for a single known company's statement detail (query_db or get_dart_financials / get_edgar_financials). Errors: 'database has not been built yet' — ingest has not run; an empty result is not an error (count 0).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max rows, 1-100 (default 20) | |
| order | No | Sort direction (default desc) | desc |
| market | No | Market: 'kr' (DART), 'us' (EDGAR), 'tw' (TWSE/TPEx), 'jp' (EDINET), 'eu' (ESEF), or 'all' (default) | all |
| filters | No | Up to 5 metric filters, ANDed together | |
| sort_by | No | Metric to sort by (default revenue) | revenue |
| fiscal_year | No | Specific fiscal year; omit to use each company's latest annual report | |
| response_format | No | 'markdown' for a table, 'json' for compact machine-readable output | markdown |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| rows | Yes | ||
| count | Yes | ||
| order | No | ||
| market | Yes | ||
| period | No | ||
| sort_by | No | ||
| fiscal_year | No |