api-anything README

The project's README from github.com/goodnight000/api-anything. As one markdown file: README.md.

API Anything

CI

Teach your agent a website once. After that, it calls the site like an API instead of driving a browser.

API Anything watches a site's own page make a request and learns which parts of it are your inputs. It saves the result as an operation. Your agent calls that operation with new inputs over MCP, the CLI or TypeScript, and gets JSON back over plain HTTP.

Two agents race on the same Google Flights task: one drives Chrome, one calls API Anything

Same agent (Claude Opus 5.5), same prompt, started together. Left: it drives headless Chrome through Playwright MCP. Right: it calls API Anything's Google Flights operation. Shown at 3× speed with no cuts; the timers show real elapsed time. Recorded 2026-09-28. MP4 · how it was recorded

Median time and cost per task. 1 date: browser 12.9 s and $0.166, API Anything 8.4 s and $0.074. 5 dates: browser 41.6 s and $0.154, API Anything 21.1 s and $0.152.

Across 5 runs of each task, the agent using API Anything answered 1.5 to 2× sooner, read about half as many tokens, and cost the same or less. All 20 answers were correct. Method, raw numbers and limits.

Install

Paste this into Claude Code, Codex or another coding agent:

Set up API Anything for me: https://github.com/goodnight000/api-anything/blob/main/INSTALL.md

The agent checks Node 22.13+, builds and installs the api-anything command, confirms that a call works, then connects the MCP server and the skill to itself. Restart the agent, then ask it something like "What does Goodreads rate Piranesi?"

Install by hand

The package isn't on npm yet. Don't use npm install -g github:..., because it fails under npm 11.

git clone https://github.com/goodnight000/api-anything.git && cd api-anything
npm ci && npm install -g "$(npm pack --silent)"
api-anything call hacker-news search query=sqlite
{"ok":true,"class":"ok","tier":1,"data":[{"title":"Hosting SQLite databases on GitHub Pages or any static file hoster","url":"https://phiresky.github.io/blog/2021/hosting-sqlite-databases-on-github-pages/", ...}, ...],"ms":111}

tier: 1 means plain HTTP with no browser. A failure returns ok: false with a class, a reason and a next step. Connect an agent with codex mcp add api-anything -- api-anything mcp, claude mcp add --scope user api-anything -- api-anything mcp, or this MCP entry:

{ "mcpServers": { "api-anything": { "command": "api-anything", "args": ["mcp"] } } }

Over MCP an agent calls operations, using four tools: list_sites, list_operations, call_operation and login. To create operations, an agent needs a shell and the skill. Google Chrome is needed only for creating operations and for browser fallback. Setup details.

Teach it a new site

Give it the page URL with a placeholder, and two example inputs:

api-anything add hn-demo links \
  --trigger 'https://news.ycombinator.com/from?site={domain}' \
  --example domain=github.com --example2 domain=github.io --match path=/from \
  --html '{"items":"tr.athing","fields":{"title":".titleline > a","url":".titleline > a@href"}}'

api-anything call hn-demo links domain=arxiv.org      # 30 arxiv.org stories, tier 1

Headless Chrome loads the page once for each example. The part of the request that changed with the input becomes a parameter, and the rest is stored as a template. The agent (or you) picks the request and the fields. API Anything builds the template without an LLM. Recorded demos.

Map a site from an intent

Tell an agent what you need from a site. The skill makes it do this, in order:

  1. Ask about whatever the request leaves unclear.
  2. Propose operations and wait for your approval.
  3. Scout each page with capture --outline. This is a summary of what each request returns, so the agent doesn't have to read full responses.
  4. Build each operation and check it with an input that wasn't an example.

Goodreads has had no public API since 2020. One run took 6.3 minutes and $1.19. It produced search, book details, an author's books and reviews:

api-anything call goodreads searchBooks q=piranesi
api-anything call goodreads getBook bookId=50202953
Goodreads, median of 5 runs. 1 book: browser agent 16.8 s and $0.156, API Anything 14.4 s and $0.048. 5 books: browser 182.5 s and $0.122, API Anything 30.5 s and $0.107.

How it was explored, tested and compared.

What's included

22 read operations across 9 sites:

They cover selected features, not whole sites. api-anything ops <site> lists parameters and caveats.

How it works

Details · design

Sessions and logins

