BYTETOOLS

endoflife.date API

Free end-of-life API with no key: support and security-EOL dates for 300+ products — Node, Python, Ubuntu, Django, PHP and more. Tested curl example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-20

What is the endoflife.date API?

endoflife.date is a free, key-free API providing end-of-life, end-of-support and security-support dates for more than 300 software products, frameworks, languages and operating systems.

Knowing when a version stops receiving security patches is a genuine operational problem, and the answer is normally buried in each vendor's release policy page in a different format. endoflife.date normalises all of it into one schema.

The distinction between `support` and `eol` is the part that matters: `support` is when active development stops, `eol` is when security patches stop. Running something past its `eol` date means known vulnerabilities go unpatched, which is the date compliance actually cares about.

Quick facts

Base URL
https://endoflife.date/api
Authentication
No API key required.
Rate limit
No published limit; responses are static JSON and cacheable.
Pricing
Free and open source, community maintained.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the endoflife.date API

Every request below was executed against the live API on 2026-08-20, and the response shown is the real body it returned — not an illustration.

1. Fetch release cycles for a product

GET https://endoflife.date/api/nodejs.json

curl
curl 'https://endoflife.date/api/nodejs.json'
JavaScript (fetch)
const res = await fetch("https://endoflife.date/api/nodejs.json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://endoflife.date/api/nodejs.json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
[
  {
    "cycle": "26",
    "releaseDate": "2026-05-05",
    "lts": "2026-10-28",
    "eol": "2029-04-30",
    "latest": "26.7.0",
    "latestReleaseDate": "2026-08-05",
    "support": "2027-10-27",
    "extendedSupport": false
  },
  {
    "cycle": "25",
    "releaseDate": "2025-10-15",
    "eol": "2026-06-01",
    "latest": "25.9.0",
    "latestReleaseDate": "2026-04-01",
    "lts": false,
    "support": "2026-04-01",
    "extendedSupport": false
  },
  {
    "cycle": "24",
    "releaseDate": "2025-05-06",
    "lts": "2025-10-28",
    "eol": "2028-04-30",
    "latest": "24.19.0",
    "latestReleaseDate": "2026-08-03",
    "support": "2026-10-20",
    "extendedSupport": false
  },
  {
    "cycle": "23",
    "releaseDate": "2024-10-16",
    "eol": "2025-06-01",
    "latest": "23.11.1",
    "latestReleaseDate": "2025-05-14",
    "lts": false,
    "support": "2025-04-01",
    "extendedSupport": false
  },
  {
    "cycle": "22",
    "releaseDate": "2024-04-24",
    "lts": "2024-10-29",
    "eol": "2027-04-30",
    "latest": "22.23.2",
    "latestReleaseDate": "2026-07-29",
    "support": "2025-10-21",
    "extendedSupport": true
  },
  {
    "cycle": "21",
    "releaseDate": "2023-10-17",
    "eol": "2024-06-01",
    "latest": "21.7.3",
    "latestReleaseDate": "2024-04-10",
    "lts": false,
    "support": "2024-04-01",
    "extendedSupport": false
  },
  {
    "cycle": "20",
    "releaseDate": "2023-04-18",
    "lts": "2023-10-24",
    "eol": "2026-04-30",
    "latest": "20.20.2",
    "latestReleaseDate": "2026-03-24",
    "support": "2024-10-22",
    "extendedSupport": tru

Parameters

ParameterTypeRequiredDescription
<product>.jsonpathRequiredProduct identifier, lowercase. nodejs.json
<product>/<cycle>.jsonpathOptionalOne specific release cycle. nodejs/20.json
all.jsonpathOptionalEvery product endoflife.date tracks. all.json

Response fields

cyclestring
Release cycle or major version.
releaseDatestring
When this cycle was first released.
supportstring|boolean
Active support end date, or false if already ended.
eolstring|boolean
Security support end date — the one that matters for risk.
lateststring
Latest patch version in this cycle.
ltsstring|boolean
LTS start date, or false if never an LTS release.

What you can build with the endoflife.date API

  • Alert when a dependency version reaches end of life
  • Build a compliance dashboard tracking supported software
  • Check upgrade urgency across an infrastructure estate
  • Automate reminders before a runtime loses security patches

Common errors and how to fix them

Fields are string or boolean

Dates become `false` once passed, or `true` if still supported.

Fix: Type-check before parsing as a date — this trips up most first integrations.

404

Unknown product identifier.

Fix: Identifiers are lowercase and specific: `nodejs` not `node`. Fetch /all.json for the list.

Confusing support vs eol

They mean different things.

Fix: `support` is active development; `eol` is when security patches stop. Use `eol` for risk assessment.

endoflife.date API — frequently asked questions

Is endoflife.date free?

Yes, completely free and open source with no API key. Responses are static JSON and highly cacheable.

What is the difference between support and eol?

`support` is when active development and bug fixes stop; `eol` is when security patches stop. The eol date is the one that matters for security and compliance.

Why is a date field sometimes `false`?

Fields return a date string when in the future, `false` once the date has passed, and sometimes `true` when support is ongoing with no end announced. Always type-check before parsing.

How many products does it track?

More than 300, covering languages, frameworks, databases, operating systems and major applications.

Tools that pair with this API

endoflife.date is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-20; always check the official documentation before relying on this API in production, as terms and limits can change.