curl --request GET \
--url https://data-api.compute-index.com/v2/gpu/hardware/prices/latest \
--header 'Authorization: Bearer <token>'import requests
url = "https://data-api.compute-index.com/v2/gpu/hardware/prices/latest"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://data-api.compute-index.com/v2/gpu/hardware/prices/latest', 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://data-api.compute-index.com/v2/gpu/hardware/prices/latest",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://data-api.compute-index.com/v2/gpu/hardware/prices/latest"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data-api.compute-index.com/v2/gpu/hardware/prices/latest")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data-api.compute-index.com/v2/gpu/hardware/prices/latest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"observation_id": "<string>",
"listing_key": "<string>",
"gpu_canonical_name": "nvidia-h100-sxm5-80gb",
"observed_date": "<string>",
"listing_last_updated_date": "<string>",
"price_amount": 123,
"currency": "USD",
"price_usd": 123,
"price_usd_low": 123,
"price_usd_high": 123,
"price_type": "ask",
"price_per_gpu_system_attach": 123,
"price_basis": "per_module",
"taxes_included": true,
"payment_terms": "<string>",
"stock_status": "in_stock",
"units_available": 123,
"min_order_quantity": 123,
"lead_time_weeks": 123,
"market": "secondary",
"channel": "<string>",
"source_type": "<string>",
"confidence": "<string>",
"counterparty_class": "<string>",
"transaction_level": "<string>",
"gpu_count_in_unit": 8,
"includes_host_cpus": 2,
"includes_dram_gb": 123,
"includes_storage_tb": 123,
"includes_nics": "8x CX-7",
"includes_nvswitch": true,
"includes_scaleout_fabric": true,
"includes_chassis_psu": true,
"includes_cooling_hw": "liquid",
"software_entitlements": "<string>",
"support_years": 123,
"warranty_months": 123,
"services_included": [
"<string>"
],
"condition": "used",
"module_packaging": "SXM",
"unit_age_months": 123,
"unit_age_basis": "<string>",
"warranty_remaining_months": 123,
"hours_used": 123,
"warranty_transferable": true,
"firmware_region_lock": true,
"country": "US",
"country_group": "<string>",
"export_control_regime": "<string>"
}
],
"meta": {
"page_size": 100,
"returned": 100,
"has_more": true,
"next": {
"path": "/v2/gpu/rental/prices/history",
"query_params": {
"page_size": "100",
"page_token": "eyJkIjoicHJpY2VzIiwiZSI6Imhpc3RvcnkiLC4uLg.qgLm5w"
},
"url": "https://data-api.compute-index.com/v2/gpu/rental/prices/history?page_token=eyJkIjoicHJpY2VzIiwiZSI6Imhpc3RvcnksLi4u.qgLm5w&page_size=100"
},
"sort": {
"by": "valid_from",
"order": "desc"
}
}
}{
"status": 401,
"title": "Unauthorized",
"detail": "Missing or invalid bearer token.",
"code": "unauthenticated",
"request_id": "01JQ2X8N4T6V9WZ0ABCD"
}{
"status": 403,
"title": "Forbidden",
"detail": "The token does not carry the scopes this endpoint requires.",
"code": "insufficient_entitlement",
"request_id": "01JQ2X8N4T6V9WZ0ABCD"
}{
"status": 404,
"title": "Not Found",
"detail": "No such resource, or none you are entitled to see.",
"code": "not_found",
"request_id": "01JQ2X8N4T6V9WZ0ABCD"
}{
"status": 422,
"title": "Unprocessable Content",
"detail": "A parameter failed validation.",
"code": "validation_failed",
"request_id": "01JQ2X8N4T6V9WZ0ABCD"
}{
"status": 429,
"title": "Too Many Requests",
"detail": "Rate limit exceeded; see the X-RateLimit-* headers.",
"code": "rate_limited",
"request_id": "01JQ2X8N4T6V9WZ0ABCD"
}Hardware Prices: Latest
Prices to buy GPU hardware outright, from resale and reseller listings.
Returns the current value for every record matching your filters — a snapshot of where things stand now, not a series over time.
curl --request GET \
--url https://data-api.compute-index.com/v2/gpu/hardware/prices/latest \
--header 'Authorization: Bearer <token>'import requests
url = "https://data-api.compute-index.com/v2/gpu/hardware/prices/latest"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://data-api.compute-index.com/v2/gpu/hardware/prices/latest', 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://data-api.compute-index.com/v2/gpu/hardware/prices/latest",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://data-api.compute-index.com/v2/gpu/hardware/prices/latest"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data-api.compute-index.com/v2/gpu/hardware/prices/latest")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data-api.compute-index.com/v2/gpu/hardware/prices/latest")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"observation_id": "<string>",
"listing_key": "<string>",
"gpu_canonical_name": "nvidia-h100-sxm5-80gb",
"observed_date": "<string>",
"listing_last_updated_date": "<string>",
"price_amount": 123,
"currency": "USD",
"price_usd": 123,
"price_usd_low": 123,
"price_usd_high": 123,
"price_type": "ask",
"price_per_gpu_system_attach": 123,
"price_basis": "per_module",
"taxes_included": true,
"payment_terms": "<string>",
"stock_status": "in_stock",
"units_available": 123,
"min_order_quantity": 123,
"lead_time_weeks": 123,
"market": "secondary",
"channel": "<string>",
"source_type": "<string>",
"confidence": "<string>",
"counterparty_class": "<string>",
"transaction_level": "<string>",
"gpu_count_in_unit": 8,
"includes_host_cpus": 2,
"includes_dram_gb": 123,
"includes_storage_tb": 123,
"includes_nics": "8x CX-7",
"includes_nvswitch": true,
"includes_scaleout_fabric": true,
"includes_chassis_psu": true,
"includes_cooling_hw": "liquid",
"software_entitlements": "<string>",
"support_years": 123,
"warranty_months": 123,
"services_included": [
"<string>"
],
"condition": "used",
"module_packaging": "SXM",
"unit_age_months": 123,
"unit_age_basis": "<string>",
"warranty_remaining_months": 123,
"hours_used": 123,
"warranty_transferable": true,
"firmware_region_lock": true,
"country": "US",
"country_group": "<string>",
"export_control_regime": "<string>"
}
],
"meta": {
"page_size": 100,
"returned": 100,
"has_more": true,
"next": {
"path": "/v2/gpu/rental/prices/history",
"query_params": {
"page_size": "100",
"page_token": "eyJkIjoicHJpY2VzIiwiZSI6Imhpc3RvcnkiLC4uLg.qgLm5w"
},
"url": "https://data-api.compute-index.com/v2/gpu/rental/prices/history?page_token=eyJkIjoicHJpY2VzIiwiZSI6Imhpc3RvcnksLi4u.qgLm5w&page_size=100"
},
"sort": {
"by": "valid_from",
"order": "desc"
}
}
}{
"status": 401,
"title": "Unauthorized",
"detail": "Missing or invalid bearer token.",
"code": "unauthenticated",
"request_id": "01JQ2X8N4T6V9WZ0ABCD"
}{
"status": 403,
"title": "Forbidden",
"detail": "The token does not carry the scopes this endpoint requires.",
"code": "insufficient_entitlement",
"request_id": "01JQ2X8N4T6V9WZ0ABCD"
}{
"status": 404,
"title": "Not Found",
"detail": "No such resource, or none you are entitled to see.",
"code": "not_found",
"request_id": "01JQ2X8N4T6V9WZ0ABCD"
}{
"status": 422,
"title": "Unprocessable Content",
"detail": "A parameter failed validation.",
"code": "validation_failed",
"request_id": "01JQ2X8N4T6V9WZ0ABCD"
}{
"status": 429,
"title": "Too Many Requests",
"detail": "Rate limit exceeded; see the X-RateLimit-* headers.",
"code": "rate_limited",
"request_id": "01JQ2X8N4T6V9WZ0ABCD"
}meta.next until it is null, and send nothing alongside it — the
link already carries your filters, dates and ordering. See
Paging.Example
curl -H "Authorization: Bearer $TOKEN" \
"https://data-api.compute-index.com/v2/gpu/hardware/prices/latest?gpu_canonical_name=nvidia-h100-sxm5-80gb"
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Canonical GPU name, exact match — the catalog slug form. Comma-separated list accepted (max 20). Values are listed by the data type's /metadata endpoint.
"nvidia-h100-sxm5-80gb"
Listing identity, stable across scrapes: all observed days of one listing. Obtain it from a previous response — it is the natural anchor for a single listing's history.
Unit condition, exact match. Comma-separated list accepted (max 20). Example: new_sealed,refurbished,used
Market: primary (new channel) or secondary (resale). Comma-separated list accepted.
Sales channel, exact match. Comma-separated list accepted. Example: var_reseller,marketplace,broker,retailer
What the price is for, exact match. Comma-separated list accepted. Example: bare_module,server,rack
Stock status, exact match. Comma-separated list accepted. Example: in_stock
ISO 3166 country code of the listing, exact match (case-sensitive, upper). Comma-separated list accepted. Null on rows whose source states no location.
"US"
Coarse trading group, exact match. Comma-separated list accepted. Example: north_america,europe,apac
Only observations with price_usd >= this value (inclusive).
x >= 0Only observations with price_usd <= this value (inclusive).
x >= 0Sort field. One of: condition, gpu_canonical_name, observed_date, price_usd. Default: gpu_canonical_name.
Sort direction: asc or desc. Default: asc.
Rows per page (max 1000).
1 <= x <= 1000Opaque token token from a previous response's meta.next. It carries the whole request — filters, ordering, window and position — so supply it alone; the only parameter that may accompany it is page_size. Do not construct or parse these; the format is not part of the contract.
Response
Successful Response
The rows in this page, ordered as meta.sort reports.
Show child attributes
Show child attributes
What every collection endpoint reports about the page itself.
There is no total count. has_more tells you whether to fetch another page.
Show child attributes
Show child attributes