DEV Community

NexGenData
NexGenData

Posted on • Originally published at thenextgennexus.com

HKEX Listed Company Announcements API: Hong Kong Disclosure Monitoring at Scale

中文版: 中文版本

TL;DR. HKEXnews is the canonical disclosure portal for all ~2,600 companies listed on the Hong Kong Stock Exchange's Main Board and GEM. Every regulatory announcement — earnings, profit warnings, connected-party transactions, change-of-substantial-shareholder, share buybacks, suspension notices — must be filed here before market sensitive distribution. HKEX exposes a basic announcement listing on the site, but no full-coverage public API. For compliance teams running cross-border A/H surveillance, equity research desks tracking dual-listed names, and SFC-regulated managers running their own disclosure monitoring, you need announcements as structured data. This guide covers the HKEXnews structure, the disclosure types that matter, and a working Python pipeline using the HKEX News Announcements actor.

How HKEX disclosure actually works

HKEX's continuous-disclosure obligations are set out in the Main Board Listing Rules (Chapters 13 and 17 in particular) and the parallel GEM Rules. Listed issuers must publish "inside information" — anything that a reasonable person would consider material to share price — through HKEXnews before any other distribution channel. The portal accepts filings around the clock; trading-sensitive announcements typically appear before the 9:30am HKT open or after the 4:00pm close.

Each announcement has:

  • Stock code — the four-digit HKEX ticker (00700 = Tencent, 00005 = HSBC)
  • Headline category — HKEX's structured taxonomy (Announcements and Notices, Circulars, Listing Documents, Monthly Returns, Next Day Disclosure Returns, etc.)
  • Document type code — within category, e.g., "Profit Warning," "Connected Transaction," "Trading Halt"
  • Published date/time — HKT timestamp
  • PDF link — the actual filing document

The HKEXnews search at https://www1.hkexnews.hk/search/titlesearch.xhtml exposes filtering by stock code, date range, headline category, and document type — driven by an internal XHR endpoint that returns paginated JSON results. The endpoint is public and stable but undocumented for third-party use.

Disclosure types that matter for monitoring

  • Profit warning / profit alert — the canonical pre-announcement of material earnings deviation. Almost always moves the stock at next open.
  • Connected transaction announcements — Chapter 14A. Hong Kong's RPT regime is materially stricter than US 8-K Item 1.01 — a meaningful share of HK announcement volume.
  • Change of substantial shareholder — disclosure of interest filings under Part XV of the SFO.
  • Trading halt / suspension — frequently precedes a material announcement; the suspension itself is the signal.
  • Share buyback monthly returns — under the Buybacks Code, companies must disclose monthly repurchase activity.
  • Inside information announcements — the catch-all under SFO §307 covering anything materially price-sensitive that doesn't fit the structured categories.

Why cross-border matters

The single biggest reason to pull HKEX programmatically is cross-listing surveillance. Approximately 150 mainland Chinese issuers maintain both an A-share (mainland) and an H-share (Hong Kong) listing — Bank of China, Ping An Insurance, ICBC, BYD, and most large state-owned enterprises. Material announcements must be published on both venues but timing is not always perfectly aligned, and the A/H price premium (typically tracked via the Hang Seng AH Premium Index) is one of the most-watched cross-border indicators in Asian equities.

For desks running dual-listed strategies, pulling HKEX announcements in parallel with A-share data from Eastmoney turns HKEXnews from a static portal into a real-time information edge.

Working Python example

The HKEX News Announcements actor wraps the HKEXnews search with stock-code resolution, headline taxonomy normalization, and PDF link extraction. Curl:


    curl -X POST "https://api.apify.com/v2/acts/nexgendata~hkex-news-announcements/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"stockCodes": ["00700","00005","09988"], "since": "2026-05-01", "categories": ["PROFIT_WARNING","INSIDE_INFORMATION"]}'

Enter fullscreen mode Exit fullscreen mode

