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.
Endpoint tested and returned HTTP 200 on 20 Aug 2026
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 20 Aug 2026, 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 'https://endoflife.date/api/nodejs.json'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);import requests
res = requests.get("https://endoflife.date/api/nodejs.json", timeout=20)
res.raise_for_status()
print(res.json())[
{
"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": truParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
<product>.json | path | Required | Product identifier, lowercase. nodejs.json |
<product>/<cycle>.json | path | Optional | One specific release cycle. nodejs/20.json |
all.json | path | Optional | Every 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
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Timestamp Converter
Convert timestamps to human-readable dates and dates back to timestamps. Auto-detects seconds vs milliseconds, shows local, UTC and ISO 8601 formats.
Age Calculator
Find your exact age in years, months and days from your date of birth, plus totals in weeks, days and hours and a countdown to your next birthday.
Alternatives to endoflife.date API
If endoflife.date does not fit, these developer & testing apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| GitHub REST API | GitHub REST API with no key for public data: repository details, users, issues, releases and commits. 60 req/hour unauthenticated, 5,000 with a token. | No key | Yes | 19 Aug 2026 |
| JSONPlaceholder | Free fake REST API for testing and prototyping. Posts, comments, users and todos with full GET, POST, PUT and DELETE support. No key. Real curl examples. | No key | Yes | 19 Aug 2026 |
| Postman Echo | Postman Echo reflects your HTTP request back as JSON: headers, body, query params and auth. Free, no key, ideal for debugging clients. Real POST example. | No key | No | 19 Aug 2026 |
| DummyJSON | Free fake REST API with realistic products, users, carts, recipes and auth. Supports search, pagination, sorting and POST. No key. Tested GET and POST examples. | No key | Yes | 19 Aug 2026 |
| Fake Store API | Free fake e-commerce API with products, categories, carts and users. Built for building shop prototypes and React tutorials. No key. Tested curl example. | No key | Yes | 19 Aug 2026 |
| Flathub | Fetch Linux desktop app metadata, screenshots and release notes from Flathub as JSON with no API key. Verified example plus the epoch-as-string gotcha. | No key | Yes | 21 Aug 2026 |
endoflife.date is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 20 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.