endoflife.date Product Lifecycle Scraper
parseforge/endoflife-date-product-lifecycle-scraper
Developer toolsAutomationOther
Scrapes release lifecycle records from endoflife.date for the products you specify. Each release cycle is returned as a flat row with its version, support status, and key dates.
- Total users
- 2
- Monthly active
- 1
- Total runs
- 45
- Bookmarked
- 0
- Rating
- Not rated yet
- Last modified
- 12 days ago
Overview
endoflife.date Product Lifecycle Scraper
Scrape product lifecycle dates from endoflife.date for any software, framework, or OS, up to a million releases per run. Every release comes with its cycle name, support status, EOL date, and extended support date. No API key required. Export to CSV, JSON, Excel, or XML.
Tracking end-of-life and end-of-support dates across dozens of products is a manual, error-prone chore. The endoflife.date project maintains a community-updated, machine-readable database of release cycles for hundreds of products, from Python and Ubuntu to Kubernetes and PostgreSQL. This Actor reads that database directly, so you get a structured, filterable dataset of every release cycle for the products you care about, without writing a single line of code.
| Who uses it | What they scrape endoflife.date for |
|---|---|
| Platform engineers | Audit their stack for components approaching end-of-life to prioritize upgrades. |
| IT compliance teams | Generate evidence that all software in use is within its vendor support window. |
| Security analysts | Identify unsupported software releases that no longer receive security patches. |
| Product managers | Monitor upstream lifecycle commitments to align their own product roadmap. |
What it does
This Actor collects release lifecycle records from endoflife.date for the products you specify and returns each release cycle as a flat row with its version, support status, and key dates.
- ๐ Batch product lookup: supply a list of product identifiers and get every release cycle for each one in a single run.
- ๐ข Configurable limits: cap the total number of products fetched per run to stay within your usage budget.
- ๐ Always fresh data: pulls directly from the live endoflife.date API on every run, so your dataset reflects the latest community updates.
- ๐ Flat row output: each release cycle is one row, ready for spreadsheets, databases, or downstream automation.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with endoflife.date data
๐ก๏ธ Build a compliance dashboard.
A compliance team runs the Actor weekly for a fixed list of products, loads the CSV into a spreadsheet, and flags any release where support has ended.
๐ Automate upgrade alerts.
A platform engineer schedules the Actor to pull lifecycle data for their production stack and pipes the JSON into a Slack notification when a release is within 90 days of EOL.
๐ Compare vendor support windows.
A product manager scrapes lifecycle data for three competing database engines to compare long-term support commitments before making a build-vs-buy decision.
๐๏ธ Enrich a CMDB with lifecycle status.
An IT ops team runs the Actor for every software entry in their configuration management database and writes the latest support status back into each record.
Why choose this scraper
| What you get | |
|---|---|
| No API key or registration | The endoflife.date API is open. This Actor calls it directly with no account setup. |
| One row per release cycle | Each product expands into multiple rows, one per release, with its own lifecycle dates. |
| Hundreds of products covered | Any product tracked by endoflife.date is available, from Linux distros to programming languages. |
| Structured for automation | Flat, predictable schema makes it easy to pipe results into monitoring, alerting, or BI tools. |
How it compares
This Actor focuses on raw lifecycle data extraction from endoflife.date, while the alternatives below offer different approaches to the same source.
| Feature | ParseForge | Product End-of-Life & Lifecycle Scraper | Software EOL & Support Monitor |
|---|---|---|---|
| Batch product lookup from a list of identifiers | Yes | Not listed | Not listed |
| Configurable maximum products per run | Yes | Not listed | Not listed |
| No API key required | Yes | Yes | Not listed |
| Persistent snapshot comparison across runs | Not listed | Not listed | Yes |
| Structured change records between runs | Not listed | Not listed | Yes |
| Lifecycle risk classification | Not listed | Not listed | Yes |
Configure the run
Drive the Actor with a list of product identifiers from endoflife.date, and set a maximum product count to control the size of each run. The Input tab lists every parameter.
A first run with the defaults:
{
"products": [
"python",
"nodejs",
"ubuntu"
],
"maxItems": 10
}
A larger pull:
{
"products": [
"python",
"nodejs",
"ubuntu"
],
"maxItems": 200
}
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the endoflife.date Product Lifecycle Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to endoflife.date through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/endoflife-date-product-lifecycle-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
Check that the product identifiers in your input exactly match the keys from the endoflife.date API. Visit https://endoflife.date/api/all.json and copy the product key directly. Typos or incorrect casing will return no data.
Why are some date fields empty in my output?
Not every product release has all lifecycle dates documented by the community. Empty fields mean the information is not yet available in the endoflife.date database, not that the Actor failed to retrieve it.
The run failed with an error. What should I check?
First, verify that the endoflife.date API is reachable by opening https://endoflife.date/api/all.json in a browser. If the API is up, check your product list for invalid identifiers and try again with a smaller list to isolate the problem.
How do I get more than the default number of products?
Increase the 'Maximum products' setting in the Actor input. The default is 10, but you can set it as high as 1,000,000 to pull lifecycle data for a large portfolio in one run.
Can I filter to only show releases that are already end-of-life?
The Actor itself does not filter by lifecycle status. It returns all release cycles for the requested products. You can filter the output dataset after the run using Apify's dataset filtering or by loading the CSV into a spreadsheet.
FAQ
| Question | Answer |
|---|---|
| What is endoflife.date? | endoflife.date is a community-maintained, open-source project that tracks release, support, and end-of-life dates for hundreds of software products, frameworks, and operating systems. It exposes a free, public API that this Actor reads. |
| Do I need an API key for endoflife.date? | No. The endoflife.date API is completely open and requires no authentication, registration, or API key. This Actor calls it directly. |
| How do I find the correct product identifier? | Visit https://endoflife.date/api/all.json in your browser to see the full list of supported products. Use the exact string from the JSON keys, such as 'python', 'nodejs', or 'ubuntu'. |
| What fields does each release cycle record contain? | Each row includes the product name, cycle name (version), release date, end-of-life date, support status, and, where available, extended support and latest release dates. The exact fields depend on what the endoflife.date community has documented for that product. |
| Can I scrape all products at once? | Yes. You can list as many product identifiers as you want in the input array. Use the 'Maximum products' setting to cap how many are processed in a single run. |
| How often is the data updated? | This Actor pulls data from the live endoflife.date API on every run. The underlying database is updated continuously by the open-source community, so your results are always as fresh as the source. |
| What output formats are supported? | You can export your dataset in CSV, JSON, Excel, XML, or RSS from the Apify platform after the run completes. |
| Does this Actor handle products with no EOL date announced? | Yes. If a product release has no documented end-of-life date, that field will be empty or null in the output row. The Actor does not filter out releases with missing dates. |
| Can I schedule this Actor to run automatically? | Yes. Apify supports scheduled runs. You can set this Actor to run daily, weekly, or on any cron schedule to keep your lifecycle data current. |
| Is this Actor affiliated with the endoflife.date project? | No. This is an independent Actor that reads the public endoflife.date API. It is not maintained by or affiliated with the endoflife.date project. |
Related actors
Browse the full ParseForge collection for more scrapers.
๐ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
โ ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by endoflife.date. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
Input
| Field | Type | What it does | Default |
|---|---|---|---|
| products required | array | One or more product identifiers as used by endoflife.date (for example python, nodejs, ubuntu, php, postgresql, kubernetes). Each product expands into one record per release cycle. Browse the full list at https://endoflife.date/api/all.json. | ["python","nodejs","ubuntu"] |
| maxItems | integer | How many products to collect per run. | 10 |
Pricing
Pricing is shown on the Apify listing.
Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.
API
One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.
curl -X POST "https://api.apify.com/v2/acts/parseforge~endoflife-date-product-lifecycle-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"helloWorld": 123
}' Examples
Input that runs as-is.
{
"helloWorld": 123
} Reviews
No reviews yet. Be the first.
Issues
We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.
Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.
Related scrapers
Run endoflife.date Product Lifecycle Scraper on Apify All scrapers
