Wednesday, July 8, 2026

高度なフィルタリング:finlight API で精密なクエリを組む

Finlight - Content Manager

高度なフィルタリング:finlight API で精密なクエリを組む

幅広いニュースフィードはノイズです。価値は、あなたが本当に気にかける記事を正確に取得することに あります。finlight はそのための方法を 2 つ用意しており、両者は組み合わせて使えます。

  1. 一般的なケース(ティッカー、国、カテゴリ、ソース、日付)向けの構造化フィルター
  2. ブール論理と全文マッチングのための、query フィールドに記述するクエリ言語

本ガイドでは、POST /v2/articles を使ってこの両方を解説します。まだ最初の呼び出しをしていない場合は、 まずクイックスタートガイドから 始めてください。

構造化フィルター

これらは最も頻繁に使うことになるパラメータです。

  • tickers — 企業。例:["AAPL", "NVDA"]
  • countries — ISO 3166-1 alpha-2 コード。例:["US", "GB"]
  • categories — 13 カテゴリのうち 1 つ以上。例:["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 IDopenfigi:BBG000B9XRY4
sourceソースのドメインsource:www.reuters.com
country国コードcountry:US
categoryカテゴリcategory:regulation
titleタイトル中の単語title:"rate cut"
summary要約中の単語summary:merger

演算子

  • 条件を組み合わせる AND / OR / NOT
  • グループ化する括弧 ( )。例:(ticker:AAPL OR ticker:NVDA)
  • 完全一致フレーズのための引用符 " "。例:"interest rates"
  • tickersourceexchange に使えるワイルドカード *。例:ticker:BRK*
  • 条件を必須にする・除外する + / -。例:+ticker:AAPL -category:crypto

組み合わせる

Apple または Nvidia に関する決算記事を探しつつ、特定のソースは除外します。

(ticker:AAPL OR ticker:NVDA) AND "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 "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 "earnings"',
    categories=["markets"],
    from_="2026-01-01",
    pageSize=50,
)
response = client.articles.fetch_articles(params)

ページネーションと深い履歴

pagepageSize(1 ページあたり最大 100 件)でページをめくります。知っておくべきルールが ひとつあります。オフセット(page * pageSize)の上限は 10,000 です。より古い履歴をたどるには、 page をひたすら増やすのではなく、fromto で時間ウィンドウを狭め、各ウィンドウ内でページを めくってください。こうすることでクエリは高速に保たれ、どれだけ長い履歴でも歩いて回れます。

次に読むべきもの

無料の API キーを取得する →