# 🇸🇬 SGX Singapore Stock Screener — STI Quotes & Fundamentals (`nexgendata/sgx-singapore-stock-screener`) Actor

SGX Singapore stock screener API — Straits Times Index (STI) live quotes, market cap (SGD), P/E, P/B, dividend yield, REIT yield, ROE, sector. DBS, OCBC, UOB, CapitaLand REITs universe. Bloomberg Terminal / FactSet / Refinitiv Eikon alternative for hedge funds & quants. Pay-per-result.

- **URL**: https://apify.com/nexgendata/sgx-singapore-stock-screener.md
- **Developed by:** [Stephan Corbeil](https://apify.com/nexgendata) (community)
- **Categories:** Business, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $250.00 / 1,000 sgx stock records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🇸🇬 SGX Singapore Stock Screener — STI Quotes & Fundamentals

> Track every stock on the **Singapore Exchange** (SGX) and the **Straits Times Index** (STI) — with prices in SGD, market cap, P/E, P/B, dividend yield, sector, and the full fundamental stack. The Bloomberg Terminal alternative for Singapore equities, priced for indie quants, Asia-focused hedge funds, family offices, and the offshore-wealth-management firms that quietly run a huge chunk of South-East Asian capital.

Singapore punches massively above its weight in global capital markets. SGX hosts the three Singapore mega-banks — **DBS Group (D05)**, **Oversea-Chinese Banking Corp (O39)**, and **United Overseas Bank (U11)** — which together anchor more than S$300 billion in market cap and pay some of the most reliable dividends in Asia. It hosts **Singtel (Z74)** as the regional telecom giant, **Singapore Airlines (C6L)** as the bellwether for premium aviation, and a deep bench of **S-REITs** (CapitaLand Ascendas A17U, CapitaLand Integrated Commercial Trust C38U, Mapletree Logistics M44U, Mapletree Industrial ME8U, Frasers Logistics BUOU, Keppel DC AJBU, and 30+ others) that collectively form the largest REIT market in Asia ex-Japan. SGX is also a critical secondary-listing venue for cross-listed Chinese and Hong Kong names, making it a uniquely useful pan-Asia liquidity gateway.

And yet — getting clean SGX equity data is annoying. Yahoo Finance throttles `.SI` symbols aggressively from cloud IPs. SGX.com's own data portal is a maze of JS-heavy panels and PDFs. SGX OPENA8 dropped the easy CSV export some years back. Bloomberg Terminal will sell you the same data this actor surfaces — for **USD $24,000/year minimum** per seat.

This actor closes that gap. It returns a **clean, sorted, JSON-native screener** over the SGX top-500 by market cap, with an optional fundamental enrichment layer (PE, P/B, dividend yield, beta, 52-week range, EPS, shares outstanding, sector). Filter by `STI` (Straits Times Index constituents only — the 30 blue-chip names) or `SGX-all` (the entire main-board top-500), then narrow further by sector keyword and minimum market cap in SGD.

### 🎯 What you get per stock

Every record returned includes:

| Field | Description |
|---|---|
| `symbol` | SGX ticker (e.g. `D05` for DBS, `O39` for OCBC, `U11` for UOB, `Z74` for Singtel, `A17U` for CapitaLand Ascendas REIT) |
| `yahoo_symbol` | Yahoo Finance-formatted ticker (e.g. `D05.SI`) for downstream tooling |
| `name` | Company name in English (`DBS Group Holdings Ltd`) |
| `exchange` | Always `SGX` |
| `price_sgd` | Current price in Singapore dollars |
| `pct_change` | Today's % change (signed) |
| `market_cap_sgd` | Market capitalization in SGD (base units, not abbreviated) |
| `revenue_ttm_sgd` | Trailing twelve-month revenue in SGD |
| `rank_by_mcap` | Rank among SGX top-500 by market cap |
| `in_sti` | Boolean — true if the stock is in the Straits Times Index |
| `sti_name` | STI listing name (when applicable) |
| `stockanalysis_url` | Direct link to the stock's detail page |
| `sgx_url` | Direct link to SGX's own quote page |
| `yahoo_url` | Direct link to Yahoo Finance's quote page |
| `scraped_at` | UTC timestamp of the scrape |

**With `enrich_fundamentals=true`** you additionally get:

| Field | Description |
|---|---|
| `pe_ratio` | Trailing twelve-month Price/Earnings ratio |
| `forward_pe` | Forward 12-month Price/Earnings ratio |
| `pb_ratio` | Price/Book ratio (when published) |
| `dividend_per_share_sgd` | Annual dividend per share in SGD |
| `dividend_yield_pct` | Annual dividend yield as a % |
| `ex_dividend_date` | Next ex-dividend date |
| `eps` | Earnings per share (trailing) |
| `shares_outstanding` | Total listed shares |
| `volume` | Most-recent session volume |
| `avg_volume` | Trailing-average daily volume |
| `open_sgd`, `previous_close_sgd` | Latest session open / previous close |
| `day_range` | Day's intraday low–high range |
| `week_52_range` | 52-week low–high range |
| `beta` | 5-year beta vs STI |
| `rsi` | Relative Strength Index (14-day) |
| `earnings_date` | Next expected earnings release date |
| `sector` | Sector classification |
| `industry` | Industry classification |
| `net_income_sgd` | Trailing net income in SGD |
| `revenue_ttm_sgd_detail` | Revenue cross-checked from detail page |
| `market_cap_sgd_detail` | Market cap cross-checked from detail page |

### 🚀 Quick start

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("nexgendata/sgx-singapore-stock-screener").call(run_input={
    "market": "STI",
    "limit": 30,
    "enrich_fundamentals": True
})

for stock in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{stock['symbol']:<6} {stock['name']:<40} "
          f"S${stock['price_sgd']:>8,.2f}  "
          f"P/E {stock.get('pe_ratio', '--'):>6}  "
          f"Yield {stock.get('dividend_yield_pct', '--'):>5}%  "
          f"MCap S${stock['market_cap_sgd']/1e9:>7,.1f}B")
