The Everyversion API
215 apps. 14,265 versions. Every download link, SHA-256 checksum and license, as plain JSON you can fetch right now. No key, no signup, no price.
Who this is for
- You write tools for older machines. You need to know which version is the newest, which are older, and where each one lives.
- You run an AI agent or assistant. Someone asks “where do I download that old version?” and you want an answer from data, not a guess.
- You look after a fleet of PCs. You want to check every download against its checksum before it reaches anyone.
Why it’s just files
There is no database or application server behind this. The whole site is built into plain files from one set of data, and the JSON is that same data. So there is no account to create and no key to manage. You fetch a file and you get the facts.
What each link does
| Link | What you get |
|---|---|
/api/v1/apps.json | The index. Start here. One short entry per app: name, publisher, summary, platforms, newest version on each platform, license, price label, category, and links to the app’s page and files. About 218 KB. |
/{slug}/{slug}.jsonfor example /vlc/vlc.json | The full record for one app. Every version we list (up to 50 per platform), and for each version every installer with its architecture, format, download URL, file name and SHA-256. It also holds the source of the data and how far we checked it. |
/{slug}/{slug}.mdfor example /vlc/vlc.md | The same facts as Markdown. Made for pasting into a prompt or for an agent to read. |
/api/v1/categories.json | The categories. Each one with its name, app count and the slugs of its apps. Categories with a page on this site also carry the page URL. |
/schema/app.schema.json | The JSON Schema for the per-app record. Use it to validate what you read. |
/llms.txt | A plain-text map for agents: how the site is organized, how to read the data, and one line for every app. |
/sitemap.xml | Every page on the site. |
Try it in 30 seconds
These examples use curl and jq, plus one in JavaScript. Each one was run against the live data before it went on this page.
Look up one app
The index has one short entry per app. This pulls out VLC’s newest versions and license.
curl -s https://everyversion.net/api/v1/apps.json \
| jq '.apps[] | select(.slug=="vlc") | {name, latest_versions, license}'See what changed lately
Sort by the date of each app’s newest release and print the top five.
curl -s https://everyversion.net/api/v1/apps.json \
| jq -r '.apps | sort_by(.last_updated) | reverse | .[:5][] | "\(.last_updated) \(.name)"'List a whole category
Every app has a category slug. Here are all the VPN apps.
curl -s https://everyversion.net/api/v1/apps.json \
| jq -r '.apps[] | select(.category=="vpns") | .name'Get an installer link and check it
Read the newest Windows x64 download and its SHA-256 from the app’s own file (the first one listed, if the app ships several formats), download it from the publisher, then compare the hash. On Linux, use sha256sum -c instead of shasum -a 256 -c.
data=$(curl -s https://everyversion.net/vlc/vlc.json)
pick='[.versions[] | select(.platform=="windows")][0] | [.installers[] | select(.architecture=="x64")][0]'
url=$(printf '%s' "$data" | jq -r "$pick | .url")
sha=$(printf '%s' "$data" | jq -r "$pick | .sha256")
curl -LO "$url"
printf '%s %s\n' "$sha" "$(basename "$url")" | shasum -a 256 -cUse it from JavaScript
Runs in Node 18 or newer and in Deno. This counts the open-source apps that run on Windows.
const res = await fetch('https://everyversion.net/api/v1/apps.json');
const { apps } = await res.json();
const open = apps.filter((a) => a.pricing === 'open-source' && a.platforms.includes('windows'));
console.log(open.length, 'open-source Windows apps');Hand an app to an AI assistant
Every app also has a Markdown page. Paste it into a prompt, or let an agent fetch it.
curl -s https://everyversion.net/vlc/vlc.mdWhat the fields mean
slugis the app’s short name and its address:/{slug}/.platformsis a list drawn fromwindows,macosandlinux.latest_versionsgives the newest version on each.last_updatedis the date of the newest release in our data (YYYY-MM-DD). Some apps have none, so check for it.pricingis one ofopen-source,freeware,free-to-downloadorunknown. “Free to download” is a label we set by hand, and it can still mean paid tiers exist.versions_totalis how many versions the source has. We list up to 50 per platform. On the Mac side, most sources list only the current release.idsholds the identifiers the app goes by in its source, such as its winget ID, Homebrew cask or Flathub app ID. Not every app has every one.categoryis the slug of the app’s main category, as listed incategories.json.
Can you trust the checksums?
You can trust them as far as the file says. Look at verification.level in an app’s file:
- Level 0: the SHA-256 values are copied from the package listing or the publisher’s own checksum files. We have not re-computed them.
- Level 1: we downloaded the installers, re-computed each SHA-256 and compared it.
verification.checked_atsays when.
Two more things. We host no installers, so every url points to the download location named in the publisher’s package data, which we can’t control. And a matching checksum shows a file is the one that was published. It does not show the file is safe. Read the Security page for what our checks can and can’t tell you.
House rules
- Fetch once, then cache. The files change when we process new data, not every minute. Keeping the index for a day is plenty, and one request at a time is plenty.
- Say who you are. A clear
User-Agenthelps if I ever need to reach you. - Give credit and respect licenses. The data comes from public package catalogs and publishers’ own feeds. Link back to the page you used, and follow the license of any software you handle. See Content & takedown requests.
- Expect new fields. The
v1in the path is there so a breaking change can ship asv2. New fields can appear inv1, so read the ones you need and ignore the rest. - Browsers on other sites. These files are meant for scripts, servers and agents. Whether a page on another website can read them depends on the server’s CORS settings, which we don’t promise.
- No guarantees. The Terms of Service apply, including the parts about accuracy and availability.
Missing something?
If you need a field that isn’t there, an app that isn’t listed, or a file in a different shape, tell me. The list grows from requests like yours.