TrackVPS › API
VPS price data for agents and developers
The same numbers as the comparison table, as JSON. No key, no rate limit beyond fair use, CORS open. Free to use with a link to trackvps.com.
Endpoints
GET /api/plans— filtered list, see parameters below. Cached for 10 minutes.GET /api/plans/<id>— one plan, e.g. /api/plans/netcup-vps-1000.GET /prices.json— the whole dataset as one static file (same records, plus usdRate and vatNote).- /llms.txt — plain-text site map for assistants.
Every response carries schemaVersion, checkedAt, currency and vatNote. Prices are EUR excluding VAT. The site's filtered views use the same parameters, so /?ram=8®ion=eu and /api/plans?ram=8®ion=eu describe the same list.
Parameters for /api/plans
| Parameter | Values | Meaning |
|---|---|---|
ram | 1, 2, 4, 8, 16, 32 | RAM bucket (same as the table tabs). ram=8 returns plans with 8 to 15 GB. |
ram_min | number | Minimum RAM in GB. ram_min=8 returns every plan with 8 GB or more. |
max_price | number | Maximum priceMonthly in EUR. |
region | eu, us, asia | Plans with a data center in that region. |
contract | none, term, promo | none = cancel anytime at the shown price. term = promo or long-term (everything that is not none). promo = intro price that rises later. |
disk | nvme | NVMe disks only. |
provider | string | Exact provider name, case-insensitive. |
q | string | Text search in provider and plan name. |
sort | price, per_gb, 2y, rating | Cheapest monthly (default), cheapest per GB RAM, cheapest over 2 years, highest weighted rating. Plans without a value for the chosen metric sort last. |
limit | number | Return at most this many plans. |
include_unavailable | 1 | Also return plans that were not orderable when checked. |
Examples
/api/plans?ram=8&max_price=10®ion=eu&contract=none&sort=price
Cheapest 8 GB plans in Europe under €10 with no contract/api/plans?ram_min=16&sort=rating&limit=5
Five highest-rated providers with 16 GB or more/api/plans?disk=nvme&sort=2y
Every NVMe plan ranked by real 2-year cost/api/plans?provider=netcup
All Netcup plans
curl -s "https://trackvps.com/api/plans?ram=8&max_price=10®ion=eu&sort=price" | jq '.plans[] | {provider, plan, priceMonthly, contract, catch}'Plan record (v1)
One record per plan. Field names are stable within a major version: we add fields, we do not rename or remove them. A breaking change would ship as v2 at a new path with this version kept alive.
| Field | Type | Meaning |
|---|---|---|
id | string | Stable plan id, also the plan page slug (/plans/<id>) and the API path (/api/plans/<id>). |
provider | string | Provider name as we write it: Netcup, Contabo, Hetzner, Hostinger, DigitalOcean, … |
plan | string | Plan name as the provider writes it. |
vcpu | number | Number of vCPUs. |
cpuType | "shared" | "dedicated" | Normalised CPU type. cpuNote keeps the provider's own wording. |
ramGb | number | RAM in GB. |
ramSize | 1 | 2 | 4 | 8 | 16 | 32 | RAM bucket used by the table tabs and the ram filter: 8 covers 8 to 15 GB, 32 covers 32 GB and up. |
diskGb | number | Included disk in GB. 0 means storage is billed separately. |
diskType | "NVMe" | "SSD" | "HDD" | null | Disk type when the provider states it. |
currency | "EUR" | All prices are in euro. USD list prices are converted at the ECB rate in usdRate (prices.json). |
priceMonthly | number | null | What you pay per month at the shown rate, excluding VAT. null when the provider shows no price. |
priceRegular | number | null | Price per month after the promo or intro period. null when not shown or when there is no promo. |
pricePerGbRam | number | null | priceMonthly divided by ramGb. |
costFirstYear | number | null | Real total paid in the first 12 months: intro price, then the regular price, plus any upfront payment. null when the data cannot support an honest number (for example a 12-month term with no renewal price recorded). |
costTwoYears | number | null | Same for 24 months. |
term | string | Billing term as the provider states it, e.g. "Hourly, cancel anytime" or "24 months paid upfront". |
billing | "hourly" | "monthly" | "contract" | How you are billed: by the hour, month to month, or with a 12–24 month commitment. |
contract | "none" | "promo" | "term" | none = cancel anytime at the shown price. promo = cancel anytime, but the shown price is an intro that rises later. term = 12–24 month commitment or upfront payment. |
regions | ("eu" | "us" | "asia")[] | Regions with at least one data center, derived from locations. |
locations | string | Data center list as the provider states it. |
available | boolean | Whether the plan was orderable when checked. /api/plans leaves unavailable plans out unless include_unavailable=1. |
catch | string | The one thing to know before buying: contract length, setup fee, renewal price, missing IPv4, and so on. |
rating | object | null | Provider-level Trustpilot data: trustpilot (score), reviews (count), weighted (score weighted by review count: Bayesian average with a prior of 1,000 reviews at the site-wide mean), paidPlan (provider pays Trustpilot and can invite reviews), url. |
url | string | The provider's own pricing page. No affiliate tracking. |
pageUrl | string | The plan's page on TrackVPS. |
checkedAt | string (YYYY-MM-DD) | Date the price was last copied from the provider page. |
Example record
{
"id": "contabo-cloud-vps-4",
"provider": "Contabo",
"hq": {
"country": "DE",
"name": "Germany",
"verified": true
},
"plan": "Cloud VPS 4",
"vcpu": 4,
"cpuType": "shared",
"cpuNote": "Shared vCPU",
"ramGb": 8,
"ramSize": 8,
"diskGb": 100,
"diskType": "SSD",
"currency": "EUR",
"priceMonthly": 4.4,
"priceRegular": null,
"pricePerGbRam": 0.55,
"costFirstYear": 52.8,
"costTwoYears": 105.6,
"term": "Promo for first 24 months",
"billing": "contract",
"contract": "term",
"regions": [
"eu",
"us",
"asia"
],
"locations": "EU, US, Asia",
"available": true,
"catch": "Promo price for the first 24 months; the page doesn't show the price after that, so check before buying. CPU is often reported as oversold.",
"rating": {
"trustpilot": 4.6,
"reviews": 11293,
"weighted": 4.5,
"paidPlan": true,
"url": "https://www.trustpilot.com/review/contabo.com"
},
"url": "https://contabo.com/en/vps/",
"pageUrl": "https://trackvps.com/plans/contabo-cloud-vps-4",
"checkedAt": "2026-10-06"
}How the numbers are made
- Prices are copied from each provider's own pricing page, by hand or by our daily scraper, and converted to EUR at the ECB rate when the provider lists USD. See how we check prices.
costFirstYearandcostTwoYearsfollow the billing term: an upfront 24-month plan costs the full payment even in the 12-month window; an intro price switches topriceRegularwhen the intro ends; a 12-month term with no recorded renewal price gives null for 24 months.hq= the provider's headquarters country (countryis ISO 3166-1 alpha-2), read from its own legal or about page.verified: falsemeans we could not confirm it from the provider's own site.rating.weighted= (n × score + 1,000 × mean) ÷ (n + 1,000), where n is the review count and mean is the unweighted average score across all tracked providers. Trustpilot data is provider-level, not plan-level, and was last refreshed 2026-10-05.- Changelog: v1 (2026-10-06) replaces the earlier prices.json fields
priceAfterPromo,providerUrlandcpuType(free text) withpriceRegular,urland the normalisedcpuTypepluscpuNote.