レート制限とプラン
各プランの月間クォータ、1分あたりのリクエスト上限、価格の更新間隔の仕組みと、レスポンスヘッダーや/usageエンドポイントで使用量を確認する方法を解説します。
はじめに 5分で読めます
2種類の制限
すべてのプランには、暦月あたりの課金対象リクエスト数である月間クォータと、急激なアクセス集中からAPIを保護する1分あたりの上限があります。クォータは毎月1日の00:00 UTCにリセットされます。
プランごとに更新間隔、つまり価格の鮮度も異なります。更新間隔より頻繁にポーリングしても同じ価格が返され、クォータを消費するだけです。
プラン一覧
- Free:月100リクエスト、毎日の更新、毎分10リクエスト
- Lite:月1,000リクエスト、30分ごとの更新、毎分30リクエスト
- Standard:月10,000リクエスト、10分ごとの更新、毎分60リクエスト
- Advanced:月50,000リクエスト、60秒ごとの更新、毎分120リクエスト
- Pro:月100,000リクエスト、60秒ごとの更新、毎分300リクエスト
- Ultra:月500,000リクエスト、15秒ごとの更新、毎分600リクエスト
- Business:月500,000リクエスト、15秒ごとの更新、毎分600リクエスト、稼働率SLA付き
- Enterprise:月1,500,000リクエスト、5秒ごとの更新、毎分1,200リクエスト
利用できる機能もプランに応じて増えます。カラット別価格には有料プラン、Bid/Ask価格にはStandard以上、WebhookアラートにはAdvanced以上、リアルタイムストリームにはPro以上が必要です。最新の料金は料金ページをご覧ください。
リクエストとしてカウントされるもの
- データエンドポイントへの呼び出しが成功するたびに、返されるシンボルの数に関係なく1リクエストとしてカウントされます。
/symbolsと/usageは無料で、カウントされることはありません。104(1分あたりの上限)、106(プランの対象外)、107(許可されていないオリジン)、またはサーバーエラー(500、503)で拒否されたリクエストは課金されません。- クエリ自体が原因で失敗したリクエストはカウントされます。これにはバリデーションエラー
201〜210と300(結果なし)が含まれるため、日付とシンボルは送信前に検証してください。
使用量を確認する
認証済みのすべてのレスポンスで、クォータの状況がヘッダーで返されます:
http
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9876
X-RateLimit-Used: 124
X-RateLimit-Reset: 1793491200
X-RateLimit-Reset-Date: 2026-11-01T00:00:00.000Z
X-RateLimit-Plan: Standard
X-RateLimit-Minute-Limit: 60
X-RateLimit-Minute-Remaining: 59同じ数値はJSON本文のrate_limitオブジェクトにも含まれます。resetはUnixタイムスタンプで、reset_dateは同じ時刻(UTCでの翌月初め)をISO 8601形式で表したものです。
クォータを消費せずに使用量を確認する
ダッシュボードや監視ツールからは/usageを呼び出してください。無料で利用できます:
json
{
"success": true,
"usage": {
"requests_made": 124,
"requests_quota": 10000,
"requests_remaining": 9876,
"plan": "standard",
"period_start": "2026-10-01T00:00:00.000Z",
"period_end": "2026-11-01T00:00:00.000Z"
},
"result": { "plan": "Standard", "used": 124, "total": 10000, "remaining": 9876 },
"rate_limit": {
"limit": 10000,
"remaining": 9876,
"reset": 1793491200,
"used": 124,
"plan": "Standard",
"reset_date": "2026-11-01T00:00:00.000Z"
}
}制限に達した場合
どちらの制限も、HTTPステータス429とエラー本文を返します:
104too_many_requests:現在の1分間のリクエストが多すぎます。レスポンスには、待機すべき秒数を示すRetry-Afterヘッダーが含まれます。ペースを落としてからリトライしてください。105quota_exceeded:月間クォータを使い切りました。毎月1日(UTC)にクォータがリセットされるまで、リクエストは失敗し続けます。プランのアップグレードは即時に反映されます。
json
{
"success": false,
"error": {
"code": 105,
"type": "quota_exceeded",
"info": "User has reached or exceeded his subscription plan's monthly API request allowance"
}
}クォータ内に収めるには
- レスポンスは、少なくともプランの更新間隔のあいだキャッシュしてください。
- シンボルごとに1回ずつ呼び出すのではなく、必要なシンボルをすべて1回の呼び出しでリクエストしてください。
- 10分ごとのポーリングでは月に約4,500リクエスト、1分ごとのポーリングでは約45,000リクエストを使用します。ポーリング頻度に合ったプランを選んでください。
- Pro以上ではポーリングの代わりにリアルタイムストリームを使い、しきい値への対応には価格アラートを使ってください。
その他のヒントはベストプラクティスをご覧ください。
関連ガイド
MetalAPIスタートガイド無料アカウントを作成してAPIキーを取得し、金・銀・プラチナ・パラジウムのリアルタイム価格を取得する最初のリクエストを送るまでの手順を、レスポンスの読み方とあわせて解説します。5分で読めますAPI認証APIキーをクエリパラメーターまたはヘッダーで送信する方法、キーを自社ドメインだけに制限する方法、キーを漏えいから守るための運用のポイントを、curlとJavaScriptの例で解説します。4分で読めます埋め込み型価格ウィジェット埋め込みウィジェットを使えば、どんなウェブサイトにも金属のリアルタイム価格を表示できます。バックエンドのコードは不要で、ページにAPIキーを含める必要もありません。作成から埋め込みまでの手順を解説します。4分で読めます
開発を始める準備はできましたか?
無料アカウントを作成してAPIキーを取得するか、APIリファレンスですべてのエンドポイントをご確認ください。