关于 finnhub
finnhub 是用于查询 Finnhub 金融数据的 skill,附带 Python 客户端和命令行脚本。它说明了免费与付费端点、API 密钥使用、速率限制及市场数据类别。
主要功能
- 01实时报价与公司资料
- 02新闻、财报、同行及指标
- 03Python 客户端与命令行脚本
- 04免费与付费端点说明
适用场景
- 01查看股票报价和公司资料
- 02查询公司或市场新闻
- 03查看财报与分析师建议
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ gauss314/ skills --skill finnhub安装后在 Claude Code 中输入/finnhub确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/ENDPOINTS.mdscripts/download_multiple.pyfinnhub_cli.pyfinnhub_client.py详细介绍
Finnhub API — 实时金融数据
包含 32 个免费端点 的 REST API,涵盖:实时行情、OHLCV 蜡烛图、公司简介、基本面、新闻、外汇、加密货币、经济数据、财报日历和 WebSocket。
Base URL: https://finnhub.io/api/v1
官方文档: finnhub.io/docs/api
定价: finnhub.io/pricing
⚠️ 重要:免费版与高级版端点
本文档介绍了所有端点,并明确标示:
- ✅ 免费 — 可使用免费套餐(60 次调用/分钟,无需信用卡)
- 🔒 高级版 — 需要付费套餐(Starter $11.99/月起、Professional $49.99/月或 Enterprise)
重要提示: Finnhub 免费套餐的限制远比其文档所描述的严格。根据使用真实免费 API 密钥进行的测试(2026),只有以下端点可用:
/quote(行情)、/stock/profile2(公司简介)、/stock/peers(同类公司)、/stock/earnings(财报)/stock/recommendation(分析师评级)、/stock/metric(指标)、/news(市场新闻)/company-news(公司新闻)、/search(搜索)、/stock/market-status(市场状态)
stock/candle(OHLCV 蜡烛图)、stock/financials、stock/price-target、stock/dividend、forex/rates、crypto/candle等端点需要付费套餐。完整表格请参阅 references/ENDPOINTS.md。
身份验证
获取 API Key(免费,无需信用卡)
- 访问:https://finnhub.io/register
- 创建账户(邮箱 + 密码)
- 从控制面板复制 API Key:https://finnhub.io/dashboard
- 免费套餐:60 次调用/分钟,最多 30 次调用/秒
使用 API Key
import os
API_KEY = os.getenv("FINNHUB_API_KEY") # Recomendado (variable de entorno)
# O directamente en tests:
# API_KEY = "tu_api_key_aqui"
# Header (recomendado)
X-Finnhub-Token: tu_api_key
# O query param
?token=tu_api_key
⚠️ 切勿将 API Key 硬编码到共享代码中。
速率限制
| 限制 | 免费套餐 | Starter ($11.99/月) | Professional ($49.99/月) | Enterprise ($3500/月) |
|---|---|---|---|---|
| 调用次数/分钟 | 60 | 300+ | 300+ | 900(市场),300(基本面) |
| 调用次数/秒 | 30(全局) | 30(全局) | 30(全局) | 30(全局) |
| WebSocket 股票代码数 | 50 | 无限 | 无限 | 无限 |
| OHLCV 历史数据 | 有限 | 30+ 年 | 30+ 年 | 30+ 年 |
| 新闻 | 1 年 | 20 年 | 20 年 | 20 年 |
| 基本面覆盖范围 | 美国 | 全球 | 全球 | 全球 |
提示: 如果收到 HTTP 429,请等待 1-2 秒后重试。
快速使用
1. 实时行情
import requests
API_KEY = "tu_api_key"
BASE = "https://finnhub.io/api/v1"
r = requests.get(f"{BASE}/quote", params={"symbol": "AAPL", "token": API_KEY})
quote = r.json()
print(f"AAPL: ${quote['c']:.2f} ({quote['dp']:+.2f}%)")
2. 公司简介
r = requests.get(f"{BASE}/stock/profile2", params={"symbol": "AAPL", "token": API_KEY})
profile = r.json()
print(f"{profile['name']} | {profile['finnhubIndustry']} | Market Cap: ${profile['marketCapitalization']/1000:.2f}B")
3. 公司新闻
r = requests.get(f"{BASE}/company-news", params={
"symbol": "AAPL", "from": "2025-01-01", "to": "2025-01-15", "token": API_KEY
})
for article in r.json()[:3]:
print(f" {article['headline'][:80]}...")
4. 日线 OHLCV 蜡烛图
import time
end = int(time.time())
start = end - (90 * 86400) # 90 días
r = requests.get(f"{BASE}/stock/candle", params={
"symbol": "AAPL", "resolution": "D",
"from": start, "to": end, "token": API_KEY
})
candles = r.json()
print(f"Status: {candles['s']}, velas: {len(candles['c'])}")
5. 搜索股票代码
r = requests.get(f"{BASE}/search", params={"q": "microsoft", "token": API_KEY})
for result in r.json()["result"]:
print(f"{result['symbol']}: {result['description']} ({result['type']})")
可用脚本
| 脚本 | 描述 | 使用的端点 |
|---|---|---|
| finnhub_client.py | 提供所有免费端点的完整 Python 客户端 | quote, candle, profile2, peers, metric, financials, earnings, recommendation, price-target, company-news, news, forex, crypto, search, economic, market-status, dividends, splits, calendar |
| finnhub_cli.py | 用于快速查询的命令行界面 | quote, profile2, search, news, peers, earnings, market-status |
| download_multiple.py | 按类别批量下载数据 | quote, candle, metric, financials, earnings, recommendation, company-news |
API 覆盖范围(根据使用真实免费密钥的测试)
| 类别 | Endpoints | 免费版 | Premium |
|---|---|---|---|
| 报价 | quote | ✅ | — |
| 公司简介 | profile2, peers | ✅ | — |
| 财报 | earnings(免费提供 4 个季度) | ✅ | — |
| 分析师评级 | recommendation(约 8 个月) | ✅ | — |
| 指标(133 项) | metric(无历史数据,仅提供最新值) | ✅ | — |
| 新闻 | company-news, news | ✅ | — |
| 搜索 | search | ✅ | — |
| 市场状态 | market-status | ✅ | — |
| OHLCV 蜡烛图 | candle | — | 🔒 Premium |
| 财务报表 | financials, financials-reported, price-target | — | 🔒 Premium |
| 股息/拆股 | dividend, split | — | 🔒 Premium |
| 外汇 | rates, candle, exchange, symbol | — | 🔒 Premium |
| 加密货币 | candle, exchange, symbol | — | 🔒 Premium |
| 经济数据 | economic/code, economic, country | — | 🔒 Premium |
| 证券代码 | stock/symbol, market-holiday, ipo-calendar | — | 🔒 Premium |
| WebSocket | 交易(50 个证券代码) | — | 🔒 Premium |
| 内部人交易、持仓 | insider-transactions, ownership 等 | — | 🔒 Premium |
| 预估数据 | eps-estimate, revenue-estimate 等 | — | 🔒 Premium |
| ETF、指数、债券 | etf/profile, etf/holdings, index/constituents, bond/price 等 | — | 🔒 Premium |
| 另类数据 | social-sentiment, covid-19, esg-score 等 | — | 🔒 Premium |
⚠️ 本表基于 2026 年 6 月使用免费 API key 进行的实际测试。Finnhub 会定期调整访问政策。请始终查阅官方文档进行确认。
最佳实践
- 使用环境变量
FINNHUB_API_KEY,而不是将密钥硬编码 - 缓存结果:基本面数据变化不大(尤其是公司简介和财务报表)
- 速率限制:免费版每分钟 60 次调用,即至少每秒调用 1 次
- 使用免费 key 时,避免调用 Premium 端点——否则会收到错误
"You don't have access to this resource." - WebSocket:每个 API key 只能建立 1 个连接;免费版支持 50 个证券代码
- 复用 HTTP 会话以提升性能(
requests.Session()) - 不要用于高频交易:这是公共 API,不保证超低延迟
资源
评论
支持 Markdown