# SGX Market Data Scraper — Stocks, ETFs, REITs & Indices (`hipersoft/sgx-market-data-scraper`) Actor

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. Public API, no key.

- **URL**: https://apify.com/hipersoft/sgx-market-data-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Categories:** Other, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.003 / quote scraped

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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Market Data Scraper — Stocks, ETFs, REITs & Indices

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**.

![SGX Market Data Scraper input — pick securities or indices and filter by instrument type in the Apify Console](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/sgx-market-data-scraper-input.png)

### 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

```json
{ "dataType": "securities", "securityTypes": ["reits", "etfs"], "maxItems": 100000 }
```

Or pull all indices:

```json
{ "dataType": "indices" }
```

### Output

![SGX Market Data Scraper output example — SGX securities and indices quotes as structured JSON](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/sgx-market-data-scraper-output.png?v=1)

```json
{
  "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](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JavaScript/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/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.

# Actor input Schema

## `dataType` (type: `string`):

securities = all listed instruments (stocks, ETFs, REITs, ...); indices = all SGX indices.

## `securityTypes` (type: `array`):

Filter securities by instrument type. Leave empty for ALL types.

## `maxItems` (type: `integer`):

Maximum rows to return.

## Actor input object example

```json
{
  "dataType": "securities",
  "securityTypes": [],
  "maxItems": 100000
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/sgx-market-data-scraper").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/sgx-market-data-scraper").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 '{}' |
apify call hipersoft/sgx-market-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=hipersoft/sgx-market-data-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/RNMdL4H7zCOE4Kd9C/builds/0GeCvA0ykpyMLkHje/openapi.json
