ETF・投資信託APIリファレンス
ETF と投資信託の価格、NAV、履歴、分配
概要
ETF と投資信託の価格、価格履歴、分配金、プロファイル、検索。すべてのリクエストに Bearer キーが必要で、REST と MCP は同じクレジット残高から差し引かれます。
ETF の ID は銘柄 ID で、たとえば ARCX:SPY です。投資信託の ID は FUND、コロン、ティッカーの順で、たとえば FUND:VFIAX です。SPY のような米国ティッカーだけでも、米国の銘柄が1つに決まる場合は使えます。ファンド用ルートに株式の ID を送ると 404 not_found を返します。株式用ルートにファンドの ID を送ると、301 でこちらに移動します。
ETF には価格があります。投資信託には1日1回の基準価額(NAV)があり、nav、previous_nav、date で返します。価格のレスポンスには、どちらを受け取ったかを示す type フィールドがあります。
ベースURL: https:/。 MCP ツールは次のとおりです: funds, with one action 以下の各ルートに対応します。
すべてのアカウントで利用できるもの
| 課金額 | すべてのアカウント |
|---|---|
| ETF の最新価格 | ライブ |
| 投資信託の NAV | 最新の NAV |
| 日次バーと過去の分配 | 全期間の履歴 |
| 1分バー(ETF のみ) | 含まれる |
| 検索とプロファイル | 含まれる |
参照: 料金表 で、呼び出し1回の料金を確認できます。ルートに別の記載がない限り、リクエストはそのAPIの料金で課金されます。
- 投資信託の NAV は終値ベースの日次の値で、遅延することはありません。翌営業日より古くなると古い値(stale)になります。
- 投資信託には1分バーがありません。要求すると 400 invalid_interval を返します。
- 投資信託の日次バーは NAV です。始値、高値、安値、終値は同じ値で、出来高はありません。
- 分配の kind は、情報源が値を提供するまで省略されます。
エンドポイント
すべてのルートは GET で、キーを次のヘッダーで渡す必要があります: Authorization: Bearer ヘッダー。例はレスポンスの形を示すもので、ライブデータではありません。
ティッカーまたは名称で ETF と投資信託を検索
GET /v1/funds/search
ティッカーまたは名称が q で始まるファンドを、大文字小文字を区別せずに返します。順序は、完全一致のティッカー、その他のティッカー、名称の順です。任意の type(etf または mutual_)と country(3文字)でフィルターできます。1ページ最大50件で、next_ を返します。自社のシンボル一覧から読むため、すべてのアカウントで利用でき、1回の呼び出しとして数えます。
MCP: ツール funds, action search。
パラメータ
| パラメータ | 場所 | 必須 | 種別 | 意味 |
|---|---|---|---|---|
q | クエリ | はい | 文字列 | ティッカーまたはファンド名の先頭部分です。大文字小文字は区別せず、2文字以上が必要です(例: vf、vanguard 500)。順序は、完全一致のティッカー、その他のティッカー、名称の先頭、名称の2語目以降の先頭の順です。 |
country | クエリ | いいえ | 文字列 | この国のファンドのみ。3文字で指定します(USA)。 |
type | クエリ | いいえ | etf、mutual_fund のいずれか | ETF のみ、または投資信託のみ。 |
cursor | クエリ | いいえ | 文字列 | 前のページの next_。ほかのパラメータは同じ値にします。 |
レスポンスフィールド
| フィールド | 種別 | 送信 | 意味 |
|---|---|---|---|
results | オブジェクトの配列 | 常に | 1ページ最大50件。 |
results[].id | 文字列 | 常に | 正規のファンド ID。 |
results[].symbol | 文字列 | 常に | ファンドのティッカー。 |
results[].name | 文字列 | 常に | 自社のシンボル一覧にあるとおりの名称。 |
results[].type | etf、mutual_fund のいずれか | 常に | 銘柄の種類。 |
results[].mic | 文字列 | 任意 | 取引所の4文字コード。投資信託には取引所がないため省略されます。 |
results[].country | 文字列 | 任意 | ファンドの国。3文字。 |
results[].currency | 文字列 | 常に | 価格の通貨。 |
next_ | 文字列 | 常に | 次のページを読むには、この値を渡します。最後のページでは null です。 |
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/funds/search?q=vanguard&type=mutual_fund"{
"results": [
{
"id": "ARCX:SPY",
"symbol": "SPY",
"name": "SPDR S&P 500 ETF Trust",
"type": "etf",
"mic": "ARCX",
"country": "USA",
"currency": "USD"
},
{
"id": "FUND:VFIAX",
"symbol": "VFIAX",
"name": "Vanguard 500 Index Fund Admiral Shares",
"type": "mutual_fund",
"country": "USA",
"currency": "USD"
}
],
"next_cursor": null
}ファンド1件のプロフィール
GET /v1/funds/{id}
自社のシンボル一覧にあるとおりの、ファンドのシンボル、名称、種別(etf または mutual_)、取引所(ETF のみ)、国、通貨を返します。すべてのアカウントで利用できます。不明な項目は省略されます。
MCP: ツール funds, action profile。
パラメータ
| パラメータ | 場所 | 必須 | 種別 | 意味 |
|---|---|---|---|---|
id | パス | はい | 文字列 | ファンド ID。ETF は銘柄 ID で、取引所の4文字コード、コロン、ティッカーの順です(ARCX:SPY)。投資信託は FUND、コロン、ティッカーの順です(FUND:VFIAX)。SPY のような米国ティッカーだけでも、米国の銘柄が1つに決まる場合は使えます。レスポンスには正規の ID が入ります。 |
レスポンスフィールド
| フィールド | 種別 | 送信 | 意味 |
|---|---|---|---|
id | 文字列 | 常に | 正規のファンド ID。 |
symbol | 文字列 | 常に | ファンドのティッカー。 |
name | 文字列 | 常に | 自社のシンボル一覧にあるとおりの名称。 |
type | etf、mutual_fund のいずれか | 常に | 銘柄の種類。 |
mic | 文字列 | 任意 | 取引所の4文字コード。投資信託には取引所がないため省略されます。 |
country | 文字列 | 任意 | ファンドの国。3文字。 |
currency | 文字列 | 常に | 価格の通貨。 |
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/funds/ARCX:SPY"{
"id": "ARCX:SPY",
"symbol": "SPY",
"name": "SPDR S&P 500 ETF Trust",
"type": "etf",
"mic": "ARCX",
"country": "USA",
"currency": "USD"
}ファンド1件の最新価格
GET /v1/funds/{id}/price
ETF の直近価格を、株価と同じ形式に type: etf を加えて返します。投資信託の場合は最新の NAV を返します(type: mutual_、nav、previous_、change、change_、NAV の date。終値ベースの日次の値で遅延せず、翌営業日より古くなると stale になります)。change_ はパーセント単位です。株式の ID は 404 not_found です。
MCP: ツール funds, action price。
パラメータ
| パラメータ | 場所 | 必須 | 種別 | 意味 |
|---|---|---|---|---|
id | パス | はい | 文字列 | ファンド ID。ETF は銘柄 ID で、取引所の4文字コード、コロン、ティッカーの順です(ARCX:SPY)。投資信託は FUND、コロン、ティッカーの順です(FUND:VFIAX)。SPY のような米国ティッカーだけでも、米国の銘柄が1つに決まる場合は使えます。レスポンスには正規の ID が入ります。 |
レスポンスフィールド
| フィールド | 種別 | 送信 | 意味 |
|---|---|---|---|
id | 文字列 | 常に | 正規の銘柄 ID。 |
symbol | 文字列 | 常に | その取引所でのティッカー。 |
currency | 文字列 | 常に | すべての価格項目の通貨。ペンスはポンドに換算されます。 |
price | 文字列 | 任意 | 直近の価格。単位は currency。 |
previous_ | 文字列 | 任意 | 前営業日の終値。不明な場合は省略されます。 |
change | 文字列 | 任意 | price から previous_ を引いた値。previous_ がないときは省略されます。 |
change_ | 文字列 | 任意 | previous_ からの変化率(パーセント単位。1.5 は 1.5% を表します)。 |
volume | 文字列 | 任意 | 本日の出来高(株数)。不明な場合は省略され、遅延した応答では常に省略されます。 |
market_ | 次のいずれか: pre, open, post, closed | 任意 | timestamp 時点での銘柄の取引所の状態: pre、open、post、closed のいずれか。pre と post があるのは米国の取引所のみです。 |
timestamp | 日時 | 任意 | 価格が有効だった時刻(UTC、秒単位)。 |
stale | ブール値 | 常に | 取引所が開いている間に価格が15分より古い場合、または更新できなかった場合は true です。閉まっている市場が古いと判定されることはありません。 |
delayed | 常に true | 任意 | 送信されません。価格はすべてのアカウントでリアルタイムです。 |
type | etf、mutual_fund のいずれか | 常に | ETF は etf、投資信託は mutual_fund。 |
nav | 文字列 | 任意 | 1口あたりの純資産価値。単位は currency。 |
previous_ | 文字列 | 任意 | 前日の NAV。不明な場合は省略されます。 |
date | 日付 | 任意 | NAV の対象日(YYYY-MM-DD)。 |
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/funds/ARCX:SPY/price"{
"id": "ARCX:SPY",
"symbol": "SPY",
"currency": "USD",
"price": "578.12",
"previous_close": "576.40",
"change": "1.72",
"change_percent": "0.30",
"volume": "61230500",
"market_session": "open",
"timestamp": "2026-10-26T15:42:00Z",
"stale": false,
"type": "etf"
}最大50ファンドの最新価格
GET /v1/funds/prices
指定した各ファンドの最新価格を返します。ETF は直近価格、投資信託は最新の NAV です。価格を返した ID ごとに1回の呼び出しとして数え、一括で課金します。解決できた ID の分を残高で支払えない場合、リクエスト全体が 402 insufficient_credits で拒否されます。価格を返さなかった ID は errors に並び、課金されません。change_ はパーセント単位です。
ETF と投資信託を合わせて最大50件の ID を送れます。バッチは一括で課金されます。解決できた ID の分を残高で支払えない場合、リクエスト全体が 402 insufficient_credits を返します。
MCP: ツール funds, action prices。
パラメータ
| パラメータ | 場所 | 必須 | 種別 | 意味 |
|---|---|---|---|---|
ids | クエリ | はい | 文字列 | カンマ区切りのファンド ID。重複を除いて最大50件です。各 ID は単一価格ルートと同じ規則に従います。価格を返した ID ごとに1回の呼び出しとして数えます。 |
レスポンスフィールド
| フィールド | 種別 | 送信 | 意味 |
|---|---|---|---|
prices | オブジェクトの配列 | 常に | 解決できた ID ごとに1つの価格を、ID をキーにして返します。 |
prices[].id | 文字列 | 常に | 正規の銘柄 ID。 |
prices[].symbol | 文字列 | 常に | その取引所でのティッカー。 |
prices[].currency | 文字列 | 常に | すべての価格項目の通貨。ペンスはポンドに換算されます。 |
prices[].price | 文字列 | 任意 | 直近の価格。単位は currency。 |
prices[].previous_ | 文字列 | 任意 | 前営業日の終値。不明な場合は省略されます。 |
prices[].change | 文字列 | 任意 | price から previous_ を引いた値。previous_ がないときは省略されます。 |
prices[].change_ | 文字列 | 任意 | previous_ からの変化率(パーセント単位。1.5 は 1.5% を表します)。 |
prices[].volume | 文字列 | 任意 | 本日の出来高(株数)。不明な場合は省略され、遅延した応答では常に省略されます。 |
prices[].market_ | 次のいずれか: pre, open, post, closed | 任意 | timestamp 時点での銘柄の取引所の状態: pre、open、post、closed のいずれか。pre と post があるのは米国の取引所のみです。 |
prices[].timestamp | 日時 | 任意 | 価格が有効だった時刻(UTC、秒単位)。 |
prices[].stale | ブール値 | 常に | 取引所が開いている間に価格が15分より古い場合、または更新できなかった場合は true です。閉まっている市場が古いと判定されることはありません。 |
prices[].delayed | 常に true | 任意 | 送信されません。価格はすべてのアカウントでリアルタイムです。 |
prices[].type | etf、mutual_fund のいずれか | 常に | ETF は etf、投資信託は mutual_fund。 |
prices[].nav | 文字列 | 任意 | 1口あたりの純資産価値。単位は currency。 |
prices[].previous_ | 文字列 | 任意 | 前日の NAV。不明な場合は省略されます。 |
prices[].date | 日付 | 任意 | NAV の対象日(YYYY-MM-DD)。 |
errors | オブジェクトの配列 | 常に | 価格を返さなかった ID。課金されません。 |
errors[].id | 文字列 | 常に | リクエストで指定された ID そのまま。 |
errors[].code | 次のいずれか: not_found, not_covered, upstream_busy | 常に | not_found: そのような銘柄はありません。not_covered: その取引所はまだ価格に対応していません。upstream_busy: 現在は価格を取得できません。しばらくしてからもう一度お試しください。 |
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/funds/prices?ids=ARCX:SPY,FUND:VFIAX"{
"prices": [
{
"id": "ARCX:SPY",
"symbol": "SPY",
"currency": "USD",
"price": "578.12",
"previous_close": "576.40",
"change": "1.72",
"change_percent": "0.30",
"volume": "61230500",
"market_session": "open",
"timestamp": "2026-10-26T15:42:00Z",
"stale": false,
"type": "etf"
},
{
"id": "FUND:VFIAX",
"symbol": "VFIAX",
"currency": "USD",
"type": "mutual_fund",
"nav": "551.07",
"previous_nav": "549.80",
"change": "1.27",
"change_percent": "0.23",
"date": "2026-10-23",
"stale": false
}
],
"errors": [
{
"id": "FUND:NOPE",
"code": "not_found"
}
]
}ファンド1件の価格バー
GET /v1/funds/{id}/bars
日次(1d)または1分(1m)のバーを、株式のバーと同じ形式で古い順に返します。投資信託の日次バーは日次の NAV です(始値、高値、安値、終値は NAV で、出来高はありません)。1分バーはありません(400 invalid_interval)。1分バーは ETF のみです。履歴はすべてのアカウントで全期間を取得できます。1ページ最大5,000バーで、next_ を返します。価格と一致しなくなったカーソルは 409 cursor_expired です。1ページにつき1回の呼び出しです。
2ページの間に株式分割や分配で履歴が変わると、カーソルは使えなくなり、409 cursor_expired を返します。
MCP: ツール funds, action bars。
パラメータ
| パラメータ | 場所 | 必須 | 種別 | 意味 |
|---|---|---|---|---|
id | パス | はい | 文字列 | ファンド ID。ETF は銘柄 ID で、取引所の4文字コード、コロン、ティッカーの順です(ARCX:SPY)。投資信託は FUND、コロン、ティッカーの順です(FUND:VFIAX)。SPY のような米国ティッカーだけでも、米国の銘柄が1つに決まる場合は使えます。レスポンスには正規の ID が入ります。 |
interval | クエリ | いいえ | 次のいずれか: 1d, 1m | 1d(1セッションにつき1バー。投資信託のバーは日次の NAV)または 1m(1分バー。ETF のみ)。それ以外は 400 invalid_interval です。 |
start | クエリ | いいえ | 文字列 | 最初のバー。1d では日付(YYYY-MM-DD)で、その日を含みます。省略すると存在する最古のバーになります。1m では UTC の時刻(YYYY-MM-DDTHH:MM:SSZ、または日付のみで UTC 00:00)で、その時刻を含みます。省略すると end の1日前になります。 |
end | クエリ | いいえ | 文字列 | 最後のバー。1d では日付で、その日を含みます。省略するとバーが出ている最新の取引日になります。1m では UTC の時刻で、その時刻を含みません。省略すると現在、または start の5日後になります。1m では start と end の間は最大5日です(400 range_too_large)。 |
cursor | クエリ | いいえ | 文字列 | 前のページの next_。ほかのパラメータは同じ値にします。カーソルは、元になる価格が変わる(分割や配当)と使えなくなり、409 cursor_expired を返します。 |
レスポンスフィールド
| フィールド | 種別 | 送信 | 意味 |
|---|---|---|---|
id | 文字列 | 常に | 正規の銘柄 ID。 |
currency | 文字列 | 常に | すべての価格の通貨。ペンスはポンドになります。 |
adjusted | ブール値 | 常に | 常に true です。価格は株式分割と配当で調整されます。あるページと次のページは必ず整合します。2つのページの間に分割や配当で履歴が変わった場合は、両者を混ぜずにカーソルが使えなくなります(409 cursor_expired)。 |
start | 文字列 | 任意 | 送信されません。start は動かされません。 |
end | 文字列 | 任意 | 送信されません。日足は切り詰められません。 |
bars | オブジェクトの配列 | 常に | 1ページ最大5,000本。 |
bars[].date | 文字列 | 任意 | 取引日(YYYY-MM-DD)。日足のみで、1分足では省略されます。 |
bars[].timestamp | 日時 | 常に | バーの期間の開始時刻(UTC)。日足では取引所の始値の時刻、1分足ではその分です。 |
bars[].open | 文字列 | 常に | 期間の最初の価格。 |
bars[].high | 文字列 | 常に | 期間の最高価格。 |
bars[].low | 文字列 | 常に | 期間の最安価格。 |
bars[].close | 文字列 | 常に | 期間の最後の価格。 |
bars[].volume | 文字列 | 任意 | その期間の出来高(株数)。不明な場合は省略されます。 |
next_ | 文字列 | 常に | 次のページを読むには、この値を渡します。最後のページでは null です。 |
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/funds/ARCX:SPY/bars?interval=1d&start=2026-10-01"{
"id": "ARCX:SPY",
"currency": "USD",
"adjusted": true,
"bars": [
{
"date": "2026-10-23",
"timestamp": "2026-10-23T13:30:00Z",
"open": "575.10",
"high": "577.60",
"low": "573.90",
"close": "576.40",
"volume": "48210300"
}
],
"next_cursor": null
}ファンド1件の分配
GET /v1/funds/{id}/distributions
ファンド1件の分配を、権利落ち日の新しい順にページ分割して返します。すべてのアカウントで全履歴を取得できます。リクエストごとに1回の呼び出しとして数えます。不明な ID は 404 not_found です。
MCP: ツール funds, action distributions。
パラメータ
| パラメータ | 場所 | 必須 | 種別 | 意味 |
|---|---|---|---|---|
id | パス | はい | 文字列 | ファンド ID。ETF は銘柄 ID で、取引所の4文字コード、コロン、ティッカーの順です(ARCX:SPY)。投資信託は FUND、コロン、ティッカーの順です(FUND:VFIAX)。SPY のような米国ティッカーだけでも、米国の銘柄が1つに決まる場合は使えます。レスポンスには正規の ID が入ります。 |
cursor | クエリ | いいえ | 文字列 | 前のページの next_。ほかのパラメータは同じ値にします。 |
レスポンスフィールド
| フィールド | 種別 | 送信 | 意味 |
|---|---|---|---|
id | 文字列 | 常に | 正規のファンド ID。 |
start | 日付 | 任意 | 送信されません。すべてのアカウントで全履歴を利用できます。 |
distributions | オブジェクトの配列 | 常に | 権利落ち日の新しい順。 |
distributions[].ex_ | 日付 | 常に | ファンドが分配なしで取引される最初の日。 |
distributions[].amount | 文字列 | 常に | 1口あたりの分配額。単位は currency。 |
distributions[].currency | 文字列 | 常に | amount の通貨。 |
distributions[].pay_ | 日付 | 任意 | 支払日。不明な場合は省略されます。 |
distributions[].record_ | 日付 | 任意 | 株主として名簿に載っている必要がある基準日。不明な場合は省略されます。 |
distributions[].kind | income、capital_gain のいずれか | 任意 | 分配の種類。情報源に記載がない場合は省略されます。 |
next_ | 文字列 | 常に | 次のページを読むには cursor として渡します。最後のページでは null です。 |
curl -H "Authorization: Bearer $NARWHAL_API_KEY" \
"https://api.narwhalapi.com/v1/funds/ARCX:SPY/distributions"{
"id": "ARCX:SPY",
"distributions": [
{
"ex_date": "2026-09-18",
"amount": "1.78",
"currency": "USD",
"pay_date": "2026-10-30",
"record_date": "2026-09-18"
}
],
"next_cursor": null
}エラー
エラーは共通の problem 形式で返され、次のコードを含みます: request_。参照: APIエラーとクレジット で形式とクレジットヘッダーを確認できます。失敗したリクエストには課金されません。
| コード | ステータス | 意味 |
|---|---|---|
invalid_ | 400 | パラメータが欠けている、未知である、重複している、または範囲外です。 |
invalid_ | 400 | ID またはペアが、この API の想定する書き方になっていません。 |
too_ | 400 | バッチに50件を超える ID が含まれています。 |
invalid_ | 400 | インターバルが 1d でも 1m でもないか、この銘柄では使えません。 |
range_ | 400 | 期間がルートの許容範囲を超えています。 |
not_ | 404 | そのような銘柄、ファンド、ペアはありません。 |
invalid_ | 400 | このカーソルは、このリクエストが返したものではないか、別のリクエストのものです。 |
cursor_ | 409 | カーソルの元になっている価格が変わりました。カーソルなしでやり直してください。 |
insufficient_ | 402 | クレジット残高が、リクエストの費用に足りません。 |
upstream_ | 503 | 現在、価格を取得できませんでした。バッチでは errors に並びます。しばらくしてからもう一度お試しください。 |
area_ | 503 | この領域は現在応答できません。 |
このページは役に立ちましたか?