v1

latestOpenAPI 3.0.32026-07-2664108290.0 KB
SGX - Company Screener

SGX Companies Screener

High-performance API for filtering and sorting SGX-listed companies. Supports both structured SQL-like queries (where, order_by) and natural language queries (q). Returns a paginated list of companies.

Query modes (mutually exclusive — q overrides all others):

  • q: Natural language, e.g. top 5 SGX banks by market cap
  • where + order_by: SQL-like structured query

<Note>SGX symbol: 3 characters (letters or digits). E.g. D05, U11, Z74. No suffix.</Note>

<Note>SGX sector column contains duplicate variants (e.g. Consumer Cyclical / Consumer Cyclicals, Financial Services / Financials, Real Estate / Properties & Real Estate / REIT) pending upstream cleanup. To capture all matching companies, query with OR (e.g. sector = 'Real Estate' OR sector = 'Properties & Real Estate' OR sector = 'REIT').</Note>

<Accordion title="Smart FY Handling"> To account for reporting lags, 'latest year' queries made between January and April default to the previous audited year (e.g. a query in early 2026 uses 2024 data). </Accordion> <Accordion title="Syntax and Operators"> **Operators:** `=`, `!=`, `>`, `>=`, `<`, `<=`, `like`, `in`

Logic: combine conditions with and and or

String values: use single or double quotes — sector = 'Technology'

Lists (for in): tags in ['blue-chip', 'dividend'] </Accordion>

<Accordion title="Yearly Data"> Access historical data using bracket notation: `field[YYYY]`

Examples: revenue[2023] > 1000000000 or total_yield[2024] > 0.05

Note: SGX data is annual only — there is no quarterly data. </Accordion>

<Accordion title="Arithmetic Expressions"> Perform calculations within your query on both sides of a condition.

Examples: earnings[2024] > earnings[2023] * 1.25 or revenue[2024] / revenue[2023] > 1.5 </Accordion>

<Accordion title="SGX-Specific Limitations"> Some IDX screener features are **not available** for SGX due to data scope:
  • No person / entity ownership queries — no executives, major_shareholders, or affiliates fields.
  • No peer averages — no pe_peer_avg, pb_peer_avg, etc.
  • No free_float field.
  • No quarterly data — only annual fields like revenue[2024].
  • Coverage caveats: yearly fields marked [Big caps only] are populated only for ~22 large-caps; fields marked [Banks only] are populated only for DBS / OCBC / UOB. </Accordion>
<Accordion title="Available Fields"> <AccordionGroup> <Accordion title="Direct Fields (Top-level columns)"> **How to Use:** Query these fields directly using standard operators (`=`, `!=`, `>`, `<`, `LIKE`, `IN`). String comparisons are case-insensitive. <Accordion title="Examples"> - `where=market_cap > 500000000000000` - `where=company_name like '%energi%'` - `where=sector = 'Financials' and listing_date > '2005-01-01'` </Accordion>
  • symbol: SGX ticker symbol (3 characters, e.g. D05, U11, Z74)
  • company_name: Full registered company name
  • sector: SGX sector classification. NB: source data contains duplicate labels (e.g. Consumer Cyclical vs Consumer Cyclicals, Financial Services vs Financials) — pending upstream cleanup.
  • sub_sector: SGX sub-sector classification (126 distinct values)
  • market_cap: Market capitalisation in SGD
  • volume: Recent average daily trading volume (shares)
  • last_close_price: Most recent close price in SGD
  • employee_num: Total number of employees
  • pe: Price-to-earnings ratio
  • eps: Earnings per share (SGD)
  • beta: Beta vs SGX market
  • ps: Price-to-sales ratio
  • pcf: Price-to-cash-flow ratio
  • pb: Price-to-book ratio
  • gross_margin: Gross profit margin (decimal, e.g. 0.45 = 45%)
  • operating_margin: Operating profit margin (decimal)
  • net_profit_margin: Net profit margin (decimal)
  • quick_ratio: Quick ratio (acid test)
  • current_ratio: Current ratio
  • debt_to_equity: Debt-to-equity ratio
  • one_year_eps_growth: 1-year EPS growth (decimal)
  • one_year_sales_growth: 1-year sales (revenue) growth (decimal)
  • forward_dividend: Forward annual dividend per share in SGD
  • forward_dividend_yield: Forward annual dividend yield (decimal)
  • dividend_ttm: Trailing-twelve-month dividend per share in SGD
  • dividend_yield_5y_avg: 5-year average dividend yield (decimal)
  • dividend_growth_rate: Year-over-year dividend growth rate (decimal)
  • payout_ratio: Dividend payout ratio (decimal)
  • change_1d: 1-day price change (decimal)
  • change_7d: 7-day price change (decimal)
  • change_1m: 1-month price change (decimal)
  • change_ytd: Year-to-date price change (decimal)
  • change_1y: 1-year price change (decimal)
  • change_3y: 3-year price change (decimal) </Accordion>
