SGX Market Data Scraper
hipersoft/sgx-market-data-scraper
Scrape live Singapore Exchange (SGX) market data: every listed security — stocks, ETFs, REITs, business trusts, ADRs, warrants, DLCs — plus all indices, with price, change, OHLC, bid/ask and volume.
Total users
3Monthly users
1Total runs
99Per quote scraped
$0.003Last rebuilt
Oct 26, 2026Overview
Scrape live Singapore Exchange (SGX) market data into clean JSON, CSV or Excel. Covers every listed security — stocks, ETFs, REITs, business trusts, ADRs, company & structured warrants, daily-leverage certificates — plus all SGX indices — with price, change, % change, OHLC, bid/ask and volume. Fast and reliable.
Perfect for Singapore equities research, portfolio tracking, market dashboards, quant datasets and REIT/ETF screening.

What you get
- 📈 Every SGX instrument — 1,200+ securities across 11 instrument types, in one run
- 🏦 All indices — 800+ SGX indices including the Straits Times Index (STI)
- 💵 Live quote fields — last, change, % change, open, high, low, previous close, bid/ask, volume, traded value
- 🎯 Filter by type — pull only stocks, only REITs, only ETFs, etc.
- ⚡ Fast — fast and reliable
Example input
{ "dataType": "securities", "securityTypes": ["reits", "etfs"], "maxItems": 100000 }
Or pull all indices:
{ "dataType": "indices" }
Output

{
"code": "D05",
"name": "DBS",
"issuer": "DBS",
"type": "stocks",
"board": "MAINBOARD",
"currency": "SGD",
"last": 74.85,
"change": -0.15,
"changePercent": -0.2,
"open": 74,
"dayHigh": 74.94,
"dayLow": 74,
"previousClose": 75,
"bid": 74.84,
"ask": 74.85,
"volume": 3873.142,
"tradingTime": "2026-07-30T09:16:00+08:00",
"url": "https://www.sgx.com/securities/stock-screener?code=D05",
"collectedAt": "2026-07-30T12:00:00.000Z"
}
Output schema
Securities and indices share most fields; a few fields are specific to one or the other, as noted.
| Field | Type | Description |
|---|---|---|
code |
string | Instrument code — SGX stock code or index ID. |
name |
string | Instrument or index name. |
issuer |
string | Issuer name (securities). |
type |
string | Instrument type, e.g. stocks, etfs, reits, or index. |
board |
string | Listing board, e.g. MAINBOARD (securities). |
currency |
string | Trading currency (securities). |
last |
number | Last traded price. |
change |
number | Absolute price change on the day. |
changePercent |
number | Percentage price change on the day. |
open |
number | Opening price. |
dayHigh |
number | Day's high price. |
dayLow |
number | Day's low price. |
previousClose |
number | Previous session's closing price. |
bid |
number | Current bid price (securities). |
bidVolume |
number | Volume at the bid (securities). |
ask |
number | Current ask price (securities). |
askVolume |
number | Volume at the ask (securities). |
volume |
number | Traded volume. |
tradedValue |
integer | Traded value for the day (securities). |
yearHigh |
number | 52-week high (indices). |
yearLow |
number | 52-week low (indices). |
group |
string | Index group/category (indices). |
relatedProduct |
string | Related product name for the index (indices). |
tradingTime |
string (ISO date) | Timestamp of the last trade or update. |
url |
string (URL) | Link to the instrument on sgx.com. |
sourceUrl |
string (URL) | SGX source the row was pulled from. |
collectedAt |
string (ISO date) | When this Actor collected the data. |
Input fields
| Field | Description |
|---|---|
dataType |
securities (all listed instruments) or indices (all SGX indices) |
securityTypes |
Filter securities by type: stocks, etfs, reits, businesstrusts, adrs, warrants, DLCs… (empty = all) |
maxItems |
Maximum rows to return |
FAQ
Do I need an SGX account or API key?
No. Just choose securities or indices and run — no login, account, or API key is required.
Can I pull only certain instrument types?
Yes. Set securityTypes to any of stocks, etfs, reits, businesstrusts, adrs, warrants, DLCs and more; leave it empty to get every listed instrument.
What's the output format? Structured JSON — one clean record per security or index with price, change, OHLC, bid/ask and volume. Export it as JSON, CSV, Excel, or via the API.
Can I integrate this with other tools? The SGX Market Data Scraper can be connected with almost any cloud service or web app thanks to integrations on the Apify platform. It works with Make, Zapier, Slack, Airbyte, GitHub, Google Drive and many more, plus the Apify API, JavaScript/Python clients and MCP. Or use webhooks to trigger an action whenever a run finishes.
Notes
Uses only SGX's public JSON market-data endpoints. Market data is © Singapore Exchange and provided for informational purposes — respect SGX's terms and any redistribution restrictions.
Input
| Field | Type | Description |
|---|---|---|
dataTypeData type | string · securities, indices | securities = all listed instruments (stocks, ETFs, REITs, ...); indices = all SGX indices. Default: "securities" |
securityTypesSecurity types | array | Filter securities by instrument type. Leave empty for ALL types. |
maxItemsMax rows | integer | Maximum rows to return. Default: 100000 |
API
curl -X POST "https://api.apify.com/v2/acts/hipersoft~sgx-market-data-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"maxItems": 100
}'from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("hipersoft/sgx-market-data-scraper").call(run_input={
"maxItems": 100
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('hipersoft/sgx-market-data-scraper').call({
"maxItems": 100
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);Pricing
| Event | Price | Paid plans from |
|---|---|---|
| Quote scraped One security or index quote scraped with price and stats. | $0.003 | $0.0015 |
| API request One SGX market-data API request. | $0.001 | $0.001 |
You pay only for what the run returns. Set a maximum cost per run and it stops cleanly at that limit.
Related scrapers
Carousell Scraper
Scrape Carousell search listings: title, price, condition, location, seller, photo and URL. Requires your own Carousell app token.
242 runs · 2 users · $0.003 / listing scrapedGoogle Flights Scraper
Scrape flight options from Google Flights by route and date: airline, flight number, departure and arrival times, duration, stops, layovers and price. One-way or round-trip, any cabin and currency. For travel and price monitoring.
216 runs · 4 users · $0.004 / flight scrapedPinterest Scraper
Search Pinterest and scrape pins (title, description, destination link, image, pinner, board, saves), boards and users. Fast. For visual research, e-commerce, trend and marketing analysis.
151 runs · 2 users · $0.0034 / item scrapedGoogle Trends Scraper
Scrape Google Trends for any keyword: interest over time, related and rising queries, and interest by region. Per country and timeframe. For SEO, market and trend research. No setup.
139 runs · 6 users · $0.001 / keyword scrapedAliExpress Product Search Scraper
Search AliExpress by keyword and export one clean row per product — title, sale price, original price, image and product URL. Export to JSON, CSV or Excel.
135 runs · 3 users · $0.003 / product scrapedGoogle Maps Scraper
Search Google Maps and scrape places: name, category, full address, city, coordinates, rating, phone, website, Place ID and map link. Fast browser-free via Google's internal endpoint, no setup. For local lead generation and market research.
130 runs · 2 users · $0.005 / place scrapedSend the site and the fields. We build it and you get it first.