GPU Prices (Snapshot)
curl --request GET \
--url https://api.financialdatasets.ai/macro/gpu-prices/snapshot \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.financialdatasets.ai/macro/gpu-prices/snapshot"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.financialdatasets.ai/macro/gpu-prices/snapshot', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.financialdatasets.ai/macro/gpu-prices/snapshot",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.financialdatasets.ai/macro/gpu-prices/snapshot"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.financialdatasets.ai/macro/gpu-prices/snapshot")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.financialdatasets.ai/macro/gpu-prices/snapshot")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"gpu_prices": [
{
"series": "<string>",
"date": "<string>",
"value": 123,
"stability_band": 123,
"change_1d": 123,
"change_1d_pct": 123,
"change_7d_pct": 123,
"change_30d_pct": 123,
"as_of": "<string>"
}
],
"attribution": "<string>"
}{
"error": "Bad Request",
"message": "Invalid request parameters"
}{
"error": "Unauthorized",
"message": "Invalid API key provided"
}{
"error": "Payment Required",
"message": "This endpoint requires a paid subscription. Please upgrade your plan."
}{
"error": "Not Found",
"message": "Ticker XXXX not found"
}GPU Prices
Snapshot
Get the latest GPU rental price for H100, H200, B200, and B300 compute in USD per GPU hour, with the provider spread and the 1, 7, and 30 day changes.
GET
/
macro
/
gpu-prices
/
snapshot
GPU Prices (Snapshot)
curl --request GET \
--url https://api.financialdatasets.ai/macro/gpu-prices/snapshot \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.financialdatasets.ai/macro/gpu-prices/snapshot"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.financialdatasets.ai/macro/gpu-prices/snapshot', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.financialdatasets.ai/macro/gpu-prices/snapshot",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.financialdatasets.ai/macro/gpu-prices/snapshot"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.financialdatasets.ai/macro/gpu-prices/snapshot")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.financialdatasets.ai/macro/gpu-prices/snapshot")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"gpu_prices": [
{
"series": "<string>",
"date": "<string>",
"value": 123,
"stability_band": 123,
"change_1d": 123,
"change_1d_pct": 123,
"change_7d_pct": 123,
"change_30d_pct": 123,
"as_of": "<string>"
}
],
"attribution": "<string>"
}{
"error": "Bad Request",
"message": "Invalid request parameters"
}{
"error": "Unauthorized",
"message": "Invalid API key provided"
}{
"error": "Payment Required",
"message": "This endpoint requires a paid subscription. Please upgrade your plan."
}{
"error": "Not Found",
"message": "Ticker XXXX not found"
}Overview
The GPU Prices Snapshot API returns today’s rental price of every GPU model we track, four rows, each with the spread across providers and the 1, 7, and 30 day percent changes computed for you. Passseries to get one row.
The index is a reference rate built from the published on-demand prices of many cloud GPU providers. It is published every 15 minutes; the snapshot refreshes every hour, and as_of tells you when.
To get started, please create an account and grab your API key at financialdatasets.ai.
You will use the API key to authenticate your API requests.
Coverage
| History | Series | Updated |
|---|---|---|
| Latest day | 4 | Hourly |
Series
Four GPU models:h100, h200, b200, b300. The full list is one free GET request away:
https://api.financialdatasets.ai/macro/gpu-prices/series/
Reading the fields
dateis the UTC day;as_ofis when today’s value was last refreshed.valueis the price in US dollars per GPU hour.stability_bandis the standard deviation of the providers’ prices behindvalue, in the same units.change_1dis the dollar change from the prior day.change_1d_pct,change_7d_pct, andchange_30d_pctare percent changes from 1, 7, and 30 days earlier, rounded to two decimals. A change isnullwhen the comparison day has no value.attributionnames the source of the index. Please keep it when you display the data.
Source and license
The index is the Computable GPU Index, published by Computable.Getting Started
There are only 2 steps for making a successful API call:- Add your API key to the header of the request as
X-API-KEY. - Execute the API request. Add
seriesto get one model instead of all four.
Example
GPU Prices Snapshot
import requests
# add your API key to the headers
headers = {
"X-API-KEY": "your_api_key_here"
}
# create the URL
url = 'https://api.financialdatasets.ai/macro/gpu-prices/snapshot'
# make API request
response = requests.get(url, headers=headers)
# parse the latest prices from the response
gpu_prices = response.json().get('gpu_prices')
Example Response
{
"gpu_prices": [
{
"series": "h100",
"date": "2026-09-28",
"value": 3.585166,
"stability_band": 0.608466,
"change_1d": 0.038145,
"change_1d_pct": 1.08,
"change_7d_pct": 0.2,
"change_30d_pct": 3.8,
"as_of": "2026-09-28T15:52:56Z"
},
{
"series": "h200",
"date": "2026-09-28",
"value": 4.292195,
"stability_band": 0.671639,
"change_1d": -0.035353,
"change_1d_pct": -0.82,
"change_7d_pct": -0.87,
"change_30d_pct": 1.67,
"as_of": "2026-09-28T15:52:57Z"
}
],
"attribution": "Computable GPU Index by Computable — mcp.getcomputable.com"
}
Authorizations
API key for authentication.
Query Parameters
Optional GPU model to return one row instead of all four: h100, h200, b200, or b300.