Spare Cores Navigator API
The Spare Cores Navigator API lets you programmatically explore cloud compute instances across providers, covering pricing, hardware specifications, benchmark performance, and cost-efficiency metrics.
It is designed for FinOps engineers, data scientists, and platform teams, who prefer working with empirical and structured data rather than vendor heuristics.
For more details, see <https://sparecores.com/about/navigator>.
If you prefer to explore the data visually before integrating the API, the web interface exposes the same underlying dataset at <https://sparecores.com/servers>.
Open Source & Self-Hosting
The entire Navigator stack is open source and designed to be inspectable, reproducible, and self-hostable:
- FastAPI implementation of this service: <https://github.com/SpareCores/sc-keeper>
- Database schemas and ETL tooling: <https://github.com/SpareCores/sc-crawler>
- Underlying data on cloud servers, regions, zones, storages and more: <https://github.com/SpareCores/sc-data>
- Raw hardware inspection and performance benchmarking logs: <https://github.com/SpareCores/sc-inspector-data>
Source code is licensed under MPL-2.0, data records under CC-BY-SA-4.0.
Caching
Responses are served via reverse proxy and CDN with 1-hour cache TTL for most endpoints. For real-time access, lower-latency requirements, or custom caching strategies, feel free to reach out -- we are happy to discuss what works best for your use case.
Rate Limiting
Credit-based rate limiting with a 1-minute sliding window:
- Default: 60 credits/minute
- Cost per request: 1 credit (standard) with some exceptions for heavier
queries, e.g.
/servers(3 credits) or/server_prices(5 credits) - Tracking: per authenticated user or IP address
- Headers:
X-RateLimit-Limit,X-RateLimit-Cost,X-RateLimit-Remaining - Status code returned in case of rate limit exceeded: 429, with a
Retry-Afterheader indicating the number of seconds to wait. If the cost of a single request is higher than the credit limit, the 429 response has noRetry-After(norX-RateLimit-Remaining) header, as retrying will never succeed.
Furthermore, the number of concurrent heavy requests per worker might be also limited to avoid overloading the serving cluster or database; in such case, a 503 response will be returned.
Temporary errors (such as 429 or 503 status codes) should be retried with
exponential backoff, waiting at least the number of seconds in the
Retry-After header when present. A 429 without Retry-After should not
be retried.
The default limits are intended to support exploration and prototyping. If you are building something larger, we are glad to help you scale access responsibly.
Authentication
Authentication is optional for most exploratory use cases, but required for:
- Higher rate limits
- Access to premium endpoints
- Commercial and partnership use cases
Fair Use & Commercial Use
This public API is provided under a fair use policy to ensure availability for all users and to facilitate the evaluation of integrating the Navigator data into your products.
Commercial use, high-volume access, open-source and integration partnerships are welcome. If you are experimenting, building a prototype, or considering deeper integration, we would love to hear what you are working on and help you find the best setup.
Authentication
- HTTP: Bearer Auth
Security Scheme Type: | http |
|---|---|
HTTP Authorization Scheme: | bearer |
Contact Spare Cores Team: social@sparecores.com
Terms of Servicehttps://sparecores.com/legal/terms-of-service