For a site that needs an account, api-anything login <site> first tries to import that site's cookies from a browser profile you are already signed in to, so there is usually no password to type. If several profiles are signed in it asks which one, and if none can be imported it opens a Chrome window to sign in by hand. A saved operation holds references to cookies and tokens, never their values, so a refreshed session works without re-learning anything.

A session is kept current where that is possible. Cookies a site sets on a plain-HTTP response, or while API Anything runs the site's page in Chrome, are saved. When a plain-HTTP call comes back unauthorized, API Anything makes one recovery attempt, the first of these that applies:

  1. re-import from the browser profile you chose at login;
  2. take the cookies from its own Chrome profile, if they differ from the saved ones;
  3. for a read that uses session tokens, reload the page so the site issues fresh ones.

If the call is still unauthorized, it returns class: "auth" with the login command to run.

Import reads Chrome, Arc, Brave, Edge, Chromium and Firefox profiles on macOS and Linux (on Linux, not cookies encrypted with the desktop keyring). On Windows, login opens the Chrome window. Details

Limits

All limits

Docs

Benchmark · Demos · Setup for agents · Reference · Design · Release checks · Contributing

MIT licensed.

api-anything (goodnight000/api-anything)

Searching Database…

这是什么?API Anything 会观察网站自身前端发出的请求,学习其中哪些部分是你的输入,并把它保存为一个操作。之后,你的代理可以通过 MCP、CLI 或 TypeScript 调用这个操作,直接拿回纯 JSON,而不用驱动无头浏览器。
这是托管 API,还是我自己运行的东西?它是一个本地工具:一个 CLI 加上一个 MCP 服务器,在你自己的机器上运行,使用你的网络和浏览器会话,而不是托管服务。
如何安装并把它连接到我的编程代理?把安装代码片段粘贴到 Claude Code、Codex 或其他编程代理中;它会检查 Node 22.13+,构建并安装 api-anything 命令,然后自行接上 MCP 服务器和技能。你也可以手动添加,使用 “codex mcp add api-anything -- api-anything mcp” 或 “claude mcp add --scope user api-anything -- api-anything mcp”。
我需要先装好 Chrome 或 Node 吗?需要——构建和运行它必须有 Node 22.13+;Google Chrome 只在创建新操作时需要,并在普通 HTTP 调用被拦截时作为回退手段。
如果网站改版导致已保存的操作失效怎么办?它会重新学习这个请求,并且只在重放成功后才保存新版本;如果仍然失败,你会收到一个错误,而不是别人的数据。它不解决验证码,所以如果网站向真实 Chrome 发起挑战,你得手动通过。
它在 Windows 上和 macOS、Linux 上表现一样吗?在 macOS 和 Linux 上,Cookie 导入支持 Chrome、Arc、Brave、Edge、Chromium 和 Firefox 的配置文件(Linux 上密钥环加密的 Cookie 除外);在 Windows 上,登录只会打开一个 Chrome 窗口,而不是导入 Cookie。
我的登录会话和凭据存在哪里?凭据保存在 ~/.api-anything 中,已保存的操作只持有 Cookie 和令牌的引用,从不保存实际值,因此会话刷新后无需重新学习即可继续使用。
开箱即用内置了哪些网站和操作?它内置了覆盖 9 个网站的 22 个读取操作,包括 Google Flights、Hacker News、X、Instagram、YouTube、Airbnb、Amazon、LinkedIn 和 Goodreads。
它比代理驱动浏览器快多少?在 Google Flights 基准测试中,同一个代理出结果快 1.5-2 倍,读取的 token 约为一半,成本相同或更低;在 Goodreads 上,它用 30.5 秒回答了 5 本书的问题,而驱动浏览器的代理需要 182.5 秒。
它是怎么自学一个新网站的?你给它一个带占位符的页面 URL 和两个示例输入;无头 Chrome 会为每个示例加载页面,发生变化的部分成为参数,其余部分成为模板,全程不使用 LLM。
它能向网站写入吗,比如发送 LinkedIn 消息?内置操作中没有写入操作。写入需要 --allow-writes 标志,而且只在本地测试夹具上测过,尚未在 LinkedIn 等真实网站上测试。
Size
7.1 MB
Stars
995
Updated
CommitOct 16
Age
20d
Commits · 90 Days