mcpField
F
finnhub

finnhub

github.com/gauss314数据与数据库252261 次安装19 周前更新
代码仓库

关于 finnhub

finnhub 是用于查询 Finnhub 金融数据的 skill,附带 Python 客户端和命令行脚本。它说明了免费与付费端点、API 密钥使用、速率限制及市场数据类别。

主要功能

  1. 01实时报价与公司资料
  2. 02新闻、财报、同行及指标
  3. 03Python 客户端与命令行脚本
  4. 04免费与付费端点说明

适用场景

  1. 01查看股票报价和公司资料
  2. 02查询公司或市场新闻
  3. 03查看财报与分析师建议

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/gauss314/skills --skill finnhub

安装后在 Claude Code 中输入/finnhub确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
ENDPOINTS.md
scripts/
download_multiple.py
finnhub_cli.py
finnhub_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(免费,无需信用卡)
  1. 访问:https://finnhub.io/register
  2. 创建账户(邮箱 + 密码)
  3. 从控制面板复制 API Key:https://finnhub.io/dashboard
  4. 免费套餐: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/月)
调用次数/分钟60300+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 会定期调整访问政策。请始终查阅官方文档进行确认。


最佳实践

  1. 使用环境变量 FINNHUB_API_KEY,而不是将密钥硬编码
  2. 缓存结果:基本面数据变化不大(尤其是公司简介和财务报表)
  3. 速率限制:免费版每分钟 60 次调用,即至少每秒调用 1 次
  4. 使用免费 key 时,避免调用 Premium 端点——否则会收到错误 "You don't have access to this resource."
  5. WebSocket:每个 API key 只能建立 1 个连接;免费版支持 50 个证券代码
  6. 复用 HTTP 会话以提升性能(requests.Session())
  7. 不要用于高频交易:这是公共 API,不保证超低延迟

资源

评论

支持 Markdown