VPSLedger for agents
VPSLedger compares VPS plans on verified data. Every plan record was checked against the provider's
official pricing page; each row carries the exact source_url and the check date
(verified_at). This page is the machine entry point: what the data covers, how to query it,
and what it deliberately does not do.
What is available
Read-only JSON, generated at build time and served as static files. Current build: 90 verified plans from 14 providers, data verified 2026-09-10.
| Resource | Purpose |
|---|---|
/api/v1/plans.json | All 90 verified plans, sorted by price_usd_monthly ascending. Every field, price, source URL and verified date. |
/api/v1/providers.json | Provider directory: HQ country, regions, API availability, plan count, cheapest verified plan. |
/api/v1/search.json | Same records plus a filters manifest (exact comparison semantics per parameter) and facets (value counts for country, city, virtualization, disk type, billing period, provider). |
/openapi.json | OpenAPI 3.1 description of the three resources above. |
/.well-known/api-catalog | RFC 9727 linkset (application/linkset+json): service-desc, service-doc, data resources, skill. |
/.well-known/agent-skills/find-vps/SKILL.md | Skill instructions with worked examples. index.json carries its SHA256 digest of the served bytes. |
/.well-known/ai-catalog.json | ARD manifest for this host. |
/feed.xml | Atom feed of the verified plan set. |
Every response also sends Link: </.well-known/api-catalog>; rel="api-catalog", </openapi.json>; rel="service-desc", </ai/>; rel="service-doc" via a _headers rule.
How to search and filter
There is no server-side query engine. Download a JSON file once and filter the array client-side —
with 90 records that is fast and cheap. search.json documents each supported
parameter's semantics; the short version:
max_pricecompares againstprice_usd_monthlyin USD/month.min_ram(MB),min_vcpu,country(ISO alpha-2),city,virtualization,disk_type,ipv4,billing_period— exact comparisons in thefiltersmanifest.- Check
facetsfirst: the pilot dataset covers countries US, FR, DE and virtualization KVM/unknown only.
Field semantics you must respect
- Unknown beats wrong. A
nullvalue or an"unknown"enum means the official page does not publish that field. Render it as "Unknown"; never interpolate a value from general knowledge. Pages never emit empty cells or placeholder characters. - Prices are approximate when normalized.
price_usd_monthlyconverts currency and billing period using a fixed FX snapshot dated 2026-09-10 (EUR 1.08, GBP 1.22). It exists for comparison and filtering only — always present the nativeprice/currency/billing_periodas the real quote, and mark the normalized figure with "≈". - Verification dates are part of the data. Cite
source_urlandverified_atwith any price you report. The dataset's latest verification date is 2026-09-10. - Observation counts gate indexing. Plan pages carry
noindex, followuntil a plan has at least two verified price observations (history exists for none yet — the dataset is a pilot baseline). The gate is data-driven: indexing flips on automatically with the second observation.
Markdown alternates
Static hosting cannot negotiate on Accept, so every HTML page has a sibling markdown file at
/ai/pathindex.md — e.g. /vps-under-5/index.md, /providers/racknerd/racknerd-newyear-1gb/index.md, and this page's /ai/index.md.
Each HTML head links its markdown twin with <link rel="alternate" type="text/markdown">. Markdown files carry
front matter (title, description, canonical, verified date) and tables as real markdown tables. To get
markdown deliberately: fetch the HTML page, read the alternate link, then fetch that URL.
What is not available
- No authentication, no API keys, no OAuth/OIDC — everything is public and read-only.
- No write endpoints: plan submissions and corrections are not accepted over HTTP.
- No live query API, no pagination, no server-side filtering — the JSON is a build-time snapshot.
- No per-plan price history yet: one observation per plan, so no 30/90-day lows or medians exist anywhere.
- No OS verification:
os_typeisnullfor all plans, so no plan can be honestly labelled Linux- or Windows-capable (this is why the former "Cheap Linux VPS" page is retitled and noindexed). - Not for resale as verified data: prices change; confirm on the provider's official page before ordering.
Crawl and reuse signals
robots.txt declares Content-Signal: search=yes, ai-input=yes, ai-train=yes. The dataset is
public, crawlable and meant for agent consumption: search indexing is wanted, using rows as AI input is
wanted, and training on it is permitted because the data is already published for open reuse — provider
directory fields come from FindHost under CC BY 4.0, and the site asks for the same courtesy: keep
source_url and verified_at with any row you redistribute. There are no restrictions to declare
beyond that, and no keyword stuffing.
Update cadence
Artifacts regenerate on every site build; verification cadence is manual per provider (latest: 2026-09-10).
The skill index's digest_sha256 changes whenever SKILL.md changes — treat a digest mismatch as a
signal to re-read the skill. Source of truth: the public GitHub repository
(shileibiz/vpsfinder); every number on the site is
reproducible from it. See methodology and data sources.