📌 项目地址:public-apis/public-apis | ⭐ 469,087 颗星 | 🔧 Python | 📜 未标注
先说清楚它是什么
public-apis/public-apis,469,087 颗星,语言标签 Python。但里面没有包,没有脚本,pip install 不了它。语言标签是摆设。
它的本体是一份手工维护的公共 API 清单。README 原话:由社区成员和 APILayer 的员工 “manually curated”,收录多个领域的公共 API,供你用在自己的产品里。原文称之为 “a treasure trove of APIs well-managed by the community over the years”。
46 万人 star 的含义:这是收藏夹,不是依赖项。你会在缺某个数据源的时候来这里翻,而不是把它装进项目。
第一屏是广告,目录在后面
现在打开仓库,README 开头是 APILayer 的商业推广,内容相当具体:
- 统一套件,卖点是 “One Account, One Dashboard, and One API key”
- 一个官方 Postman Collection,README 声称 fork 后 60 秒内能开始用
- 九个产品:IPstack、Marketstack、Aviationstack、Positionstack、Mediastack、Mailboxlayer、Countrylayer、Serpstack、Scrapestack
- 一个 Discord 服务器,提供更新、答疑和不定期的社区通话
利益关联写在明面上。但这两部分要分开看:真正的 API 目录在广告后面,那才是 46 万人 star 的对象。把它当索引用,别当精选推荐用——README 第一屏推什么,和清单本身质量如何,是两回事。
清单里最有用的字段不是描述
列表按领域分类,每个条目带几个字段:名称、一句话描述、Auth、HTTPS、CORS。
我的经验是 Auth 和 CORS 比描述有用:
- Auth 标 No 的,拿到地址直接请求,注册都省了
- 标 apiKey 的,先去对应站点注册拿 key
- CORS 标 Yes 的可以浏览器端直调;标 No 或 Unknown 的只能走服务端转发
动手前用这两个字段筛一遍,能砍掉一半候选。浏览器端项目更是如此——CORS 不支持,描述写得再好也用不了。
用法就两步
没有安装命令,用法是浏览加检索。
第一步,按领域定位。要汇率去 Currency,要地址解析去 Geocoding,要 IP 定位去 Geolocation。分类覆盖从天气、体育、金融到游戏、动漫,覆盖面是这个仓库最大的价值。
第二步,进官方文档验证。README 每个条目只有一句话描述,请求格式、参数、限流规则全在链接背后。用 curl 发一个真实请求,看返回结构,再决定要不要用。别跳过这步——清单不保证条目还活着,纯人工维护的项目,滞后是常态。
免费的真实成本要自己算
仓库只告诉你“存在这样的接口”,不告诉你限制在哪。几件事得自己核实:
需要 apiKey 的接口,key 一般免费,但免费额度有限流,各家松紧不一。免认证也不等于无限制,很多服务在全局层面控制请求量。HTTPS 标 No 或 Unknown 的,传输不加密,涉及用户数据的场景要当心。
这些 README 一律不写。进生产环境前,降级方案自己设计。免费接口没有 SLA,限流收紧、接口下线、返回格式变更,任何一样都能让你的功能挂掉。
它的位置
public-apis 解决“发现”问题,不解决“调用”问题。项目临时缺数据源,或者想验证某个想法有没有现成接口,先来这里翻分类,比在搜索引擎里筛结果快。
README 里推的 APILayer 套件是另一回事:付费、统一计费的生产级服务,面向不想管理一堆散落 key 的团队。两者不冲突,也不必捆绑看待。
发现条目失效可以提 PR。人工维护的代价是更新靠人、偶尔滞后,换来的是条目经过筛选而不是机器抓取。对一个索引型项目,这个交换是划算的。