<Accordion title="Array Fields"> **How to Use:** Query using the `in` operator to check if any of the provided values exist in the array. <Accordion title="Examples"> - `where=indices in ['LQ45', 'IDX30']` - `where=tags in ['52-w-high', 'public-float-under-25']` </Accordion>
  • tags: Analyst sentiment / classification tags </Accordion>
<Accordion title="JSON Object Fields (Most Recent Data)"> **How to Use:** Query as if they were direct fields — the parser automatically extracts the value from the underlying JSON. <Accordion title="Examples"> - `where=pe_ttm < 15 and roe_ttm > 0.1` - `where=last_close_price < all_time_high_price` - `where=ytd_low_date > '2025-03-01'` </Accordion>
  • ytd_low_price: Year-to-date lowest closing price in SGD
  • ytd_low_date: Date of the year-to-date lowest closing price
  • ytd_high_price: Year-to-date highest closing price in SGD
  • ytd_high_date: Date of the year-to-date highest closing price
  • 52_w_low_price: 52-week lowest closing price in SGD
  • 52_w_low_date: Date of the 52-week lowest closing price
  • 52_w_high_price: 52-week highest closing price in SGD
  • 52_w_high_date: Date of the 52-week highest closing price
  • 90_d_low_price: 90-day lowest closing price in SGD
  • 90_d_low_date: Date of the 90-day lowest closing price
  • 90_d_high_price: 90-day highest closing price in SGD
  • 90_d_high_date: Date of the 90-day highest closing price
  • all_time_low_price: All-time lowest closing price in SGD
  • all_time_low_date: Date of the all-time lowest closing price
  • all_time_high_price: All-time highest closing price in SGD
  • all_time_high_date: Date of the all-time highest closing price </Accordion>
