实时行情接口:Infoway API vs. Tushare
近期发现一个提供金融实时行情数据接口的平台 ——infoway.io,该平台具备较高的实用价值。目前,该网站开放用户注册通道,用户完成注册后可获取专属 API 密钥,并享受为期 7 天的免费使用权益。
在功能层面,infoway.io支持通过 WebSocket 协议建立连接,提供的实时行情数据覆盖多类金融市场,具体包括股票、外汇、加密货币及商品期货的实时行情,同时可获取最新成交价、最新 K 线等核心交易数据。
众所周知,国内同类金融数据接口服务平台(如 tushare、akshare)已逐步转向收费模式。这一趋势背后的逻辑不难理解:数据本身已成为重要的生产要素与资产,获取高质量的资产服务,自然需要相应的成本投入。
下面就以Python为例说明如何利用infoway.io的API密钥获取股票的基本信息。
1)所需模块
import requests
import pandas as pd
import time
import os
os.chdir(r'E:\TestData')
2)基础配置
API_KEY = "********" # 请替换成你注册的API密钥
EXCEL_PATH = "stock_codes.xlsx"
SHEET_NAME = "Sheet1"
CODE_COLUMN = "stock_code"
BATCH_SIZE = 50 # 单次API请求的股票数量
SAVE_RESULT_PATH = "stock_basic_info.xlsx"
REQUEST_INTERVAL = 0.6
REQUSET_INTERNAL为两次请求间隔时间(秒),由于有限制,0.6秒确保每秒≤2次(1/0.6≈1.67次/秒)。
3)读取Excel中的股票代码
def read_stock_codes(excel_path, sheet_name, code_column):
df = pd.read_excel(excel_path, sheet_name=sheet_name)
# 提取有效代码(去重、去空)
stock_codes = df[code_column].drop_duplicates().dropna().tolist()
print(f"成功读取 {len(stock_codes)} 个有效股票代码")
return stock_codes

4)分批调用API获取数据
def get_stock_batch_info(stock_codes_batch, api_key):
codes_str = ",".join(stock_codes_batch)
url = f"https://data.infoway.io/common/basic/symbols/info?symbols={codes_str}&type=STOCK_CN"
headers = {
"User-Agent": "Mozilla/5.0",
"Accept": "application/json",
"apiKey": api_key
}
try:
response = requests.get(url, headers=headers, timeout=10)
response.raise_for_status()
return response.json()
except Exception as e:
print(f"获取批次 {stock_codes_batch[:3]}... 失败:{str(e)}")
time.sleep(REQUEST_INTERVAL * 2)
return None
5)主逻辑
def main():
all_stock_codes = read_stock_codes(EXCEL_PATH, SHEET_NAME, CODE_COLUMN)
if not all_stock_codes:
print("未读取到有效股票代码,程序退出")
return
# 分割批次
batches = [
all_stock_codes[i:i + BATCH_SIZE]
for i in range(0, len(all_stock_codes), BATCH_SIZE)
]
total_batches = len(batches)
print(f"共分为 {total_batches} 个批次请求,每批间隔 {REQUEST_INTERVAL} 秒")
all_results = []
for batch_idx, batch_codes in enumerate(batches, 1):
print(f"正在请求第 {batch_idx}/{total_batches} 批次,共 {len(batch_codes)} 个代码")
batch_result = get_stock_batch_info(batch_codes, API_KEY)
# 处理有效结果
if batch_result and "data" in batch_result:
all_results.extend(batch_result["data"])
print(f"第 {batch_idx} 批次请求成功,累计获取 {len(all_results)} 条数据")
# 除最后一批外,每批请求后暂停指定时间,控制频率
if batch_idx < total_batches:
time.sleep(REQUEST_INTERVAL)
# 保存结果
if all_results:
result_df = pd.DataFrame(all_results)
result_df.to_excel(SAVE_RESULT_PATH, index=False)
print(f"\n任务完成!共获取 {len(all_results)} 个股票的信息,已保存到 {SAVE_RESULT_PATH}")
else:
print("\n未获取到任何有效股票信息")
6)执行主逻辑
if __name__ == "__main__":
main()
结果如下:

从实际获取结果来看,infoway.io接口返回的股票基础信息维度涵盖股票代码、市场分类、中文简体名称、英文名称、中文繁体名称、所属交易所、交易币种、每手股数、总股本、流通股本、港股专属的港股股本,以及每股盈利、每股盈利(TTM)、每股净资产、股息等财务指标,同时包含可提供的衍生品行情信息与所属板块分类。
然而,该接口也存在明显的缺陷:北交所股票的基础信息无法正常获取。需特别说明的是,对比接口(如 tushare)已实现北交所股票信息的有效抓取,此差异需重点关注。
进一步对比 tushare 接口与 infoway.io 接口的信息覆盖度,我们发现tushare 接口具备 infoway.io 接口缺失的关键维度,包括股票所属地区、细分行业、上市日期、退市日期及当前状态等。
反之,infoway.io 接口也包含部分 tushare 接口未覆盖的信息字段,二者存在互补性。
综上,若需获取单只股票完整、全面的基础信息,建议将 tushare 接口与 infoway.io 接口返回的信息进行数据合并处理,以实现信息维度的补全与整合。