AAStocks Scraper – Hong Kong Stock Quotes & Financial News
Pricing
from $2.00 / 1,000 news items
AAStocks Scraper – Hong Kong Stock Quotes & Financial News
Scrape AAStocks without an API: Hong Kong stock real-time quotes (price, change, volume, P/E, market cap, 52-week high/low) and financial news listings. Bulk-paste tickers; export JSON/CSV/Excel for financial analysis and dashboards.
Pricing
from $2.00 / 1,000 news items
Rating
0.0
(0)
Developer
Chad
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
AAStocks Scraper | Hong Kong Stock Quotes & Financial News (No API, No Login)
One Actor covers two kinds of AAStocks (aastocks.com) Hong Kong finance data: real-time stock quotes (stock code, latest price, change, volume, market cap, P/E, etc.) and financial news (category listings such as latest news, top news, bullish/bearish news). No login required, no API token needed — it parses public web pages (HKEX's official scraper charges $250/1000 rows; this one reads public pages, so the price is a fraction of that). Everything runs through CheerioCrawler to parse HTML, no browser involved — low cost, fast.
Who it's for: engineers doing HK stock sentiment/quant analysis, anyone who needs real-time HK stock quotes to feed a dashboard, people tracking HK financial news flow, market research report writers, researchers who need an HK stock dataset, and anyone building a side project.
What you get
Every record returns the fields below (missing values are always null — no field is dropped; the quote/news field sets share one table, so whichever fields the current mode doesn't fill in are always null):
| Field | Description | Example | Available in |
|---|---|---|---|
stock_code | HK stock code (zero-padded to 5 digits) | 00700 | quote only |
symbol | AAStocks internal code | 00700.HK | quote only |
name | Stock name | TENCENT | quote only |
last_price | Latest price | 431.2 | quote only |
change | Change (in dollars) | 1 | quote only |
change_pct | Change (%) | 0.232 | quote only |
day_high | Day high | 445.8 | quote only |
day_low | Day low | 431.2 | quote only |
day_open | Opening price | 433 | quote only |
prev_close | Previous close | 430.2 | quote only |
week52_high | 52-week high | 683 | quote only |
week52_low | 52-week low | 411 | quote only |
volume | Trading volume (shares, B/M/K converted) | 24960000 | quote only |
turnover | Turnover (HKD, B/M/K converted) | 10900000000 | quote only |
pe_ratio | Price/earnings ratio (P/E) | 15.653 | quote only |
market_cap | Market cap (HKD, B/M/K converted) | 3920570000000 | quote only |
quote_time | Quote timestamp (always null in v1.0) | — | — |
quote_url | Individual stock quote page URL | http://www.aastocks.com/en/stocks/quote/detail-quote.aspx?symbol=00700 | quote only |
news_id | Unique news ID | NOW.1531802 | news only |
title | News title | HKD996.9M Southbound Trading Net Outflow from HUA HONG GRACE | news only |
summary | News summary (listing-page excerpt, often truncated) | — | news only |
content | Full news article text (always null in v1.0) | — | news only |
source | News source (always AASTOCKS) | AASTOCKS | news only |
category | Category (always null in v1.0) | — | news only |
related_stocks | Array of related HK stock codes mentioned in the article | ["00700", "01810"] | news only |
keyword | Keyword tag (always null in v1.0) | — | news only |
published_at | Publish time (ISO 8601, converted to UTC) | 2026-07-03T10:25:00.000Z | news only |
news_url | News article URL | http://www.aastocks.com/en/stocks/news/aafn-con/NOW.1531802/latest-news/AAFN | news only |
source_mode | Which mode this record came from | quote, news | both |
source_query | Query used when scraping | 00700, aafn/latest-news | both |
scraped_at | Scrape timestamp (ISO 8601) | 2026-07-04T00:00:00.000Z | both |
Important (full disclosure):
quotemode only fills quote-related fields;news-related fields are alwaysnull, and vice versa.quote_time(the quote timestamp) is alwaysnullin v1.0 — AAStocks' static HTML response has no reliable "quote/updated time" node; the timestamp for a live price is likely updated client-side via JavaScript after page load, not present in the initial HTML response. Rather than guess and mislead you, v1.0 always returnsnull.content(the full article text) is alwaysnullin v1.0 — v1.0 only scrapes the news category listing page, not each article's detail page. The listing page itself shows an excerpt (often truncated with "..."), which maps tosummary; stuffing a truncated excerpt intocontentwould mislead you into thinking you got the full text, so the two fields are kept separate andcontentis set tonull.categoryandkeywordare alwaysnullin v1.0 — the listing page has no reliable per-item category/keyword tag to parse.related_stocksis parsed by matching(stock code.HK)-style in-text markers found in the news title/summary text — it is not an official tag field.
Two modes, one scraper
| Mode | What it does | Billing event | Price |
|---|---|---|---|
| 📈 quote | Real-time quotes by HK stock code | product-detail (per item) | $0.008 |
| 📰 news | Financial news category listing (e.g. latest, top, bullish/bearish news) | search-listing (per item) | $0.002 |
Regardless of which mode you run, every Run start additionally charges a one-time actor-start fee of $0.005. All charges are billed only after data is successfully written to the dataset; the Run log prints total_items / charged / skipped at the end for reconciliation.
Run one mode per run — just pick it from the dropdown in the Apify Console.
Input fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
mode | enum | recommended | news | Choose one of quote (stock quotes) / news (financial news). |
stockCodes | string[] | required for quote | — | HK-listed stock codes, e.g. 700 (Tencent), 5 (HSBC Holdings), 1 (CK Hutchison). Auto zero-padded to 5 digits. Up to 100 per run. |
newsCategory | string | optional | aafn/latest-news | Financial news category path. Verified working: aafn/latest-news, aafn/top-news, aafn/popular-news, aafn/recommend-news, aafn/positive-news, aafn/negative-news, aafn/research-report, aafn/result-announcement. |
dateFrom | string | optional | — | Only keep news published on or after this date, format YYYY-MM-DD (Hong Kong time). news mode only. |
dateTo | string | optional | — | Only keep news published on or before this date, format YYYY-MM-DD (Hong Kong time). news mode only. |
bulkInput | string | optional | — | One per line, press Enter, no quotes or commas. Used as stock codes in quote mode, automatically merged into stockCodes at runtime. |
maxItems | integer | optional | 50 | In news mode, max items per category (v1.0 is single-page only, actual cap depends on how many items AAStocks shows per page, roughly 20). Not applicable in quote mode, which depends on the number of stock codes. |
Examples
📈 Real-time stock quotes (multiple codes)
{"mode": "quote","stockCodes": ["00700", "00005"]}
📰 Financial news (latest news)
{"mode": "news","newsCategory": "aafn/latest-news","maxItems": 20}
📋 Bulk-paste stock codes
{"mode": "quote","bulkInput": "700\n5\n1\n9988","maxItems": 50}
Notes
- Public data only. Both the AAStocks individual stock quote pages and news listing pages are public webpages; no login and no AAStocks account required.
- No login / no API token. Fill in the input and run — no keys to configure.
- Parses public HTML pages, no browser. Uses
CheerioCrawlerexclusively againstaastocks.com's server-rendered pages, saving a large chunk of compute cost compared to Playwright. - Polite to the site. Concurrency ≤5, failed requests retry with exponential backoff up to 3 times — it does not hammer AAStocks' servers.
- v1.0 does not support keyword news search. AAStocks' keyword search is an ASP.NET form postback (POST + ViewState), not a simple URL parameter; v1.0 doesn't support it yet, planned for v1.1. For now, use
newsCategoryto browse by category. - v1.0 news listings are single-page only. Testing found no usable pagination mechanism on AAStocks' news listing pages — each category only returns the items shown on that single page (roughly 20 or so);
maxItemsis only an upper bound and cannot be used to fetch more via pagination. - How to provide stock codes: just give the number, e.g.
700,5— the scraper automatically zero-pads it to AAStocks' 5-digit format (00700); inputs already in 5-digit form can also be pasted directly.
FAQ
Q: Why is there no quote time (quote_time)?
Testing found no reliable "quote/updated time" node in the static HTML response of AAStocks' real-time quote pages; the timestamp for a live price may be updated client-side via JavaScript after page load, and isn't present in the initial HTML response. To avoid guessing a field incorrectly and misleading you, v1.0 always returns null.
Q: Why is the news content (full text) null?
v1.0 only scrapes the news category listing page and does not visit each article's detail page for the full text. The listing page itself displays a truncated excerpt (often cut off with "..."), which is already mapped to the summary field; stuffing the truncated excerpt into content would mislead you into thinking you got the full article, so the two are deliberately kept separate and content is set to null.
Q: Can I search news by keyword?
Not in v1.0. Testing found that AAStocks' news search function is a traditional ASP.NET form postback (server-side ViewState + POST), not a simple URL-parameter query; handling it directly with CheerioCrawler carries risk (ViewState may be time-sensitive). v1.0 uses newsCategory category browsing as a substitute for now; keyword search is planned for v1.1.
Q: How is billing calculated?
Each Run start charges actor-start once ($0.005); quote mode charges product-detail ($0.008) per quote; news mode charges search-listing ($0.002) per news item. All charges are billed only after data is successfully written to the dataset, and the Run log prints the actual charged item count.
Q: What if I can't get any data?
For quote mode, check whether the stock code is a valid HK-listed stock code (codes with no quote found are skipped and not charged); for news mode, check whether the category path is misspelled.
Deploy
apify login # first time: paste your Apify token (never written to the repo)apify push # build and upload to the Apify Store
After publishing, set the PPE event prices in Apify Console → Monetization:
actor-start $0.005, product-detail $0.008, search-listing $0.002.
Disclaimer
This scraper only collects publicly visible AAStocks (aastocks.com) Hong Kong stock quote and financial news data, for research and personal use only, not for any unauthorized commercial resale. Please ensure your use complies with aastocks.com's Terms of Service and your local laws. All stock prices and financial information do not constitute investment advice — investment decisions are your own responsibility and at your own risk. This Actor makes no guarantee about the accuracy, timeliness, or completeness of the data — always refer to the live AAStocks website for current stock prices and news content.
AAStocks scraper, Hong Kong stock quotes, HK stock price API, HKEX data, Hong Kong financial news, HK stock market data, real-time HK quotes