📌 项目地址: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。人工维护的代价是更新靠人、偶尔滞后,换来的是条目经过筛选而不是机器抓取。对一个索引型项目,这个交换是划算的。

这篇文章对你有帮助吗?

发表回复