<Accordion title="Yearly JSON Fields (Historical & Forecast Data)"> **How to Use:** Must use bracket notation `field[YYYY]` to access data for a specific year. Supports all numeric operators, field-to-field comparisons, and arithmetic expressions. <Accordion title="Examples"> - `where=revenue[2023] > earnings[2023] * 5` - `where=roe[2023] > 0.15 and roe[2022] > 0.15` - `where=pe[2024] < pe_peer_avg[2024]` </Accordion>
  • revenue: Annual revenue in SGD. Use: revenue[2024].
  • earnings: Annual net profit/loss in SGD. Use: earnings[2024].
  • total_dividend: Total dividends paid per share for the year (SGD). Use: total_dividend[2024].
  • total_yield: Total dividend yield for the year (decimal). Use: total_yield[2024].
  • operating_cash_flow: Operating cash flow in SGD. Use: operating_cash_flow[2024]. (coverage: Big caps only)
  • investing_cash_flow: Investing cash flow in SGD. Use: investing_cash_flow[2024]. (coverage: Big caps only)
  • financing_cash_flow: Financing cash flow in SGD. Use: financing_cash_flow[2024]. (coverage: Big caps only)
  • free_cash_flow: Free cash flow in SGD. Use: free_cash_flow[2024]. (coverage: Big caps only)
  • net_cash_flow: Net cash flow in SGD. Use: net_cash_flow[2024]. (coverage: Big caps only)
  • capital_expenditure: Capital expenditure in SGD. Use: capital_expenditure[2024]. (coverage: Big caps only)
  • ebit: EBIT (earnings before interest and tax) in SGD. Use: ebit[2024]. (coverage: Big caps only)
  • ebitda: EBITDA in SGD. Use: ebitda[2024]. (coverage: Big caps only)
  • gross_income: Gross income in SGD. Use: gross_income[2024]. (coverage: Big caps only)
  • cost_of_revenue: Cost of revenue in SGD. Use: cost_of_revenue[2024]. (coverage: Big caps only)
  • operating_income: Operating income in SGD. Use: operating_income[2024]. (coverage: Big caps only)
  • operating_expense: Operating expense in SGD. Use: operating_expense[2024]. (coverage: Big caps only)
  • pretax_income: Pre-tax income in SGD. Use: pretax_income[2024]. (coverage: Big caps only)
  • income_taxes: Income taxes paid in SGD. Use: income_taxes[2024]. (coverage: Big caps only)
  • total_asset: Total assets in SGD. Use: total_asset[2024]. (coverage: Big caps only)
  • total_equity: Total equity in SGD. Use: total_equity[2024]. (coverage: Big caps only)
  • total_liabilities: Total liabilities in SGD. Use: total_liabilities[2024]. (coverage: Big caps only)
  • working_capital: Working capital in SGD. Use: working_capital[2024]. (coverage: Big caps only)
  • total_current_asset: Total current assets in SGD. Use: total_current_asset[2024]. (coverage: Big caps only)
  • total_non_current_asset: Total non-current assets in SGD. Use: total_non_current_asset[2024]. (coverage: Big caps only)
  • net_interest_income: Net interest income in SGD. Use: net_interest_income[2024]. (coverage: Banks only)
  • interest_income: Total interest income in SGD. Use: interest_income[2024]. (coverage: Banks only)
  • interest_expense: Total interest expense in SGD. Use: interest_expense[2024]. (coverage: Banks only)
  • net_fee_and_commission_income: Net fee and commission income in SGD. Use: net_fee_and_commission_income[2024]. (coverage: Banks only)
  • net_trading_income: Net trading income in SGD. Use: net_trading_income[2024]. (coverage: Banks only)
  • net_loan: Net loans outstanding in SGD. Use: net_loan[2024]. (coverage: Banks only)
  • gross_loan: Gross loans outstanding in SGD. Use: gross_loan[2024]. (coverage: Banks only)
  • total_deposit: Total customer deposits in SGD. Use: total_deposit[2024]. (coverage: Banks only)
  • core_capital_tier1: Core capital (Tier 1) in SGD. Use: core_capital_tier1[2024]. (coverage: Banks only)
  • total_risk_weighted_asset: Total risk-weighted assets in SGD. Use: total_risk_weighted_asset[2024]. (coverage: Banks only) </Accordion>
<Accordion title="Quarterly Financial Data"> **How to Use:** Must use bracket notation `field[Qi-YYYY]` to access data for a specific quarter. <Accordion title="Examples"> - `where=revenue_q[Q1-2024] > 1000000000` - `where=earnings_q[Q4-2023] > earnings_q[Q3-2023]` </Accordion> </Accordion> <Accordion title="JSON List Fields"> **How to Use:** The query checks if **any** object in the list matches the condition. Use `=` or `like` for strings, numeric operators for numbers. <Accordion title="Examples"> - `where=major_shareholders_name like 'PT%' and major_shareholders_share_percentage > 0.1` - `where=key_executives_name = 'Prajogo Pangestu'` </Accordion> </Accordion> </AccordionGroup> </Accordion>

<Info>Costs 1 API credit for structured queries. Using the natural-language ?q= parameter costs 3 API credits.</Info>

get/v2/sgx/companies/

Query parameters

wherestring

SQL-like conditions for advanced filtering. Ignored if q is present. Supports operators =, !=, >, >=, <, <=, like, in combined with and/or. Use bracket notation for yearly fields: revenue[2024] > 1000000000. Supports arithmetic on both sides: earnings[2024] / earnings[2023] > 1.25.

qstring

A natural language query (e.g. top 5 SGX banks by market cap). When q is provided, all other query parameters (where, order_by, etc.) are ignored as the LLM will generate them.

order_bystring

Field to sort results by. Use - prefix for descending order (e.g. -market_cap). Supports arithmetic expressions (e.g. -(earnings[2024]/earnings[2023])). Ignored if q is present.

descboolean

Sort in descending order. Ignored if q is present.

limitinteger

Maximum number of results to return. Max: 200. Ignored if q is present.

offsetinteger

Number of results to skip for pagination. Ignored if q is present.

include_query_valuesboolean

If true, the response includes a query_values object showing the field values used in filtering/sorting.

Response

Paginated list of SGX companies matching the query.