English | 中文
Official Python SDK for Infoway real-time financial data API. Full documentation at docs.infoway.io.
pip install infoway-sdkfrominfowayimportInfowayClient, KlineTypeclient=InfowayClient(api_key="YOUR_API_KEY")
# Real-time tradestrades=client.stock.get_trade("AAPL.US")
# Daily K-lines for cryptoklines=client.crypto.get_kline("BTCUSDT", kline_type=KlineType.DAY, count=30)
# Market temperaturetemp=client.market.get_temperature(market="HK,US")
# Sector/plate rankingsplates=client.plate.get_industry("HK", limit=10)importasynciofrominfoway.wsimportInfowayWebSocketasyncdefmain():
ws=InfowayWebSocket(api_key="YOUR_API_KEY", business="stock")
asyncdefon_trade(msg):
print(f"Trade: {msg}")
ws.on_trade=on_tradeawaitws.subscribe_trade("AAPL.US,TSLA.US")
awaitws.connect()
asyncio.run(main())- Auto-reconnect with exponential backoff (1s to 30s cap)
- Heartbeat keepalive at 30-second intervals
- Auto-resubscribe on reconnect -- no manual re-subscription needed
- Event callbacks:
on_trade,on_depth,on_kline,on_error,on_reconnect,on_disconnect
| Module | Accessor | Description |
|---|---|---|
| Stock | client.stock | HK, US, CN equities -- trade, depth, K-line |
| Crypto | client.crypto | Cryptocurrency pairs -- trade, depth, K-line |
| Japan | client.japan | Japan market data -- trade, depth, K-line |
| India | client.india | India market data -- trade, depth, K-line |
| Common | client.common | Cross-market data -- trade, depth, K-line |
| Basic | client.basic | Symbol lists, trading days, trading hours, adjustment factors |
| Market | client.market | Market temperature, breadth, indexes, leaders, rank config |
| Plate | client.plate | Sector/industry/concept plates, members, charts |
| Stock Info | client.stock_info | Fundamentals -- valuation, ratings, company, panorama, events |
You can pass api_key directly or set it via environment variable:
export INFOWAY_API_KEY="YOUR_API_KEY"# Reads INFOWAY_API_KEY from environment automaticallyclient=InfowayClient()client=InfowayClient(
api_key="YOUR_API_KEY",
base_url="https://data.infoway.io", # defaulttimeout=15.0, # request timeout in secondsmax_retries=3, # retry count for failed requests
)frominfowayimportInfowayClient, InfowayAPIError, InfowayAuthError, InfowayTimeoutErrorclient=InfowayClient(api_key="YOUR_API_KEY")
try:
trades=client.stock.get_trade("AAPL.US")
exceptInfowayAuthError:
print("Invalid API key")
exceptInfowayTimeoutError:
print("Request timed out")
exceptInfowayAPIErrorase:
print(f"API error [{e.ret}]: {e.msg}")MIT
Get your free API key at infoway.io -- 7-day free trial, no credit card required.