finlight Logo

Wednesday, July 8, 2026

高级过滤:用 finlight API 进行精确查询

Finlight - Content Manager

高级过滤:用 finlight API 进行精确查询

宽泛的新闻流就是噪音。价值在于精确获取你真正关心的报道。finlight 为此提供了两种方式,而且它们可以 配合使用:

  1. 结构化过滤,用于常见场景(股票代码、国家、分类、来源、日期)。
  2. 查询语言,在 query 字段中用于布尔逻辑和全文匹配。

本指南使用 POST /v2/articles 讲解这两者。如果你还没完成第一次调用,请先看 快速入门指南

结构化过滤

这些是你最常用到的参数:

  • tickers — 公司,例如 ["AAPL", "NVDA"]
  • countries — ISO 3166-1 alpha-2 国家代码,例如 ["US", "GB"]
  • categories — 13 个分类中的一个或多个,例如 ["markets", "regulation"]
  • sources / excludeSources / optInSources — 包含、排除或额外选入特定媒体
  • from / to — 日期范围,YYYY-MM-DD 或 ISO 8601 格式
  • orderASC / DESC)和 orderBypublishDatecreatedAtrevisedDate

一个简单的结构化请求:

curl -X POST https://api.finlight.me/v2/articles \
  -H "X-API-KEY: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tickers": ["AAPL", "NVDA"],
    "categories": ["markets"],
    "from": "2026-01-01",
    "pageSize": 50
  }'

查询语言

当你需要布尔逻辑或文本匹配时,使用 query 字段。它支持字段过滤、布尔运算符、分组、精确短语和通配符。

支持的字段

字段匹配内容示例
ticker公司股票代码ticker:AAPL
exchange上市交易所exchange:NASDAQ
isinISIN 代码isin:US0378331005
openfigiOpenFIGI 标识openfigi:BBG000B9XRY4
source来源域名source:www.reuters.com
country国家代码country:US
category分类category:regulation
title标题中的词title:"rate cut"
content正文中的词content:"guidance"
summary摘要中的词summary:merger

运算符

  • AND / OR / NOT 用于组合条件。
  • 括号 ( ) 用于分组,例如 (ticker:AAPL OR ticker:NVDA)
  • 引号 " " 用于精确短语,例如 content:"interest rates"
  • 通配符 *,可用于 tickersourceexchange,例如 ticker:BRK*
  • + / - 用于要求或排除某个条件,例如 +ticker:AAPL -category:crypto

组合使用

查找关于苹果或英伟达的财报报道,但排除某个特定来源:

(ticker:AAPL OR ticker:NVDA) AND content:"earnings" AND NOT source:www.example.com

结构化过滤与查询字符串会被组合在一起(以 AND 连接),因此你可以混用。例如,用 query 表达布尔逻辑, 用 categories / from 作为结构化过滤:

// TypeScript
import { FinlightApi } from 'finlight-client';

const client = new FinlightApi({ apiKey: 'YOUR_API_KEY' });

const response = await client.articles.fetchArticles({
  query: '(ticker:AAPL OR ticker:NVDA) AND content:"earnings"',
  categories: ['markets'],
  from: '2026-01-01',
  pageSize: 50,
});
# Python
from finlight_client import FinlightApi, ApiConfig
from finlight_client.models import GetArticlesParams

client = FinlightApi(config=ApiConfig(api_key="YOUR_API_KEY"))

params = GetArticlesParams(
    query='(ticker:AAPL OR ticker:NVDA) AND content:"earnings"',
    categories=["markets"],
    from_="2026-01-01",
    pageSize=50,
)
response = client.articles.fetch_articles(params)

分页与深层历史

pagepageSize(每页最多 100 条)来翻页。有一条规则需要知道:偏移量(page * pageSize)的 上限是 10,000。要查询更久远的历史,不要一味增大 page,而应该用 fromto 缩小时间窗口,并在 每个窗口内翻页。这样可以保持查询快速,并让你遍历任意长度的历史。

接下来去哪里

获取免费 API 密钥 →