Documentation Index
Fetch the complete documentation index at: https://docs.benzinga.com/llms.txt
Use this file to discover all available pages before exploring further.
Benzinga TypeScript/JavaScript SDK は、Benzinga API と対話するためのモジュール化されたイベントベースのインターフェースを提供します。TypeScript で実装されており、ブラウザと Node.js の両方の環境でシームレスに動作し、キャッシュや詳細な比較などの高度な機能を備えた強化された実装を提供します。
- TypeScript Support - 完全な TypeScript の型定義とインターフェースを提供
- Universal - ブラウザと Node.js の両方の環境で動作
- Modular Architecture - 必要なモジュールだけをインストール可能
- Event-Based - リアルタイムデータ向けのリアクティブプログラミングパターンを採用
- Advanced Features - キャッシュ、ディープコンパリソン、および各種最適化機能を内蔵
- Modern - async/await に対応した ES6+ 構文を採用
SDKはモジュール型アーキテクチャを採用しています。まずはコアのセッションモジュールをインストールしてください。
npm install @benzinga/session
次に、必要に応じて追加モジュールをインストールします。
# 例: 特定のモジュールをインストールする
npm install @benzinga/calendar-data
npm install @benzinga/quotes
npm install @benzinga/news-data
@benzinga/session モジュールは、Benzinga API に対する認証の基盤となります。他のすべてのモジュールは、この Session オブジェクトに依存します。
import { Session } from '@benzinga/session';
// APIキーでセッションを初期化
const session = new Session({
apiKey: 'YOUR_API_KEY'
});
Session オブジェクトには、動作をカスタマイズするためのさまざまな設定オプションを指定できます。
const session = new Session({
apiKey: 'YOUR_API_KEY',
environment: 'production', // または 'sandbox'
timeout: 30000, // リクエストタイムアウト (ミリ秒)
// 追加の設定オプション
});
各 Benzinga API ドメインは、個別の npm モジュールとしてパッケージ化されています。これにより、次のことが可能になります。
- 必要なものだけをインストールできる
- バンドルサイズを削減できる
- 関心事の分離を明確に保てる
- モジュールを個別に更新できる
SDK は、リアルタイムのデータストリームや更新を処理するために、イベント駆動パターンを使用します。
// 例: データ更新を購読する
dataManager.subscribe((data) => {
console.log('New data received:', data);
});
// Example: Handle events
dataManager.on('update', (event) => {
console.log('Data updated:', event);
});
SDK には組み込みのキャッシュ機構があり、次の目的で使用されます。
- 不要な API コールを削減する
- レスポンス時間を短縮する
- 帯域幅の使用を最適化する
- オフライン時のフォールバック手段を提供する
高度なデータ比較機能により、次のことが可能になります:
- ネストされたオブジェクトの変更検出
- 効率的な状態管理
- スマートな更新トリガー
- UI アプリケーションでの再レンダリング回数の削減
このSDKは、各種APIドメインごとに特化したモジュールに整理されています。
@benzinga/session - 認証およびセッション管理(必須)
@benzinga/calendar-data - カレンダー関連イベントおよびコーポレートアクション
@benzinga/news-data - ニュース記事および市場インテリジェンス
@benzinga/quotes - リアルタイム株価およびディレイ株価
@benzinga/fundamentals - 企業のファンダメンタルズおよび財務データ
@benzinga/ratings - アナリストレーティングと目標株価
@benzinga/options - オプション取引動向と分析
@benzinga/transcripts - 決算説明会の書き起こし
@benzinga/logos - 企業ロゴとブランディング
@benzinga/signals - トレーディングシグナルとインジケーター
SDK は TypeScript で記述されており、完全な型定義を提供します。
import { Session } from '@benzinga/session';
import { CalendarData, DividendEvent } from '@benzinga/calendar-data';
// TypeScriptによる自動補完と型チェックが利用可能
const session = new Session({ apiKey: 'YOUR_API_KEY' });
const calendar = new CalendarData(session);
// 型安全なAPI呼び出し
const dividends: DividendEvent[] = await calendar.getDividends({
dateFrom: '2024-01-01',
dateTo: '2024-12-31',
ticker: 'AAPL'
});
import { Session } from '@benzinga/session';
import { NewsData } from '@benzinga/news-data';
const session = new Session({ apiKey: 'YOUR_API_KEY' });
const news = new NewsData(session);
// 最新ニュースを取得
const articles = await news.getNews({
pageSize: 10,
displayOutput: 'full'
});
console.log(articles);
import { Session } from '@benzinga/session';
import { QuoteStream } from '@benzinga/quotes';
const session = new Session({ apiKey: 'YOUR_API_KEY' });
const quoteStream = new QuoteStream(session);
// リアルタイム株価の購読
quoteStream.subscribe(['AAPL', 'MSFT', 'GOOGL'], (quote) => {
console.log('Quote update:', quote);
});
// 完了時に購読解除
quoteStream.unsubscribe(['AAPL']);
import { Session } from '@benzinga/session';
import { CalendarData } from '@benzinga/calendar-data';
const session = new Session({ apiKey: 'YOUR_API_KEY' });
const calendar = new CalendarData(session);
// 今後の決算を取得
const earnings = await calendar.getEarnings({
dateFrom: '2024-01-01',
dateTo: '2024-01-31',
importance: 3 // 重要度の高いもののみ
});
// 配当を取得
const dividends = await calendar.getDividends({
ticker: 'AAPL'
});
import { Session } from '@benzinga/session';
import { Fundamentals } from '@benzinga/fundamentals';
const session = new Session({ apiKey: 'YOUR_API_KEY' });
const fundamentals = new Fundamentals(session);
// 企業プロファイルを取得
const profile = await fundamentals.getCompanyProfile('AAPL');
// バリュエーションレシオを取得
const valuationRatios = await fundamentals.getValuationRatios('AAPL');
// 財務諸表を取得
const financials = await fundamentals.getFinancials('AAPL');
SDK は、Webpack、Rollup、Vite などのバンドラーを用いたブラウザ環境でも動作します。
// React、Vue、またはAngularアプリケーション内
import { Session } from '@benzinga/session';
import { NewsData } from '@benzinga/news-data';
export function NewsComponent() {
const session = new Session({ apiKey: process.env.BENZINGA_API_KEY });
const news = new NewsData(session);
// コンポーネントロジック内で使用
useEffect(() => {
news.getNews({ pageSize: 5 }).then(articles => {
setNewsData(articles);
});
}, []);
}
try-catch ブロックを使用して、エラーを適切に処理します。
import { Session } from '@benzinga/session';
import { NewsData } from '@benzinga/news-data';
const session = new Session({ apiKey: 'YOUR_API_KEY' });
const news = new NewsData(session);
try {
const articles = await news.getNews({ pageSize: 10 });
console.log(articles);
} catch (error) {
if (error.code === 'UNAUTHORIZED') {
console.error('無効なAPIキー');
} else if (error.code === 'RATE_LIMIT') {
console.error('レート制限を超過しました');
} else {
console.error('エラーが発生しました:', error.message);
}
}
ページネーションされた結果を効率的に処理する:
import { Session } from '@benzinga/session';
import { NewsData } from '@benzinga/news-data';
const session = new Session({ apiKey: 'YOUR_API_KEY' });
const news = new NewsData(session);
// 複数ページを取得
let page = 0;
let allArticles = [];
while (page < 5) {
const articles = await news.getNews({
page: page,
pageSize: 100
});
if (articles.length === 0) break;
allArticles = allArticles.concat(articles);
page++;
}
console.log(`Fetched ${allArticles.length} articles`);
組み込みキャッシュを活用して、パフォーマンスを向上させます。
import { Session } from '@benzinga/session';
import { CalendarData } from '@benzinga/calendar-data';
const session = new Session({
apiKey: 'YOUR_API_KEY',
cache: {
enabled: true,
ttl: 300000 // 5分間キャッシュ
}
});
const calendar = new CalendarData(session);
// 最初の呼び出しでAPIにアクセス
const earnings1 = await calendar.getEarnings({ ticker: 'AAPL' });
// 2回目の呼び出しではキャッシュされたデータを使用(TTL内の場合)
const earnings2 = await calendar.getEarnings({ ticker: 'AAPL' });
アプリケーション全体でセッションインスタンスを 1 つ作成し、それを再利用します。
// session.ts
export const globalSession = new Session({ apiKey: process.env.BENZINGA_API_KEY });
// 他のファイルで
import { globalSession } from './session';
const news = new NewsData(globalSession);
API キーは環境変数として安全に管理してください:
// .env ファイル
BENZINGA_API_KEY=your_api_key_here
// コード内
const session = new Session({
apiKey: process.env.BENZINGA_API_KEY
});
型安全な API 操作のために TypeScript を活用する:
import type { NewsArticle, NewsParams } from '@benzinga/news-data';
const params: NewsParams = {
pageSize: 10,
displayOutput: 'full',
ticker: 'AAPL'
};
const articles: NewsArticle[] = await news.getNews(params);
本番環境ではエラーバウンダリを実装すること:
const safeApiCall = async (fn: () => Promise<any>) => {
try {
return await fn();
} catch (error) {
console.error('API Error:', error);
// エラートラッキングサービスにログを記録
return null;
}
};
const articles = await safeApiCall(() => news.getNews({ pageSize: 10 }));
特定のモジュールに関する詳細なドキュメントは、各パッケージの README を参照してください:
@benzinga/session - コア認証および設定
@benzinga/calendar-data - カレンダーイベント API
@benzinga/news-data - ニュースおよび記事 API
@benzinga/quotes - リアルタイム気配値 API
@benzinga/fundamentals - ファンダメンタルズおよび財務データ API
技術サポートおよび API キーの提供については、Benzinga のサイト cloud.benzinga.com からお問い合わせください。
Benzinga JavaScript SDK はオープンソースです。ぜひご貢献ください。詳細については GitHub リポジトリ を参照してください。