Public Nodes Feed
Every GPU node currently rentable on Lium, as one unauthenticated JSON call. No key, no signup, no rate-limit negotiation — point your ingester at it and start listing us today.
| Resource | URL |
|---|---|
| Live feed | https://lium.io/api/public/v1/nodes |
| OpenAPI schema | https://lium.io/api/openapi.json |
curl -sSL https://lium.io/api/public/v1/nodes
Response
{
"generated_at": "2026-08-17T09:14:03.117Z",
"count": 95,
"nodes": [
{
"id": "ad83de56-8a04-4ab1-ac5a-4ab007b4e2b3",
"gpu_model": "RTX 5090",
"gpu_count": 8,
"available_gpu_count": 8,
"price_per_gpu_hour": 0.55,
"price_per_node_hour": 4.4,
"min_rentable_gpu_count": 8,
"gpu_memory_gb": 32,
"cpu_count": 384,
"ram_gb": 283,
"disk_gb": 2460,
"tier": "secure",
"country": "Japan",
"country_code": "JP",
"region": "13",
"city": "Tokyo",
"rent_url": "https://lium.io/browse-pods/ad83de56-8a04-4ab1-ac5a-4ab007b4e2b3"
}
]
}
Fields
| Field | Type | Notes |
|---|---|---|
generated_at | ISO 8601 | When this snapshot was built. Use it to detect a stale source. |
count | integer | Number of nodes in this response. |
id | UUID | Stable identifier for the node. Safe to use as your primary key. |
gpu_model | string, nullable | Normalized name, vendor prefixes stripped — RTX 5090, not NVIDIA GeForce RTX 5090. |
gpu_count | integer, nullable | GPUs on the node. |
available_gpu_count | integer, nullable | GPUs free right now. Always at least 1 — a fully rented node leaves the feed. |
price_per_gpu_hour | float, nullable | USD per GPU per hour. |
price_per_node_hour | float, nullable | USD for the whole node per hour, null when the price is unknown. Published so you never have to derive it. |
min_rentable_gpu_count | integer, nullable | Smallest order we accept on this node. Quoting a single GPU below this number sells an order our checkout refuses. |
gpu_memory_gb | integer, nullable | VRAM per GPU. |
cpu_count | integer, nullable | CPU cores on the whole node; a partial rental gets a proportional share. |
ram_gb | integer, nullable | System RAM of the whole node; a partial rental gets a proportional share. |
disk_gb | integer, nullable | Whole-node disk; a partial rental gets a proportional share. |
tier | string, nullable | secure or spot. A spot node may be reclaimed by its provider at any time. |
country, country_code, region, city | string, nullable | Node location; region is the subdivision code. |
rent_url | string | Deep link straight to the rent page for this node. |
Only id and rent_url are guaranteed non-null; treat every other field as optional in your ingester.
Freshness
Lium prices are dynamic — providers set them and they move. The feed is rebuilt at most once per minute, so polling faster than that returns the same snapshot. Once a minute is the right cadence.
Rate limit
60 requests per minute per IP. If you need more, get in touch and we will raise it for your ingester.
Compatibility promise
This feed is a published contract, not an internal endpoint that happens to be reachable. Concretely:
- Fields are only ever added. No field under
/public/v1will be removed or renamed. - A field's meaning never changes. If
price_per_gpu_hourever needed to mean something different, it would become a new field, not a redefinition of this one. - Breaking changes ship as
/public/v2. They never land on/public/v1. - A retired version keeps serving for six months after we publish the deprecation notice, so you have half a year to migrate without an outage.
Build against /public/v1/nodes and it will keep working.
Listing Lium on your site
If you run a GPU price comparison site, marketplace, or agent that provisions compute, this feed is everything you need to list us. Ingest it directly instead of scraping — you get correct prices, real availability, and a deploy link that converts.
Questions about a partnership, a higher rate limit, or a custom field: reach us at lium.io.