The open hardware end-of-life dataset
Every record in EOSL.ai — 6,669 part numbers across 10 vendors, each with its end-of-sale and end-of-service-life dates and the vendor bulletin URL it came from — as one downloadable, machine-readable dataset. Free under CC BY 4.0 with attribution.
Coverage
| Vendor | Part numbers |
|---|---|
| Cisco | 2,204 |
| Dell | 1,252 |
| Juniper | 828 |
| Fortinet | 768 |
| IBM | 735 |
| HPE | 666 |
| Brocade | 89 |
| Arista | 60 |
| Palo Alto Networks | 40 |
| SonicWall | 27 |
Load it
df = pd.read_csv("https://eosl.ai/dataset/eosl.csv")const d = await (await fetch("https://eosl.ai/dataset/eosl.json")).json()Dataset questions
What license is the dataset under?
Creative Commons Attribution 4.0 (CC BY 4.0). Use it freely — including commercially — as long as you credit EOSL.ai and link to https://eosl.ai. Every record also carries the vendor's own bulletin URL so end users can verify at the source.
Where does the data come from?
Each end-of-sale and end-of-service-life date is taken from the vendor's official end-of-life bulletin (or, where a vendor publishes no per-model date, computed from their published support-life policy and flagged eosl_derived). Nothing is estimated or invented; the source_url field on every row is the citation.
How often is it updated?
Weekly, by the same pipeline that refreshes the site. The generated date is embedded in the JSON file; last verification stamps are per-row.
What's in each row?
One row per part number: vendor, family, series, category, part_number, description, end_of_sale, end_of_service_life, eosl_derived, no_eol_announced, last_verified, source_url, and the family_url on EOSL.ai.