curl --request GET \
--url https://api.financialdatasets.ai/macro/gpu-prices \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.financialdatasets.ai/macro/gpu-prices"
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', 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",
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"
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")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.financialdatasets.ai/macro/gpu-prices")
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>",
"next_page_url": "<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"
}Historical
Get the daily GPU rental price index for H100, H200, B200, and B300 compute in USD per GPU hour, with the provider spread and the 1, 7, and 30 day changes.
curl --request GET \
--url https://api.financialdatasets.ai/macro/gpu-prices \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.financialdatasets.ai/macro/gpu-prices"
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', 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",
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"
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")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.financialdatasets.ai/macro/gpu-prices")
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>",
"next_page_url": "<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 API lets you pull the daily rental price of one GPU model at a time: what an hour of H100, H200, B200, or B300 compute costs on the open market, in US dollars per GPU hour. Each day carries the spread across providers behind the price and the change over 1, 7, and 30 days, computed for you. The index is a reference rate built from the published on-demand prices of many cloud GPU providers. A new value is published every 15 minutes; we store one value per day, the newest print of each UTC day, and refresh today’s value every hour. 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 |
|---|---|---|
| August 2026 to today | 4 | Hourly |
Series
| Series | What it is | Units | From |
|---|---|---|---|
h100 | NVIDIA H100 rental price index | USD per GPU hour | 2026-08-23 |
h200 | NVIDIA H200 rental price index | USD per GPU hour | 2026-08-23 |
b200 | NVIDIA B200 rental price index | USD per GPU hour | 2026-08-16 |
b300 | NVIDIA B300 rental price index | USD per GPU hour | 2026-08-10 |
GET request to:
https://api.financialdatasets.ai/macro/gpu-prices/series/
Reading the fields
dateis the UTC day the value belongs to. The value is the newest print of that day; for today it is the newest print at the last hourly refresh, andas_oftells you when that was.valueis the price in US dollars per GPU hour.stability_bandis the standard deviation of the providers’ prices behindvalue, in the same units. A wide band means providers disagree; a narrow band means a tight market.change_1disvalueminus the prior day’s value, in dollars.change_1d_pct,change_7d_pct, andchange_30d_pctare the percent changes from 1, 7, and 30 days earlier, rounded to two decimals.- A change is
nullwhen 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 under a Creative Commons Attribution license. Attribution: “Computable GPU Index by Computable — mcp.getcomputable.com”.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 with
seriesand, optionally,start_dateandend_date.
Example
import requests
# add your API key to the headers
headers = {
"X-API-KEY": "your_api_key_here"
}
# set your query params
series = 'h100'
start_date = '2026-09-01'
end_date = '2026-09-28'
# create the URL
url = (
f'https://api.financialdatasets.ai/macro/gpu-prices'
f'?series={series}'
f'&start_date={start_date}'
f'&end_date={end_date}'
)
# make API request
response = requests.get(url, headers=headers)
# parse the daily 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": "h100",
"date": "2026-09-27",
"value": 3.547021,
"stability_band": 0.605112,
"change_1d": -0.002114,
"change_1d_pct": -0.06,
"change_7d_pct": -0.35,
"change_30d_pct": 2.71,
"as_of": "2026-09-28T00:20:09Z"
}
],
"attribution": "Computable GPU Index by Computable — mcp.getcomputable.com",
"next_page_url": "https://api.financialdatasets.ai/macro/gpu-prices/?cursor=..."
}
next_page_url for the rest of the window. Without dates the window is the trailing 90 days.Authorizations
API key for authentication.
Query Parameters
The GPU model: h100, h200, b200, or b300. Use the /macro/gpu-prices/series endpoint to get the list.
The first day to return, inclusive, in YYYY-MM-DD format. Defaults to 90 days before end_date when both dates are omitted; omit it with an end_date to get all available history through that day.
The last day to return, inclusive, in YYYY-MM-DD format. Defaults to today.
Opaque pagination cursor from a previous response's next_page_url. When provided, all other query parameters are ignored: the cursor carries the original request's filters. Treat it as opaque; do not construct or modify it.
Response
GPU prices response