Open Data · 开放数据
开发者 API
FailBase 的 140 个案例以结构化 JSON 开放——免费、跨域(CORS)、零认证,任何人都可以基于它做研究或二次开发。
端点
GET https://failbase.pages.dev/cases.json返回全部案例的结构化数组,按死亡年份倒序。当前 140 条。
字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
| slug | string | URL 标识(/cases/{slug}/) |
| project | string | 产品/项目名称 |
| owner | string | 开发方 / 母公司 |
| domain | string | 领域分类 |
| country | string | 国家/地区 |
| founded | number | 成立年份 |
| died | number | 死亡年份 |
| lifespan | number | 存活年数(died - founded) |
| status | string | 当前状态描述 |
| failedReason | string | 失败原因 |
| failureMode | string | 失败模式分类(10 大模式) |
| tags | string[] | 标签数组 |
| summary | string | 一句话摘要 |
| epitaph | string | 墓碑铭文 |
| url | string | 案例详情页 URL |
示例代码
cURL
curl https://failbase.pages.dev/cases.json | jq '.[0] | {project, failedReason, epitaph}'JavaScript
const cases = await fetch("https://failbase.pages.dev/cases.json").then(r => r.json());
// 找出死于"战略放弃"的案例
const abandoned = cases.filter(c => c.failureMode === "战略放弃");
console.log("战略放弃 " + abandoned.length + " 例:" + abandoned.map(c => c.project).join("、"));Python
import requests
cases = requests.get("https://failbase.pages.dev/cases.json").json()
# 平均寿命
avg = sum(c["lifespan"] for c in cases) / len(cases)
print(f"平均存活 {avg:.1f} 年,共 {len(cases)} 个案例")使用规则
- 数据供研究、教育、二次开发免费使用;
- 转载/引用请标注来源:FailBase(failbase.pages.dev);
- 数据随案例库更新而变化,请勿将 URL 缓存为永久引用;
- 反馈数据错误:yukiethn231@outlook.com。