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.

what moved this week · every platform