自国通貨建てでコモディティ価格を調べる

2026年10月24日、インドネシア・ルピア建ての金スポット価格は、1 回のリクエストでトロイオンスあたり Rp 72,145,300、1 グラムあたり約 Rp 2,319,525 でした。金は対応するどの通貨でも直接リクエストできます。他の商品は米ドル建てなので、為替レートを掛けます。

APIを使う方法

商品コードで金属または原油を選び、続けて通貨コードで見積通貨を選びます。金はルピアでの直接リクエストに対応しています。銀、プラチナ、パラジウム、銅、WTI、Brent のスポット価格は米ドル建てなので、ルピアで計算するには USD/IDR の為替レートも必要です。

コモディティと FX のスポット価格は、すべてのアカウントでライブです。これは金の直接リクエストにも、換算に使う価格にも当てはまります。ルピア金額を表示するときは、価格の時刻に加え、トロイオンスあたりかグラムあたりかも併記してください。

  1. APIキーを取得 無料キーを取得し、環境変数 NARWHAL_API_KEY に保存します。Authorization: Bearer YOUR_KEY として https://api.narwhalapi.com へのリクエストに付けて送ります。商品と FX のリクエストは同じアカウントとキーを使います。
  2. 見積通貨を選ぶ ルピア建ての金は GET /v1/commodities/spot/XAU/IDR をリクエストします。銀は、米ドルのスポット価格と GET /v1/fx/rates/USD?currencies=IDR をリクエストします。金のコードの後ろの通貨が直接見積の通貨を決め、FX リクエストは銀を換算するレートを提供します。
  3. ルピア価格を計算する Python スクリプトで金を IDR で直接取得し、銀のドル価格に USD/IDR レートを掛けます。また、金の見積をトロイオンスあたりのグラム数で割り、四捨五入した 1 グラムあたりの価格も出します。
    Python、金と銀のインドネシア・ルピア価格
    import os
    import requests
    
    H = {"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"}
    API = "https://api.narwhalapi.com/v1"
    GRAMS_PER_TROY_OUNCE = 31.1034768
    
    # Gold is quoted in every FX currency we serve, so ask for rupiah directly.
    gold = requests.get(f"{API}/commodities/spot/XAU/IDR", headers=H, timeout=10).json()
    print(
        "gold IDR per oz  ",
        gold["price"],
        "->",
        round(float(gold["price"]) / GRAMS_PER_TROY_OUNCE),
        "per gram",
    )
    
    # Silver is quoted in US dollars only: convert with the USD/IDR rate.
    silver = float(
        requests.get(f"{API}/commodities/spot/XAG/USD", headers=H, timeout=10).json()[
            "price"
        ]
    )
    idr = float(
        requests.get(
            f"{API}/fx/rates/USD", params={"currencies": "IDR"}, headers=H, timeout=10
        ).json()["rates"][0]["rate"]
    )
    print("silver IDR per oz", round(silver * idr), "=", silver, "x", idr)
  4. 価格には単位を付けておく 金の出力はトロイオンスあたりのルピアと 1 グラムあたりのルピア、銀の出力は 1 オンスあたりのルピアとして読みます。通貨の換算が変えるのは銀の見積の通貨であり、金で別に行う割り算が変えるのは重量の単位です。

スクリプトは、各商品のレスポンスから price を、FX レスポンスの rates 配列から rate を読み取ります。金の 1 グラムあたりの金額は割り算の後で、銀のルピア金額は掛け算の後で丸められます。表示される銀の計算には、その掛け算に使ったドル価格と為替レートが含まれます。

API のエラーは application/problem+json で、status、code、detail、request_id を含みます。リクエストがエラーを返した場合は、価格計算にレスポンスを使う前に code と detail を読んでください。

シートで、またはコードなしで価格を取得する

コードなしで金を見るには、Narwhal の金価格ページを開いてください。多くの通貨での金価格を表示します。商品と FX のリクエストを自分で書かずに、自国通貨の金価格を読みたいときに便利です。

シートでは =XAUUSD * USDIDR を使い、2 つのセルにはどちらも API の値を入れます。XAUUSD には米ドル建ての金価格、USDIDR にはドルからルピアへのレートが入ります。その積が、同じ重量単位でのルピア建て金価格です。これは金の換算ルートで、API では IDR の金を直接リクエストすることもできます。

状況に応じた方法の選び方

状況適した方法理由
対応通貨建ての金通貨を直接指定する金スポットは FX 対応通貨一覧のすべての通貨に対応
その他の商品を自国通貨で米ドルのスポット価格に USD/自国通貨のレートを掛ける金以外の商品のスポット見積は米ドルのみ
特定の時点の価格両方に同じタイムスタンプのバーを使う商品価格と為替レートは同じ時刻のものにする必要があります

ルピア建ての金で、直接取得した価格と換算した価格が違うのはなぜですか?

2 つの見積のタイムスタンプが異なるためです。2026年10月24日の例では、ルピアの金の直接見積は 2026年10月23日 20:59 UTC、FX レートは 2026年10月23日 00:00 UTC の時刻です。したがって、ドル建ての金の見積にそのレートを掛けると、ルピアの直接見積とは別の時刻で計算することになります。

2026年10月24日の例では、USD 3,996.00 の金に USD/IDR 18,107.8 を掛けると Rp 72,358,769 になり、直接見積の Rp 72,145,300 より 0.3% 高くなります。方法を 1 つ決めて、それを使い続けてください。特定の時点の価格が必要なら、両方に同じタイムスタンプのバーを使います。

USD/IDR のレートは掛けるのですか、割るのですか?

ドル建ての商品価格に USD/IDR のレートを掛けると、ルピア価格になります。2026年10月24日の例では、USD/IDR 18,107.8 は 1 米ドルで 18,107.8 ルピアを買えることを表します。レートは 1 ドルあたりのルピアとして読み、商品見積のドル数に掛けます。

通貨の換算と重量の換算は別々に行ってください。USD/IDR を掛けると、商品見積の重量単位のままでルピア価格になります。金を 1 グラムあたりで表すには、トロイオンスあたりの価格を、1 トロイオンスのグラム数である 31.1034768 で割ります。

金で直接リクエストできる通貨は何ですか?

金は、FX 対応範囲の一覧にある通貨に対応します。スポットのリクエストでは、XAU の後ろに一覧の通貨コードを指定します。404 currency_not_supported は、その商品がその通貨では提供されていないことを意味します。

通貨の一覧が当てはまるのは、金の直接見積です。銀、プラチナ、パラジウム、銅、WTI、Brent のスポットは引き続き米ドルのみです。これらの商品は米ドルの見積を使い、希望の通貨に対するドルの為替レートを掛けてください。

実例:ルピア建ての金と銀

2026年10月24日、金の直接見積はトロイオンスあたり Rp 72,145,300 でした。このルピア金額から始めて、トロイオンスあたり 31.1034768 グラムで割ります。結果を最も近いルピアに丸めると、1 グラムあたり Rp 2,319,525 になります。

2026年10月24日の銀は、1 オンスあたり USD 53.9171 のスポット価格から始めます。これに USD/IDR のレート 18,107.8 を掛け、最も近いルピアに丸めます。結果は 1 オンスあたり Rp 976,320 です。

2026年10月24日の計算数値丸めた結果
金(1 グラムあたり)Rp 72,145,300 / 31.10347681 グラムあたり Rp 2,319,525
銀(1 オンスあたり)USD 53.9171 × 1 USD あたり 18,107.8 IDR1 オンスあたり Rp 976,320

公開。

次のステップ