App platform data health.
Every 3 days a GitHub Action reads 9 platforms without a single credential: one public keyless API, one catalogue a provider publishes inside its own page, and server-rendered price tables and card sets. Each result is checked against the one before it. A fetch that fails or looks broken is refused, the last good reading keeps the section up, and the platform is named here with its own date.
The last refresh read 9 of 9 platforms live on 1 Nov 2026, covering 62 plans. 8 of them publish the rates they meter on top of the monthly price, which is not the same as the rest charging nothing for it.
Last refresh
1 Nov 2026
13:14 UTC
Platforms read
9/9
all read live
Plans
62
48 sized instances, 14 subscriptions
Metered rates
8/9
publish a rate we can record
Render
render
17 plans
read
1 Nov 2026
DigitalOcean App Platform
digitalocean
14 plans
read
1 Nov 2026
Heroku
heroku
8 plans
read
1 Nov 2026
Fly.io
fly
6 plans
read
1 Nov 2026
Koyeb
koyeb
6 plans
read
1 Nov 2026
Zeabur
zeabur
4 plans
read
1 Nov 2026
Netlify
netlify
3 plans
read
1 Nov 2026
Railway
railway
2 plans
read
1 Nov 2026
Vercel
vercel
2 plans
read
1 Nov 2026
Prices being checked
6 of 10 audited prices matched the provider's page, week of 26 Oct; 3 could not be read.
A price that moves 30% or more, or would reach a top three, waits for a second reading at least 12 hours later and is checked against the provider's own page, and so is one that fails a check or that a reader reports. Meanwhile the plan shows its last confirmed price and leads no list. Today 1 differs from the provider's page.
apps-s-1vcpu-1gb · 1 shared vCPU · 1 GB at DigitalOcean App Platform
page disagrees
shows $12/mo from 18 Oct · read $12/mo on 18 Oct · the second reader read 10 USD a month on the provider's page: "Shared (Fixed) Selecting a fixed CPU will limit you to one container instance only 1 vCPU 1 GiB 100 GiB No $ 10.00"
How the numbers are protected
- Only fetched numbers. An adapter throws on anything it does not recognise, and nothing is typed in by hand.
- A broken read is refused. A fetch whose plan count falls below half the last one, or whose median paid monthly price moves more than 2.5 times either way, is rejected and the previous reading kept, so a half-broken parser cannot publish nonsense. Free tiers are left out of that median: a section whose cheapest rows are zero would have a median of zero on a small platform, and the ratio test would mean nothing.
- A changed price waits. A move of 30% or more, or into a top three, shows once a second reading agrees.
- Nothing is derived that nobody published. Two platforms publish no price per gigabyte of transfer at all, one because it meters in its own credits and one because its transfer is included in a flat rate. Dividing a plan price by its allowance would produce a figure that reads like theirs and is ours, so both stay blank.
- One number, whatever the plan. Every price is a month in the provider's own currency converted to dollars. The median paid instance today is $49/mo.
- History on the published number. A currency moving is not a price change.