GPU & LLM Inference Pricing API — Live Rates for 94+ Cloud Providers & 33+ LLM Providers
Embed live GPU compute and LLM inference pricing from 94+ GPU providers and 33+ LLM providers directly into your website, dashboard, or application. GPU data refreshes every 15 minutes. LLM prices updated daily. Free to use — no API key required.
94+ GPU Cloud Providers
live data
33+ LLM Providers
262+ models
No auth needed
open API
CORS enabled
any origin
Base URL
https://computecomparison.com/api/v1Authentication
No key requiredAll endpoints are publicly accessible — no API key needed. Just call the URL directly.
GPU Compute Endpoints
CORS
All /api/v1/* endpoints include Access-Control-Allow-Origin: * headers, so you can call them directly from browser JavaScript on any domain — no proxy needed.
Data Freshness
Prices are fetched from each provider's public API and refreshed every 15 minutes. Each listing includes a source field:live (fetched this cycle),cached (from previous cycle), orfallback (static rates used when provider API is unavailable). Responses include Cache-Control: public, max-age=60.
Live API Status
Check provider health and uptime in real time
GPU HTML Embed Widgets
Copy and paste any widget below directly into your website's HTML. No build tools or frameworks required.
cc_live_demo0000000000000000000000 in the snippet. The demo key is rate-limited to 500 req / 15 min and should not be used in production.Price Ticker
Scrolling marquee showing every provider's best price per hour, right-to-left. Drop it into any page header or sidebar.
Preview (loading…)
<!-- GPU Price Ticker — computecomparison.com -->
<div id="cc-ticker-wrap" style="font-family:ui-monospace,monospace;background:#0a0a0f;border:1px solid #1e1e2e;border-radius:8px;overflow:hidden;display:flex;align-items:center;height:38px">
<a href="https://computecomparison.com" target="_blank" rel="noopener noreferrer"
style="shrink:0;padding:0 14px;border-right:1px solid #1e1e2e;font-size:10px;font-weight:700;color:#00ff88;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;height:100%;display:flex;align-items:center;text-decoration:none">
LIVE GPU PRICES
</a>
<div style="flex:1;overflow:hidden;position:relative">
<div id="cc-ticker-track" style="display:inline-flex;gap:0;white-space:nowrap;will-change:transform">
<span id="cc-ticker-inner" style="display:inline-flex;align-items:center;gap:0"></span>
<span id="cc-ticker-clone" style="display:inline-flex;align-items:center;gap:0"></span>
</div>
</div>
<a href="https://computecomparison.com" target="_blank" rel="noopener"
style="shrink:0;padding:0 12px;border-left:1px solid #1e1e2e;font-size:9px;color:#333;text-decoration:none;height:100%;display:flex;align-items:center;white-space:nowrap">
CC ↗
</a>
</div>
<script>
(function () {
var API_KEY = 'YOUR_API_KEY';
var SPEED = 60; // pixels per second — increase to scroll faster
// Uses JSONP via <script> tag — works cross-origin with no CORS headers needed
var cbName = '__ccTicker_' + Math.random().toString(36).slice(2);
var done = false;
window[cbName] = function (json) {
done = true;
delete window[cbName];
var items = (json.data || [])
.filter(function (p) { return p.best_price_per_hour != null; })
.sort(function (a, b) { return a.best_price_per_hour - b.best_price_per_hour; });
function makeItems(container) {
container.innerHTML = '';
items.forEach(function (p) {
var sep = document.createElement('span');
sep.style.cssText = 'color:#1e1e2e;padding:0 10px;font-size:14px;user-select:none';
sep.textContent = '|';
var item = document.createElement('a');
item.href = p.profile_url || ('https://computecomparison.com/provider/' + p.name.toLowerCase().replace(/[^a-z0-9]+/g, '-'));
item.target = '_blank';
item.rel = 'noopener noreferrer';
item.style.cssText = 'display:inline-flex;align-items:center;gap:6px;padding:0 6px;text-decoration:none;cursor:pointer;border-radius:3px;transition:background 0.15s';
item.onmouseover = function() { this.style.background = 'rgba(0,246,255,0.07)'; };
item.onmouseout = function() { this.style.background = 'transparent'; };
item.innerHTML =
'<span style="color:#00f6ff;font-size:11px">' + p.name + '</span>' +
'<span style="color:#00ff88;font-size:12px;font-weight:700">$' + p.best_price_per_hour.toFixed(4) + '</span>' +
'<span style="color:#555;font-size:10px">/hr</span>';
container.appendChild(sep);
container.appendChild(item);
});
}
var inner = document.getElementById('cc-ticker-inner');
var clone = document.getElementById('cc-ticker-clone');
var track = document.getElementById('cc-ticker-track');
if (!inner || !clone || !track) return;
makeItems(inner);
makeItems(clone);
var offset = 0;
var last = null;
function tick(ts) {
if (!last) last = ts;
var dt = (ts - last) / 1000;
last = ts;
var width = inner.scrollWidth;
if (width > 0) {
offset += SPEED * dt;
if (offset >= width) offset -= width;
track.style.transform = 'translateX(-' + offset + 'px)';
}
requestAnimationFrame(tick);
}
requestAnimationFrame(tick);
};
var s = document.createElement('script');
s.src = 'https://computecomparison.com/api/v1/prices/providers?api_key=' + encodeURIComponent(API_KEY) + '&callback=' + cbName;
s.onerror = function () {
delete window[cbName];
var inner = document.getElementById('cc-ticker-inner');
if (inner) inner.innerHTML = '<span style="color:#555;font-size:11px;padding:0 14px">Could not load prices — check API_KEY</span>';
};
// Timeout fallback in case script loads but callback never fires (bad key returns non-JS)
setTimeout(function () {
if (!done) {
delete window[cbName];
var inner = document.getElementById('cc-ticker-inner');
if (inner && !inner.children.length) inner.innerHTML = '<span style="color:#555;font-size:11px;padding:0 14px">Could not load prices — check API_KEY</span>';
}
}, 5000);
document.head.appendChild(s);
})();
</script>Pricing Table
Full sortable table of live GPU listings. Configurable GPU filter and row count.
Preview (loading…)
<!-- GPU Pricing Table — computecomparison.com -->
<div id="cc-gpu-table" style="font-family:ui-monospace,monospace;background:#0a0a0f;border:1px solid #1e1e2e;border-radius:10px;overflow:hidden;max-width:100%">
<div style="padding:12px 16px;border-bottom:1px solid #1e1e2e;display:flex;align-items:center;justify-content:space-between">
<span style="color:#00ff88;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase">Live GPU Prices</span>
<a href="https://computecomparison.com" target="_blank" rel="noopener" style="color:#555;font-size:10px;text-decoration:none">computecomparison.com ↗</a>
</div>
<div style="overflow-x:auto">
<table id="cc-gpu-table-body" style="width:100%;border-collapse:collapse;font-size:12px">
<thead>
<tr style="border-bottom:1px solid #1e1e2e">
<th style="text-align:left;padding:8px 14px;color:#555;font-weight:500">Cloud Provider</th>
<th style="text-align:left;padding:8px 14px;color:#555;font-weight:500">GPU</th>
<th style="text-align:right;padding:8px 14px;color:#555;font-weight:500">On-Demand</th>
<th style="text-align:right;padding:8px 14px;color:#555;font-weight:500">Spot</th>
<th style="text-align:left;padding:8px 14px;color:#555;font-weight:500">Region</th>
</tr>
</thead>
<tbody id="cc-rows"></tbody>
</table>
</div>
<div style="padding:8px 16px;border-top:1px solid #1e1e2e;font-size:10px;color:#333">
Powered by <a href="https://computecomparison.com" target="_blank" rel="noopener" style="color:#00ff88;text-decoration:none">ComputeComparison</a>
</div>
</div>
<script>
(function() {
var API_KEY = 'YOUR_API_KEY';
var GPU_FILTER = 'H100'; // change or remove
var MAX_ROWS = 10;
var done = false;
var cbName = '__ccTable_' + Math.random().toString(36).slice(2);
window[cbName] = function(json) {
done = true;
delete window[cbName];
var tbody = document.getElementById('cc-rows');
if (!tbody || !json.data) return;
json.data.forEach(function(r) {
var tr = document.createElement('tr');
tr.style.borderBottom = '1px solid #111118';
tr.innerHTML =
'<td style="padding:8px 14px;color:#00f6ff">' + r.provider + '</td>' +
'<td style="padding:8px 14px;color:#c9d1d9">' + r.gpu_model + '</td>' +
'<td style="padding:8px 14px;color:#00ff88;text-align:right">$' + r.price_per_hour.toFixed(4) + '/hr</td>' +
'<td style="padding:8px 14px;color:#555;text-align:right">' + (r.spot_price_per_hour ? '$' + r.spot_price_per_hour.toFixed(4) + '/hr' : '—') + '</td>' +
'<td style="padding:8px 14px;color:#555">' + r.region + '</td>';
tbody.appendChild(tr);
});
};
setTimeout(function() {
if (!done) {
delete window[cbName];
var tbody = document.getElementById('cc-rows');
if (tbody && !tbody.children.length) tbody.innerHTML = '<tr><td colspan="5" style="padding:12px 14px;color:#555;text-align:center">Could not load prices — check API_KEY</td></tr>';
}
}, 5000);
var s = document.createElement('script');
s.onerror = function() {
delete window[cbName];
var tbody = document.getElementById('cc-rows');
if (tbody) tbody.innerHTML = '<tr><td colspan="5" style="padding:12px 14px;color:#555;text-align:center">Could not load prices — check API_KEY</td></tr>';
};
var url = 'https://computecomparison.com/api/v1/prices?sort=price&per_page=' + MAX_ROWS
+ (GPU_FILTER ? '&gpu=' + encodeURIComponent(GPU_FILTER) : '')
+ '&api_key=' + encodeURIComponent(API_KEY)
+ '&callback=' + cbName;
s.src = url;
document.head.appendChild(s);
})();
</script>Price Badge
Inline badge showing the best current price for a single GPU model.
Preview (loading…)
<!-- Best GPU Price Badge — computecomparison.com -->
<div id="cc-badge" style="display:inline-flex;align-items:center;gap:10px;font-family:ui-monospace,monospace;background:#0a0a0f;border:1px solid #1e1e2e;border-radius:8px;padding:10px 16px">
<span style="font-size:11px;color:#555" id="cc-badge-gpu">H100 80GB</span>
<span style="font-size:18px;font-weight:700;color:#00ff88" id="cc-badge-price">—</span>
<span style="font-size:10px;color:#555">/hr</span>
<span style="font-size:10px;color:#333">·</span>
<span style="font-size:10px;color:#555" id="cc-badge-provider">—</span>
<a href="https://computecomparison.com" target="_blank" rel="noopener" style="font-size:9px;color:#333;text-decoration:none;margin-left:4px">CC ↗</a>
</div>
<script>
(function() {
var API_KEY = 'YOUR_API_KEY';
var GPU = 'H100 80GB'; // exact model name
var done = false;
var cbName = '__ccBadge_' + Math.random().toString(36).slice(2);
window[cbName] = function(json) {
done = true;
delete window[cbName];
var match = (json.data || []).find(function(g) {
return g.gpu_model.toLowerCase() === GPU.toLowerCase();
});
if (!match) return;
var el = document.getElementById('cc-badge-price');
var prov = document.getElementById('cc-badge-provider');
var gpuEl = document.getElementById('cc-badge-gpu');
if (el) el.textContent = '$' + match.best_price_per_hour.toFixed(4);
if (prov) prov.textContent = match.best_provider || '';
if (gpuEl) gpuEl.textContent = match.gpu_model;
};
setTimeout(function() { if (!done) delete window[cbName]; }, 5000);
var s = document.createElement('script');
s.src = 'https://computecomparison.com/api/v1/prices/gpus?api_key=' + encodeURIComponent(API_KEY) + '&callback=' + cbName;
s.onerror = function() { delete window[cbName]; };
document.head.appendChild(s);
})();
</script>Compact List
Compact card showing best prices for a configurable list of GPU models.
Preview (loading…)
<!-- Compact GPU Price List — computecomparison.com -->
<div id="cc-compact" style="font-family:ui-monospace,monospace;background:#0a0a0f;border:1px solid #1e1e2e;border-radius:10px;padding:16px;max-width:340px">
<div style="font-size:11px;color:#00ff88;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-bottom:12px">Best GPU Prices</div>
<div id="cc-compact-list" style="display:flex;flex-direction:column;gap:8px"></div>
<div style="margin-top:12px;font-size:10px;color:#333">
<a href="https://computecomparison.com" target="_blank" rel="noopener" style="color:#00ff88;text-decoration:none">View all on ComputeComparison ↗</a>
</div>
</div>
<script>
(function() {
var API_KEY = 'YOUR_API_KEY';
var GPUS = ['H100 80GB', 'A100 80GB', 'RTX 4090', 'A10G']; // models to show
var done = false;
var cbName = '__ccCompact_' + Math.random().toString(36).slice(2);
window[cbName] = function(json) {
done = true;
delete window[cbName];
var list = document.getElementById('cc-compact-list');
if (!list) return;
(json.data || [])
.filter(function(g) { return GPUS.indexOf(g.gpu_model) !== -1; })
.sort(function(a, b) { return GPUS.indexOf(a.gpu_model) - GPUS.indexOf(b.gpu_model); })
.forEach(function(g) {
var row = document.createElement('div');
row.style.cssText = 'display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:#111118;border-radius:6px';
row.innerHTML =
'<span style="color:#c9d1d9;font-size:12px">' + g.gpu_model + '</span>' +
'<div style="text-align:right">' +
'<span style="color:#00ff88;font-size:13px;font-weight:700">$' + g.best_price_per_hour.toFixed(4) + '</span>' +
'<span style="color:#555;font-size:10px">/hr</span>' +
'<div style="color:#555;font-size:10px">' + (g.best_provider || '') + '</div>' +
'</div>';
list.appendChild(row);
});
};
setTimeout(function() {
if (!done) {
delete window[cbName];
var list = document.getElementById('cc-compact-list');
if (list && !list.children.length) list.innerHTML = '<div style="color:#555;font-size:11px;padding:6px 0">Could not load prices — check API_KEY</div>';
}
}, 5000);
var s = document.createElement('script');
s.src = 'https://computecomparison.com/api/v1/prices/gpus?api_key=' + encodeURIComponent(API_KEY) + '&callback=' + cbName;
s.onerror = function() {
delete window[cbName];
var list = document.getElementById('cc-compact-list');
if (list) list.innerHTML = '<div style="color:#555;font-size:11px;padding:6px 0">Could not load prices — check API_KEY</div>';
};
document.head.appendChild(s);
})();
</script>GPU Webhooks
Subscribe to real-time GPU price change events. When GPU prices shift, ComputeComparison POSTs a signed JSON payload to your URL — no polling required.
Event Types
| Event | Fires when |
|---|---|
price.updated | Any GPU price changes (up or down). Default. |
price.drop | One or more GPU prices decrease. |
price.spike | One or more GPU prices increase. |
Payload Shape
{
"event": "price.drop",
"api_version": "v1",
"fired_at": "2025-01-15T12:15:00.000Z",
"changes": [
{
"provider": "RunPod",
"gpu_model": "H100 80GB",
"region": "US-TX-3",
"old_price": 2.99,
"new_price": 2.49,
"change_pct": -16.72,
"availability": "high"
}
]
}Verifying Signatures
Every delivery includes an X-CC-Signature header. Verify it to confirm the request came from ComputeComparison and wasn't tampered with.
const crypto = require('crypto');
function verifySignature(secret, rawBody, signatureHeader) {
const expected = 'sha256=' +
crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
return crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signatureHeader)
);
}
// Express example
app.post('/webhook', express.raw({ type: 'application/json' }), (req, res) => {
const sig = req.headers['x-cc-signature'];
if (!verifySignature(process.env.WEBHOOK_SECRET, req.body, sig)) {
return res.status(401).send('Invalid signature');
}
const payload = JSON.parse(req.body);
console.log(payload.event, payload.changes.length, 'changes');
res.sendStatus(200);
});import hmac, hashlib
def verify_signature(secret: str, raw_body: bytes, signature_header: str) -> bool:
expected = 'sha256=' + hmac.new(
secret.encode(), raw_body, hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature_header)
# Flask example
from flask import Flask, request
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def webhook():
sig = request.headers.get('X-CC-Signature', '')
if not verify_signature(WEBHOOK_SECRET, request.get_data(), sig):
return 'Invalid signature', 401
payload = request.get_json()
print(payload['event'], len(payload['changes']), 'changes')
return '', 200Limits & Behaviour
- ›10 active webhooks per API key
- ›Delivery timeout: 10 seconds per attempt
- ›No automatic retries — use the delivery log to detect failures
- ›Price changes are checked every 60 seconds
- ›Delivery log retains the last 50 attempts per webhook
- ›Demo key webhooks are registered but never fired