/ writing / singapore markets

SGX's API has a bouncer. So bring a browser.

2026-08-25 · cynix · 3 min read

Everything listed companies must tell the market lands on SGX's announcements page: earnings, share buy-backs, CEO interest changes, placements. Each filing links to a PDF on links.sgx.com. And the JSON API behind the page sits behind Akamai, which denies datacenter traffic outright — tokens, headers, proxies, none of it matters. We tried.

So this actor does what a human does: drives a real headless browser through a proxy to the announcements page, waits for the SPA to render, and reads the table. Same filings a trader sees, as typed rows.

{
  "daysBack": 3,
  "issuerFilter": "dbs",
  "maxItems": 100
}

One row per filing:

{
  "ann_date": "25 Aug 2026",
  "issuer": "OVERSEA-CHINESE BANKING CORP",
  "title": "Disclosure of Interest::Changes in Interest of Substantial Shareholder",
  "pdf_url": "https://links.sgx.com/1.0.0/corporate-announcements/…"
}

Where it earns its keep

Compliance monitoring: every filing for your watchlist, minutes after publication. Event-driven research: catch buy-backs and placements while they are still news. NLP pipelines: titles split cleanly on SGX's category::headline convention, PDFs one hop away. Give it 2 GB of RAM — Chromium eats — and keep the date window short for scheduled monitoring.

The honest limits: proxy traffic is mandatory (the actor ships configured for Apify proxy groups), and extraction speed follows the portal's render time. Twenty filings in about twenty seconds is typical.

Try it: sgx announcements watcher on Apify — every SGX filing, PDF link included.