Pythonで金価格を1グラム単位で取得する(24K・22K・18K)
APIキーなしで24K、22K、18Kの1グラム当たり金価格をPythonで取得し、Decimalで安全に計算する方法。
読む →Redditで繰り返し出てくる金価格API関連の疑問に、率直に答える。無料プラン、更新頻度、レート制限、認証方式、数値の出どころ、商用利用の可否、そして本番で使うに足るクオリティかどうかまで。
Redditで「金価格 API」を検索すると、スレッドの形はほぼ毎回同じだ。ダッシュボード、価格アラート、トレーディングボット、あるいは地金を値付けするオンラインストアを作っている誰かが、コードから取得できるリアルタイムの金価格を求めている。何かを組み込む前に、彼らはr/algotrading、r/webdev、r/golangで、決まって同じ一握りの質問をする。無料プランはあるか、数値はどれくらい新鮮か、制限はどうなっているか、商用利用できるか、そのデータは信頼できるか、という質問だ。
本稿ではgoldprice.devを実例として、これらの質問に直接答えていく。読むだけなら登録は不要で、下に示す最初のAPI呼び出しはキーなしで動く。
これは開発者向けのコモディティ価格APIであり、金・銀・銅をhttps://api.goldprice.devにある単一の認証付きRESTエンドポイントから提供する。すべてのレスポンスには相互検証済みの陳旧度フラグが含まれており、?include=を使えばデータソースごとの価格・タイムスタンプや乖離幅も取得できるので、あるアップストリームが遅れているときにコード側で黙って失敗するのではなく、それを検知できる。MCPサーバーは無料プランを含む全プランに標準で付属している。
これは証券会社でも決済用のフィードでもない。ここで提供される価格は、表示・分析・アラート用に公開される参考値だ。取引を決済するための約定可能なディーリング・クオートが必要なら、公開されている金価格APIのどれも適切なツールではない。それは本APIも例外ではない。
ある。しかもクレジットカードは不要だ。無料プランは月1,000回の呼び出し、毎分30リクエストまでで、金(XAU)の15分遅延の現物価格をカバーする。有料プランでは、銀と銅、先物決済データ、より高い上限、そして商用利用権が加わる。
| プラン | 価格 | 月間呼び出し数 | 追加される内容 |
|---|---|---|---|
| Free | $0 | 1,000 | XAU現物、MCP、カード不要 |
| Physical | $10/月 | 20,000 | + 金先物、国別ディーラー価格 |
| Pro | $30/月 | 100,000 | + 銀、銅、日次履歴:金は1996年から、銀は2006年から、銅現物は2026-09-16から、商用利用 |
| Realtime Pro | $80/月 | 1,000,000 | + XAU/XAG/HG WebSocketティックストリームとphysicalチャネル |
リアルタイムの現物価格は利用許諾を得た市場の一次データに基づき、Freeプラン・匿名呼び出し・本サイトでは15分遅れで提供される。先物決済値は取引所の決済スケジュールに従って更新される。このAPIの要点は、いま自分が見ているのがどちらの種類の値なのかを推測する必要が一切ないということだ。すべてのレスポンスにはcomputed_atが含まれ、値が想定される更新ウィンドウより古くなるとis_staleがセットされる。より細かい粒度が必要なら、?include=sourcesでデータソースごとのタイムスタンプまで分解できる。「リアルタイム」という漠然としたラベルを鵜呑みにするのではなく、レスポンス本体から新鮮さを直接読み取れる。
無料プランは毎分30リクエスト、有料プランはそれぞれ120と500になる。すべてのレスポンスに標準のX-RateLimit-Remainingヘッダーが付いてくるので、正しいやり方はそれを読み取り、残数が少なくなったら自ら速度を落とすことであり、闇雲にポーリングして429を食らうことではない。ほとんどのアプリでは、元の値が実際に動く頻度に合わせた短いクライアント側キャッシュを挟むだけで、無料プランの範囲に余裕を持って収まる。
ベアラートークンによる認証だ。キーにはga_live_という接頭辞が付き、Authorizationヘッダーに入れる。加えて、IPごとに毎分30、毎時100、月1,000リクエストまでという上限付きの匿名アクセス経路も用意されており、価格・タイムスタンプ・陳旧度を返す。bid/askは有料のみの任意項目で、整合した両側の気配値が必要だ。認証すると、始値・高値・安値・前日終値・変化率、そしてデータソース間の乖離フィールドを含む?include=statsが解禁される。なお?include=sourcesと?include=karatは認証の有無にかかわらず利用できる。
できる。そしてこれこそ、大半のAPIが隠している部分だ。?include=sourcesを付けると、レスポンスにsources[]という配列が含まれ、アップストリームごとに1行、それぞれ独自の価格とタイムスタンプを持つ。データソース間で食い違いがある場合、?include=stats(認証必須)にはdivergence_bpsとdivergence_flagが含まれるので、出所不明な単一の混合値を鵜呑みにするのではなく、自分自身で許容範囲を決められる。誤った価格がコストにつながるようなものを作っているなら、この可視性こそが、ウェブページのスクレイピングではなく構造化されたAPIを使うべき理由だ。
無料プランとPhysicalプランは、個人利用および評価目的に限られる。商用利用、すなわち自分がリリースするプロダクトの中で価格を再表示することは、Proプランから可能になり、出典表示が必須になる。自分のユーザーの前に金価格を表示するつもりなら、Proが最低ラインだ。
使える。MCPサーバーは無料プランを含む全プランに含まれている。Claude、Cursor、あるいはMCPに対応した任意のランタイムに設定ブロックを一つ追加するだけで、独自のツールコードを書かなくても、エージェントが直接リアルタイム価格を取得できるようになる。データはREST APIが提供しているものと同一だ。セットアップの詳細を知りたい場合は、MCPの完全な手順ガイドを参照してほしい。
キーも依存関係も不要だ。
curl https://api.goldprice.dev/v1/prices?symbol=XAU-USD-SPOT
価格と陳旧度フラグを含むJSONが15分遅延で返る。bid/askは有料のみの任意項目で、整合した両側の気配値がある場合に返る。カラット別のグラム単価内訳が欲しければ?include=karatを、寄与しているデータソースが欲しければ?include=sourcesを付け加える。完全なレスポンス形式とより高い上限が欲しくなったら、無料キーの取得は1分で終わる。
特定言語向けの実装については、Fetch live gold prices in JavaScriptがREST経路を端から端まで解説しており、Caching gold prices and staying inside rate limitsは大量アクセス時の扱い方をカバーしている。
関連ガイド
APIキーなしで24K、22K、18Kの1グラム当たり金価格をPythonで取得し、Decimalで安全に計算する方法。
読む →Google Sheetsに金のポートフォリオテンプレートを取り込み、基準価格を更新して、保有品ごとの参考評価額、購入費用、差額を計算します。
読む →現物価格、OHLCバー、UTCタイムスタンプ、制御されたポーリングを組み合わせる仕組みを、TypeScriptとSVGの実例で解説します。
読む →goldprice.dev
リアルタイムの金価格、ヒストリカルOHLC、マルチソース集計 — REST・SSE経由で提供。