````

Sample output:

```
D05    DBS Group Holdings Ltd                   S$  58.79   P/E 15.25  Yield  4.75%  MCap S$ 166.7B
O39    Oversea-Chinese Banking Corp             S$  22.38   P/E  9.10  Yield  5.45%  MCap S$  98.4B
Z74    Singapore Telecommunications Limited     S$   4.71   P/E 15.40  Yield  4.60%  MCap S$  77.0B
U11    United Overseas Bank Limited             S$  36.89   P/E  9.50  Yield  5.85%  MCap S$  60.4B
C6L    Singapore Airlines Limited               S$   6.28   P/E 11.10  Yield  6.30%  MCap S$  19.9B
```

### 🌐 cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/nexgendata~sgx-singapore-stock-screener/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"market":"STI","limit":30,"enrich_fundamentals":true}'
```

### 📊 Real-world use cases

- **Asia hedge-fund daily refresh** — schedule the actor for the post-close SG time (17:00 SGT = 09:00 UTC) and pipe the dataset into your warehouse alongside Eastmoney, KOSPI, TWSE, and HKEX screens for a complete pan-Asia data layer.
- **STI vs Hang Seng relative-value screens** — pair this actor with the [🇭🇰 HKEX Hang Seng Stock Screener](https://apify.com/nexgendata/hkex-hang-seng-stock-screener?fpr=2ayu9b) to monitor STI vs HSI sector-level spreads — a classic ASEAN-vs-Greater-China factor trade.
- **S-REIT yield screens** — Singapore is the largest REIT market in Asia ex-Japan. Filter to `industry: REIT` and `dividend_yield_pct >= 5` to find the highest-yielding office, industrial, retail, and data-center S-REITs (Mapletree, CapitaLand, Frasers, Keppel, Ascendas, ParkwayLife, etc.) — rebalance quarterly with the screener as your data feed.
- **High-dividend Asia bank portfolio** — DBS, OCBC, UOB consistently yield 4-6% and trade at single-digit P/Es. Build a Singapore-bank dividend ladder with `sector: bank` and `min_market_cap_sgd: 50000000000`.
- **Cross-border ASEAN factor models** — pull STI plus the [🇨🇳 Eastmoney China Screener](https://apify.com/nexgendata/eastmoney-china-stock-screener?fpr=2ayu9b), [🇰🇷 KOSPI Screener](https://apify.com/nexgendata/kospi-stock-screener?fpr=2ayu9b), and [🇹🇼 TWSE Screener](https://apify.com/nexgendata/twse-stock-screener?fpr=2ayu9b) to build factor models on the full Greater-China + Korea + Taiwan + Singapore universe.
- **Family-office wealth dashboards** — Singapore is a top-3 global wealth-management hub. Drop this dataset into Snowflake / BigQuery / DuckDB and build position-level P/E, dividend yield, and beta dashboards across your Singaporean equity book.
- **Regional REIT factor research** — Singapore REITs are unusually transparent (mandatory 90% distribution, strong Monetary Authority of Singapore oversight). This actor is the cleanest way to pull a current snapshot of S-REIT NAV proxies + yield for academic and quant research.
- **Singaporean ADR / cross-listing tracking** — Several SGX issuers also trade in Hong Kong and the US. Pair `yahoo_symbol` (`D05.SI`) with the [📊 Yahoo Finance Scraper](https://apify.com/nexgendata/yahoo-finance-scraper?fpr=2ayu9b) for historical OHLCV and cross-venue arb screens.
- **Risk-off regime detection** — STI bank weight as a % of total STI is a sensitive ASEAN risk-off indicator. Track sector composition over time using this actor scheduled daily.
- **Academic finance research** — Singapore has cleanly-published market microstructure data and a long, stable index history. This actor gives reproducible market snapshots without scraping headaches.

### ⚙️ Input parameters

| Param | Type | Default | Notes |
|---|---|---|---|
| `market` | enum | `STI` | `STI` (30 index constituents) or `SGX-all` (top-500) |
| `limit` | int | `30` | Max stocks returned (1–500), sorted by market cap descending |
| `min_market_cap_sgd` | int | `0` | Filter: only stocks ≥ this market cap, in SGD base units |
| `sector` | string | `""` | Substring filter on sector / industry / company name |
| `enrich_fundamentals` | bool | `false` | Hit each detail page for PE / dividend yield / beta / sector (slower) |
| `proxyConfiguration` | object | residential | Apify proxy config |

#### Examples

**Just the top 10 STI blue chips** (fast smoke test, ~5s):

```json
{ "market": "STI", "limit": 10 }
```

**Full STI with fundamentals** (~30 stocks, ~20s):

```json
{ "market": "STI", "limit": 30, "enrich_fundamentals": true }
```

**Singapore banks** (yield play — filter on sector keyword):

```json
{ "market": "SGX-all", "limit": 200, "sector": "bank", "enrich_fundamentals": true }
```

**SGX mega-caps only** (≥ S$10 billion market cap):

```json
{ "market": "SGX-all", "limit": 50, "min_market_cap_sgd": 10000000000 }
```

**S-REITs only** (Singapore Real Estate Investment Trusts):

```json
{ "market": "SGX-all", "limit": 200, "sector": "reit", "enrich_fundamentals": true }
```

### 💰 Pricing

This actor uses **pay-per-event** pricing — you only pay for what you actually pull.

- **Actor start:** $0.01 per run
- **Stock record:** $0.25 per stock returned

A full STI snapshot (30 names) with fundamentals costs about **$7.51**. A 200-stock SGX-all screen costs **$50.01**. Compare to:

- Bloomberg Terminal — $24,000/year minimum, plus per-seat fees
- Refinitiv (LSEG) Eikon — $22,000+/year
- FactSet — $12,000+/year per user
- S\&P Capital IQ — $13,000+/year per user

If you're an Asia-allocated analyst running SGX screens once a day, this actor pays back the entire annual data-vendor budget on day one. The pricing reflects the **institutional buyer pool** — this isn't a toy retail tool; it's a Bloomberg replacement for funds, family offices, and wealth managers that don't have a Bloomberg seat for every Asia analyst.

### 🤔 FAQ

**Q: Is the data real-time?**
The source (stockanalysis.com) lags the live SGX tape by 15–20 minutes during market hours (SGT 09:00–17:00). After-hours, it shows the closing snapshot. This is identical to the delay you'd get on Yahoo Finance or Google Finance — sufficient for end-of-day rebalancing, factor research, screening, and dashboards. For sub-second tick data you need a paid SGX licensee.

**Q: Why stockanalysis.com vs scraping SGX directly?**
SGX.com is JavaScript-heavy and ships data through XHR calls with anti-bot protections that change every few months. Stockanalysis.com mirrors the full SGX universe in clean server-rendered HTML — which is *dramatically* more reliable to scrape from cloud IPs. We also link out to the SGX quote page in every record so you can verify any data point against the source.

**Q: What about S-REIT NAV and gearing data?**
S-REIT NAV-per-unit and gearing ratios are published in quarterly REIT-manager reports rather than in stockanalysis.com's standard tables. If you need NAV/gearing per REIT, file a feature request and we'll add a companion actor. For now you can use the `price_sgd` plus `book value` (when available) as an NAV proxy.

**Q: Can I get historical data?**
This actor returns the current snapshot. For historical price series, pair it with the [Yahoo Finance Scraper](https://apify.com/nexgendata/yahoo-finance-scraper?fpr=2ayu9b) using the `yahoo_symbol` field (e.g. `D05.SI`).

**Q: How are SGX ticker codes formatted?**
SGX tickers are 1–5 character alphanumeric codes. The big three banks are `D05` (DBS), `O39` (OCBC), `U11` (UOB). Singtel is `Z74`, SIA is `C6L`. S-REITs typically have a `U` suffix on the unit code (`A17U`, `C38U`, `M44U`, `ME8U`, `BUOU`, `AJBU`). CapitaLand Investment is `9CI`. We pass the raw SGX code unchanged. The Yahoo Finance equivalent is `{symbol}.SI`.

**Q: Are STI constituents updated dynamically?**
Yes — the STI constituent set is pulled at runtime from the public Wikipedia STI page, which is generally kept current within a quarter of any index reshuffle. If you spot a stale entry, file a Wikipedia edit and our actor will pick up the change on the next run.

**Q: Can I filter by sector without `enrich_fundamentals: true`?**
Partially — the sector keyword filter also matches against the company `name` and `symbol`, so `sector: "bank"` will catch DBS / OCBC / UOB / Hong Leong Finance by name alone. But for clean sector / industry tagging across the entire universe you should set `enrich_fundamentals: true`.

**Q: Can I use this commercially?**
The data is aggregated from public sources (stockanalysis.com aggregates from SGX's own free public feeds). You own the output dataset. For redistribution as a paid product or syndication, consult SGX's market-data terms and consider licensing direct from SGX Market Data.

**Q: Is this maintained?**
Yes — NexGenData maintains 140+ Apify actors covering scraping, enrichment, MCP servers, and data automation. We ship fixes within 24 hours of bug reports. File issues via the Apify console's Issues tab on this actor's page.

**Q: Why pay for this when I could scrape SGX myself?**
You could! But you'd spend a weekend wrestling with stockanalysis.com's table HTML structure (which changes every few months), handling the Straits Times Index constituent join (we pull it from Wikipedia), normalizing SGD market caps from abbreviated `166.72B` → `166,720,000,000`, parsing detail pages for PE / dividend / beta, setting up residential proxies for clean IP rotation, and writing the rate-limit retry logic. Or you can pay a fraction of a Bloomberg seat-fee and get clean JSON in 15 seconds.

### 🔗 Related NexGenData actors

This actor is part of a coordinated **pan-Asia equity data fleet**. Combine them for full Greater-China + Korea + Taiwan + Hong Kong + Singapore coverage:

- [🇨🇳 Eastmoney Chinese A-Share Stock Screener](https://apify.com/nexgendata/eastmoney-china-stock-screener?fpr=2ayu9b) — Shanghai, Shenzhen, ChiNext, STAR Market with full fundamentals
- [🇰🇷 KOSPI Stock Screener](https://apify.com/nexgendata/kospi-stock-screener?fpr=2ayu9b) — Korean equities (KOSPI + KOSDAQ) with WICS sectors and foreign-ownership %
- [🇹🇼 TWSE Stock Screener](https://apify.com/nexgendata/twse-stock-screener?fpr=2ayu9b) — Taiwan Stock Exchange with fundamentals, dividend yield, TAIEX subindex
- [🇭🇰 HKEX Hang Seng Stock Screener](https://apify.com/nexgendata/hkex-hang-seng-stock-screener?fpr=2ayu9b) — Hong Kong equities (HSI + HKEX-all) with P/E, P/B, dividend yield, sector
- [📈 Finviz Stock Screener](https://apify.com/nexgendata/finviz-stock-screener?fpr=2ayu9b) — US equities with 70+ filters
- [📊 Yahoo Finance Scraper](https://apify.com/nexgendata/yahoo-finance-scraper?fpr=2ayu9b) — historical OHLCV, statistics, options chain
- [💹 Finance MCP Server](https://apify.com/nexgendata/finance-mcp-server?fpr=2ayu9b) — unified Claude/ChatGPT-tool wrapper for the NexGenData finance fleet

### 📚 More from NexGenData

Visit **[thenextgennexus.com](https://thenextgennexus.com)** for:

- 📝 Tutorials on web scraping, data extraction, and AI workflows
- 🧰 The full catalog of 140+ actors, REST APIs, and MCP servers
- 📦 Ready-made data packs on Gumroad
- 📨 The NexGenData newsletter

### 🚀 Apify affiliate program

New to Apify? Sign up with our [referral link](https://apify.com/nexgendata?fpr=2ayu9b) — you get free platform credits on signup, and you help fund the maintenance of this actor fleet.

***

*Built and maintained by [NexGenData](https://apify.com/nexgendata?fpr=2ayu9b) — 140+ actors covering scraping, enrichment, MCP servers, and automation. Home: [thenextgennexus.com](https://thenextgennexus.com).*

# Actor input Schema

## `market` (type: `string`):

Which Singapore universe to screen: STI (Straits Times Index constituents — the 30 blue-chip Singapore stocks including D05 DBS, O39 OCBC, U11 UOB, Z74 Singtel), or SGX-all (the full top-500 SGX universe by market cap from the main board plus REITs and trust listings).

## `limit` (type: `integer`):

Maximum number of stocks to return, sorted by market cap descending. For STI this caps at 30 constituents. For SGX-all the cap is 500 stocks (top-500 by market cap). Use 10 for a smoke test, 30 for a full STI snapshot, 200+ for broader screens.

## `min_market_cap_sgd` (type: `integer`):

Filter to stocks with market cap above this threshold in Singapore Dollars. Examples: 1000000000 = S$1 billion (mid-cap floor), 10000000000 = S$10 billion (large-cap floor), 50000000000 = S$50 billion (mega-cap, basically DBS/OCBC/UOB only). Leave at 0 for no filter.

## `sector` (type: `string`):

Optional case-insensitive substring filter applied to sector, industry, and company name. Examples: 'bank', 'reit', 'telecom', 'finance', 'real estate', 'dbs', 'singtel'. Leave blank for no filter. Note: sector matching requires enrich\_fundamentals=true (for the per-stock sector/industry tags from the detail pages).

## `enrich_fundamentals` (type: `boolean`):

If true, fetch each stock's detail page on Stockanalysis.com to extract PE ratio, forward PE, dividend yield, beta, 52-week range, EPS, shares outstanding, and sector classification. Adds ~1 HTTP request per stock and roughly doubles runtime. Required if you want to filter by sector.

## `proxyConfiguration` (type: `object`):

Apify proxy configuration. Defaults to residential proxy for reliable access to Singapore financial data from outside the SG region.

## Actor input object example

```json
{
  "market": "STI",
  "limit": 30,
  "min_market_cap_sgd": 0,
  "enrich_fundamentals": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "market": "STI",
    "limit": 30,
    "min_market_cap_sgd": 0,
    "sector": "",
    "enrich_fundamentals": false,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/sgx-singapore-stock-screener").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "market": "STI",
    "limit": 30,
    "min_market_cap_sgd": 0,
    "sector": "",
    "enrich_fundamentals": False,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/sgx-singapore-stock-screener").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "market": "STI",
  "limit": 30,
  "min_market_cap_sgd": 0,
  "sector": "",
  "enrich_fundamentals": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call nexgendata/sgx-singapore-stock-screener --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/sgx-singapore-stock-screener",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "🇸🇬 SGX Singapore Stock Screener — STI Quotes & Fundamentals",
        "description": "SGX Singapore stock screener API — Straits Times Index (STI) live quotes, market cap (SGD), P/E, P/B, dividend yield, REIT yield, ROE, sector. DBS, OCBC, UOB, CapitaLand REITs universe. Bloomberg Terminal / FactSet / Refinitiv Eikon alternative for hedge funds & quants. Pay-per-result.",
        "version": "0.0",
        "x-build-id": "Ae7WqEyTAoGlNtf60"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/nexgendata~sgx-singapore-stock-screener/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-nexgendata-sgx-singapore-stock-screener",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/nexgendata~sgx-singapore-stock-screener/runs": {
            "post": {
                "operationId": "runs-sync-nexgendata-sgx-singapore-stock-screener",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/nexgendata~sgx-singapore-stock-screener/run-sync": {
            "post": {
                "operationId": "run-sync-nexgendata-sgx-singapore-stock-screener",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "market": {
                        "title": "Market / index",
                        "enum": [
                            "STI",
                            "SGX-all"
                        ],
                        "type": "string",
                        "description": "Which Singapore universe to screen: STI (Straits Times Index constituents — the 30 blue-chip Singapore stocks including D05 DBS, O39 OCBC, U11 UOB, Z74 Singtel), or SGX-all (the full top-500 SGX universe by market cap from the main board plus REITs and trust listings).",
                        "default": "STI"
                    },
                    "limit": {
                        "title": "Limit",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of stocks to return, sorted by market cap descending. For STI this caps at 30 constituents. For SGX-all the cap is 500 stocks (top-500 by market cap). Use 10 for a smoke test, 30 for a full STI snapshot, 200+ for broader screens.",
                        "default": 30
                    },
                    "min_market_cap_sgd": {
                        "title": "Min market cap (SGD)",
                        "minimum": 0,
                        "maximum": 1000000000000,
                        "type": "integer",
                        "description": "Filter to stocks with market cap above this threshold in Singapore Dollars. Examples: 1000000000 = S$1 billion (mid-cap floor), 10000000000 = S$10 billion (large-cap floor), 50000000000 = S$50 billion (mega-cap, basically DBS/OCBC/UOB only). Leave at 0 for no filter.",
                        "default": 0
                    },
                    "sector": {
                        "title": "Sector / industry / name keyword",
                        "type": "string",
                        "description": "Optional case-insensitive substring filter applied to sector, industry, and company name. Examples: 'bank', 'reit', 'telecom', 'finance', 'real estate', 'dbs', 'singtel'. Leave blank for no filter. Note: sector matching requires enrich_fundamentals=true (for the per-stock sector/industry tags from the detail pages)."
                    },
                    "enrich_fundamentals": {
                        "title": "Enrich with P/E, P/B, dividend yield, sector (slower)",
                        "type": "boolean",
                        "description": "If true, fetch each stock's detail page on Stockanalysis.com to extract PE ratio, forward PE, dividend yield, beta, 52-week range, EPS, shares outstanding, and sector classification. Adds ~1 HTTP request per stock and roughly doubles runtime. Required if you want to filter by sector.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Apify proxy configuration. Defaults to residential proxy for reliable access to Singapore financial data from outside the SG region.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
