East Money Scraper
Pricing
from $3.00 / 1,000 results
East Money Scraper
Scrape East Money (eastmoney.com) - China's largest finance portal. Search finance news, get real-time stock quotes and historical K-line data from the public push2 JSON APIs, browse market news by column, and resolve quotes from stock page URLs. No login required.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Scrape East Money (eastmoney.com) — China's largest finance portal. News search, real-time stock quotes + historical K-line data from the public push2 JSON APIs, market news flash feed (kuaixun) by column, quote resolution from stock page URLs, and market rankings. HTTP-only, no login, no proxy required by default.
What this actor does
- Six modes:
search(news search, default),byStock(quote + K-line history),marketNews(kuaixun flash feed by column),byStockUrl(quote from quote-page URLs),topGainers(market ranking by change % / turnover / amount / market cap / main net inflow / volume / PE / volume ratio),byStockName(resolve a Chinese stock name via the suggest API → quote + K-line) - Real-time quotes from
push2delay.eastmoney.com/api/qt/stock/get— price, change %, open/high/low/prev close, volume, amount, turnover rate, volume ratio, PE (dynamic/static/TTM), PB, market caps, limit-up / limit-down prices, net asset per share - K-line history from the
push2hisAPI family with multi-host fallback (push2his→push2his2→push2) — the hosts are latency-flaky and rotate; a single failing host no longer kills the candle data. Daily/weekly/monthly periods and price adjustment (前复权/后复权/不复权) are selectable - News search via
search-api-web.eastmoney.comwith automatic fallback to theso.eastmoney.comHTML search - Rankings cover Shanghai / Shenzhen / all A-shares / ChiNext / US stocks, sorted by 8 fields, ascending or descending (top gainers and top losers)
- Auto-escalation: on 403/429 the actor lazily engages the free Apify AUTO datacenter proxy and retries with backoff
- Typed error records for invalid stock codes / URLs / unresolvable names — nothing is silently dropped
- Empty fields are omitted (
strip_nullsbefore every push)
Output fields
Stock records (recordType: "stock"):
stockCode,stockName,secid(e.g.1.600519),price,change,changePct,open,high,low,prevClose,volume,amount,turnoverRate,volumeRatio,peRatio,peStatic,peDynamic,pbRatio,totalMarketCap,floatMarketCap,totalShares,floatShares,amplitude,limitUp,limitDown,navPerShare, plusmarket/marketCap/mainNetInflowon ranking records,sourceUrl
K-line records (recordType: "kline"):
klineDate,open,close,high,low,volume,amount,amplitude,changePct,change,turnover, plusstockCode,stockName,sourceUrl
News records (recordType: "news"):
title,digest,newsUrl,publishTime,imageUrl,column,sourceUrl- Search mode also emits
newsCode(article code) andsource(publisher, e.g. 证券时报网) - MarketNews mode also emits
newsId(kuaixun item id) andcommentCount
Error records (recordType: "error"):
input,message— emitted for invalid codes/URLs instead of silent drops
All data records carry recordType, scrapedAt, sourceUrl; error records are diagnostics (input, message) without a sourceUrl.
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | select | search | search / byStock / marketNews / byStockUrl / topGainers / byStockName |
searchQuery | text | 贵州茅台 | News keyword (mode=search) |
searchSort | select | default | default (relevance — honors the keyword) or time (newest; note: upstream time currently returns the site-wide hot feed and ignores the keyword) |
stockCodes | array | ["600519"] | Any form: 600519, 1.600519, SH600519, SZ000001 |
stockNames | array | ["贵州茅台"] | Chinese stock names (mode=byStockName) |
stockUrls | array | quote.eastmoney.com URL | Quote page URLs (mode=byStockUrl) |
includeKline | bool | true | Emit K-line candles with quotes |
klineDays | int (1–500) | 60 | Candles per stock |
klinePeriod | select | day | day / week / month candle granularity |
adjustPrice | select | qfq | qfq 前复权 / hfq 后复权 / none 不复权 |
newsColumn | select | 102 | Kuaixun column: 100 all, 102 finance, 103 stocks, 104 funds, 105 bonds, 106 gold, 107 forex, 110 global, 111 banking, 112 insurance, 113 real estate, 114 auto, 115 tech, 118 food & beverage, 120 travel, 122 sports, 125 health, 127 agriculture, 128 energy |
marketRank | select | allA | shA / szA / allA / gem (ChiNext) / us (NASDAQ/NYSE/AMEX) — mode=topGainers |
rankSort | select | changePct | changePct / turnover / amount / volume / marketCap / mainNetInflow / volumeRatio / peRatio |
rankDirection | select | desc | desc (top of the field) or asc (bottom — e.g. top losers) |
minPrice / maxPrice | number (0–100000) | – | Price filter |
minChangePct / maxChangePct | number (−100–100) | – | Change % filter |
containsKeyword | text | – | Substring filter on news title / stock name / digest |
maxItems | int (1–1000) | 50 | Hard cap |
Examples
{ "mode": "search", "searchQuery": "新能源", "maxItems": 20 }{ "mode": "byStock", "stockCodes": ["600519", "SZ000001", "0.300750"], "includeKline": true, "klineDays": 30, "klinePeriod": "week" }{ "mode": "byStockName", "stockNames": ["贵州茅台", "宁德时代"], "maxItems": 10 }{ "mode": "marketNews", "newsColumn": "103", "maxItems": 20 }{ "mode": "byStockUrl", "stockUrls": ["https://quote.eastmoney.com/sh600519.html"] }{ "mode": "topGainers", "marketRank": "us", "rankSort": "marketCap", "maxItems": 30 }{ "mode": "topGainers", "marketRank": "allA", "rankSort": "changePct", "rankDirection": "asc", "maxItems": 20 }
Data source
East Money's public JSON APIs (no auth): push2delay.eastmoney.com / push2his*.eastmoney.com quotes + K-line, newsapi.eastmoney.com kuaixun flash feed, search-api-web.eastmoney.com news search, searchapi.eastmoney.com stock suggest. The push2 API hosts are known to be latency-flaky from some networks — the actor retries with exponential backoff, tries all three kline hosts in order, and escalates to the Apify AUTO proxy on 403/429.
Limitations
- Hong Kong (
m:100+t:3) boards intermittently returnrc:102(empty payload) — they are intentionally not exposed inmarketRank. byStockNameresolves via the suggest API, which matches the top suggestion only (e.g.茅台→600519); ambiguity is resolved to the first suggestion.topGainersscans the first 5 pages (250 rows) of a ranking andmarketNewsthe first 10 pages; filters that match nothing within that window emit 0 records with a status message (never an infinite pagination loop).marketRank=uscovers NASDAQ + NYSE + AMEX (m:105,m:106,m:107);changePctfor US stocks is a true percentage (relative to previous close).
Use cases
- A-share quote monitoring / portfolio tracking
- Historical price series for backtesting
- Chinese-language finance news monitoring
- Market-scan daily reports (top gainers by change % / turnover)
FAQ
What is a secid? East Money's internal stock id: 1.600519 = Shanghai 600519, 0.000001 = Shenzhen 000001. The actor accepts many input forms and normalizes to this.
Why are some news columns missing? The newsColumn enum covers the 19 most-used kuaixun columns; the flash feed also exposes a long tail of rarely-used columns that are not exposed to keep the dropdown honest — and only columns the API currently serves data for are listed (e.g. 133 医药 was dropped after East Money stopped serving it). Contact the author if you need a column added.
Is the K-line data delayed? The push2delay host serves delayed quotes for free. Real-time data requires a licensed feed.
Why an error record instead of skipping a bad code? The brief requires typed error records for invalid inputs — a bad stock code produces recordType: "error" with the offending input and a hint, so no input is ever silently dropped.
Why might search return the HTML fallback? search-api-web.eastmoney.com intermittently times out from some networks; the actor falls back to the so.eastmoney.com HTML results page, which returns the same article titles/URLs.