Python — A/H dual-listed monitoring:


    import os, json, urllib.request

    APIFY_TOKEN = os.environ["APIFY_TOKEN"]
    ACTOR = "nexgendata~hkex-news-announcements"

    ah_dual = ["00939","01398","02628","00386","00857","02318","02628","01088"]

    payload = json.dumps({
        "stockCodes": ah_dual,
        "since": "2026-05-01",
        "categories": ["PROFIT_WARNING","INSIDE_INFORMATION",
                        "CONNECTED_TRANSACTION","SHARE_BUYBACK"],
    }).encode("utf-8")

    url = f"https://api.apify.com/v2/acts/{ACTOR}/run-sync-get-dataset-items?token={APIFY_TOKEN}"
    req = urllib.request.Request(url, data=payload, method="POST",
                                  headers={"Content-Type": "application/json"})

    with urllib.request.urlopen(req, timeout=600) as r:
        items = json.loads(r.read())

    for a in items:
        print(f"{a['publishedAt']} | {a['stockCode']} {a['issuerName']} | {a['category']}")
        print(f"   {a['headline']}")
        print(f"   {a['pdfUrl']}")

Enter fullscreen mode Exit fullscreen mode

Returned shape:


    {
      "stockCode": "00700",
      "issuerName": "TENCENT HOLDINGS LIMITED",
      "publishedAt": "2026-05-29T18:30:00+08:00",
      "category": "ANNOUNCEMENTS_AND_NOTICES",
      "documentType": "INSIDE_INFORMATION",
      "headline": "Inside Information - Voluntary Announcement Regarding ...",
      "pdfUrl": "https://www1.hkexnews.hk/listedco/listconews/sehk/2026/0529/...pdf",
      "language": "en"
    }

Enter fullscreen mode Exit fullscreen mode

How this compares to commercial feeds

Source Coverage Structured Annual cost
Bloomberg Terminal (HK announcements) Full + Bloomberg news overlay Yes ~$24k per seat
Refinitiv Eikon (HK filings) Full Yes ~$22k per seat
FactSet Full Yes ~$15k–$25k per seat
HKEXnews own site / Bahasa search Full No — HTML + PDF only Free, manual
HKEX's iASR API Limited — issuer self-service Yes but restricted Subscription, HK-issuer-only practical use
HKEX Announcements actor Full HKEXnews coverage Yes — JSON normalized PPE per announcement

HKEX's own iASR (Issuer Annual Report) system is designed for issuers preparing filings, not for third-party monitoring — its API is not the right tool if what you want is "tell me every profit warning in real time." For that use case, the public HKEXnews search is the right source; the question is just whether to write the scraper yourself or pay PPE.

SFC compliance use cases

SFC-licensed asset managers running long-short HK strategies have a continuous obligation to monitor disclosures on positions held. For a 200-name portfolio, manual HKEXnews polling is workable but error-prone — a profit warning published at 18:30 HKT can sit unread until the next trading day. Automated polling at 5-minute cadence with email alerts on the issuer's holdings list closes that gap for under $50/month in PPE costs.

Adjacent surveillance feeds you'll likely want: A-share data for cross-border, Chinese ADRs for US triangulation, and (for global mandates) the SGX announcements feed covering Singapore.

Trading-halt detection patterns

HK trading halts under the Listing Rules are typically announced via a short "Trading Halt" notice followed within hours by the underlying inside-information announcement. The 30-minute window between halt and substantive announcement is the highest-value real-time monitoring window for HK equity research. Polling cadence under one minute and a webhook downstream of the actor turns this into a usable signal source rather than a post-hoc record.

Language considerations

HKEX requires bilingual filings for Main Board issuers — English and Traditional Chinese versions are typically published simultaneously. The actor returns both PDF URLs when available; downstream pipelines that key off English headlines should fall back to the Chinese version for issuers whose English filing lags.

Get started: Pull your first HKEX announcement batch free at the HKEX News Announcements actor page. Filter by stock code, headline category, or date range.

Related Reading

More from this China / APAC series:

From the SEC/SGX/ASX and PR-newswire series:

Top comments (0)