UnblockingAPI

io.github.unblockingapi由 GitHub 帳號 unblockingapi 發布v0.8.2更新於 Oct 30, 2026

Fetch bot-protected and JavaScript-heavy pages for AI agents, or parse them to JSON with templates.

已驗證Streamable HTTP可網頁執行網頁搜尋與抓取瀏覽器自動化

概覽

AI 產生的概覽

UnblockingAPI 透過真實瀏覽器與輪換住宅代理抓取受反爬保護或依賴 JavaScript 的網頁,回傳 Markdown、HTML 或依範本產生的 JSON。

可以做什麼
  • 抓取拒絕一般請求或需要 JavaScript 的頁面,可指定國家、捲動、等待條件與 CSS 選擇器
  • 依網址、關鍵字或分類尋找已發布的範本,把網站解析成結構化 JSON
  • 取得建置指南,了解如何在自己的應用程式或腳本中直接呼叫其 REST API
  • 以 Markdown、清理後的 HTML 或 JSON 回傳內容,並附上渲染方式等中繼資料
適用情境
適合在需要讀取一般 HTTP 抓取無法處理的頁面時使用,例如 JavaScript 渲染的網站、反爬攔截、依國家顯示不同內容,或已有解析範本的知名網站。
執行需求
可使用託管端點並以 OAuth 登入,或在本地以 stdio 執行 npm 套件(需 Node.js 18+)。需要 UnblockingAPI 帳號;本地伺服器需在 UNBLOCKINGAPI_KEY 提供金鑰,不支援登入的用戶端以 Authorization Bearer 標頭傳送。需能連線至 UnblockingAPI 的 API。
安裝前請注意
抓取會消耗付費額度:每次成功抓取 1 個額度,失敗免費,10 分鐘內重讀同一次抓取也免費。API 金鑰屬機密,應保存在伺服器端,並優先使用 OAuth 登入。請求的網址與參數會傳送到 UnblockingAPI 伺服器,並經第三方住宅代理轉送。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 UnblockingAPI,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.unblockingapi%2Fmcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "unblockingapi": {
      "type": "http",
      "url": "https://mcp.unblockingapi.com/mcp"
    }
  }
}

README

@unblockingapi/mcp

Official Model Context Protocol server and Claude Code plugin for UnblockingAPI. Gives AI apps (Claude, Cursor, VS Code, Lovable, Replit, …) a real browser behind rotating residential proxies: fetch bot-protected and JavaScript-heavy pages, and parse any site a published template covers into structured JSON.

Hosted at https://mcp.unblockingapi.com/mcp — add it as a connector and sign in, no install. Or run it locally with npx -y @unblockingapi/mcp.

Tools

ToolWhat it doesCost
unblock_fetchFetch public web pages that block simple requests, and get clean Markdown or HTML back. Picks plain HTTP or a real browser per site by itself; pass template to get structured JSON instead. Optionally narrowed with a CSS select.1 credit per success; re-reading the same fetch is free
find_templatesFind a template that parses a site into JSON — by the URL you are about to fetch, by keyword, or by category — with its output shape.free
get_build_guideGuides for building apps on the REST API with plain HTTP: API reference, getting complete pages, templates, and recipes (rank tracker, listings aggregator, price monitor).free

Failed requests are free. The server's instructions, tool descriptions and the notes in each response steer the agent: let the API choose plain fetch or browser, check for a template before parsing a known site, scroll or wait when content is missing, and read the build guide before writing code that calls the API.

Templates

A template turns a page into named fields instead of markup. The catalogue is open-ended — search engines, marketplaces, property portals, company registries — and anyone can publish one from the editor. There is no special handling for any particular site: every template, official or community, is reached the same way.

find_templates(url: "https://www.google.com/search?q=…")   → kjellberg/google-searchunblock_fetch(url: "…", template: "kjellberg/google-search") → { query, results, related_searches }

find_templates asks the API, which matches the URL against every published template's host, path and required query parameters the same way the template library does (* is one path segment, ** any deeper path, hosts exact unless the pattern says *. or .*), so a match is found however large the catalogue grows. More results than fit come back with a page to ask for next.

If a parser fails because the site changed, you get raw HTML back with parse_error: true rather than an error.

API endpoints behind the tools

ToolCallsKey
unblock_fetchPOST https://api.unblockingapi.com/unblock (JSON body; template selects a template)X-Api-Key
find_templatesGET https://api.unblockingapi.com/templates.json?url=…&q=…&category=…&limit=…&page=… (the public catalogue, searched server-side; answers cached for 5 minutes), plus GET https://app.unblockingapi.com/public/v1/templates/<handle>/<slug> for the output shape when three or fewer matchnone
get_build_guidenothing: the guides ship in the package (guides/)none

Templates are not endpoints of their own: there is no /api/google-search or /api/<template>, only /unblock with template set.

Removed tools

Older versions, and listings copied from them, mention tools that no longer exist:

Old toolRemoved inUse instead
google_search0.4.0find_templates(url: "https://www.google.com/search?q=…"), then unblock_fetch(url, template: "kjellberg/google-search")
list_templates0.4.0find_templates (now also takes url)
idealista_property0.3.0find_templates(url) for the Idealista page, then unblock_fetch with the template it returns
ahrefs_website_authoritybefore 0.2.0 (never on npm)find_templates(url: "https://ahrefs.com/website-authority-checker/?input=example.com")

Setup

You need an UnblockingAPI account — sign up at https://unblockingapi.com (500 free credits, no card). Then pick one:

  1. Hosted server — paste one URL into your app and sign in. Nothing to install, no key to copy. Recommended for most apps.
  2. Claude Code plugin — the hosted server plus a skill and a setup command, signed in with your account.
  3. Run it locally — the same server over stdio with npx, for those who prefer to run it themselves.

Hosted server

https://mcp.unblockingapi.com/mcp

Streamable HTTP. Apps that support MCP sign-in (OAuth) only need the URL: they open an UnblockingAPI page where you sign in and click Allow. The app never sees your key, and you can disconnect it any time under Settings → Connected apps at app.unblockingapi.com. Apps without sign-in send your key as Authorization: Bearer <key> (or X-Api-Key: <key>).

AppHowGuide
Claude.ai, Claude DesktopCustomize → Connectors → + Add → Add custom connector, paste the URL, Connectunblockingapi.com/tools/claude
CursorOne-click link, or "url" in ~/.cursor/mcp.json, then Login under Settings → MCPdocs/cursor-setup.md · site
VS Code (Copilot)code --add-mcp '{"name":"unblockingapi","type":"http","url":"https://mcp.unblockingapi.com/mcp"}', sign in on first usesite
Windsurf"serverUrl" in the MCP config (Cascade → MCPs → Open MCP config file)site
LovableConnectors → + → MCP server, OAuthsite
ReplitIntegrations → MCP Servers → + Add MCP server, Test & savesite
BoltConnectors → Manage connectors → Custom MCP server, transport HTTP, MCP OAuthsite
Zed"url" (+ "headers") under context_serverssite
ClineRemote Servers tab, "type": "streamableHttp" + key headersite
Gemini CLI / Antigravitygemini mcp add --transport http … / "serverUrl" + key headersite
Claude APImcp_servers entry, your key as authorization_tokensite
n8nMCP Client Tool, HTTP Streamable, Bearer Authsite

With a key instead of signing in:

bash
# Claude Codeclaude mcp add --transport http unblockingapi https://mcp.unblockingapi.com/mcp \  --header "Authorization: Bearer your_api_key_here"
json
{  "mcpServers": {    "unblockingapi": {      "url": "https://mcp.unblockingapi.com/mcp",      "headers": { "Authorization": "Bearer your_api_key_here" }    }  }}

(Some apps name the URL key serverUrl or httpUrl; VS Code uses servers with "type": "http".) Agent frameworks: see Vercel AI SDK and LangChain.

Claude Code plugin

The plugin connects Claude Code to the hosted server, signed in with your account, and adds a skill for the fetch and template workflow. In Claude Code:

/plugin marketplace add unblockingapi/mcp/plugin install unblockingapi@unblockingapi-plugins

Then run /mcp, pick unblockingapi and choose Authenticate to sign in. New to this? Run /unblockingapi:setup and Claude walks you through it, then checks that it works. Full walkthrough: docs/claude-setup.md.

Run it locally

The same server over stdio. Needs Node.js 18+ and your key in UNBLOCKINGAPI_KEY.

bash
# Claude Codeclaude mcp add unblockingapi -e UNBLOCKINGAPI_KEY=your_api_key_here -- npx -y @unblockingapi/mcp
# VS Codecode --add-mcp '{"name":"unblockingapi","command":"npx","args":["-y","@unblockingapi/mcp"],"env":{"UNBLOCKINGAPI_KEY":"your_api_key_here"}}'

Claude Desktop (claude_desktop_config.json; restart after editing), Cursor (~/.cursor/mcp.json) and most other apps take this block:

json
{  "mcpServers": {    "unblockingapi": {      "command": "npx",      "args": ["-y", "@unblockingapi/mcp"],      "env": { "UNBLOCKINGAPI_KEY": "your_api_key_here" }    }  }}

Agentic clients that edit their own config will also set it up if you ask: "Install the @unblockingapi/mcp MCP server. My API key is sk_xxx. It runs over stdio via npx -y @unblockingapi/mcp and needs the env var UNBLOCKINGAPI_KEY."

Environment variables (local server)

VarRequiredDefaultPurpose
UNBLOCKINGAPI_KEYyes—Your API key.
UNBLOCKINGAPI_BASE_URLnohttps://api.unblockingapi.comOverride the API base URL.
UNBLOCKINGAPI_TIMEOUT_MSno180000Per-request timeout. A plain fetch that falls back to a browser can take ~170 s.

Usage

Once connected, ask your agent things like:

  • "Read https://example.com/pricing and summarise the plans." → unblock_fetch(url) — the API renders it in a browser if the site needs one
  • "Get the Google results for 'wikipedia' as JSON." → find_templates(url) → unblock_fetch(url, template: "kjellberg/google-search")
  • "Is there a template for this site?" → find_templates(url)
  • "What can this parse into JSON?" → find_templates(category: "real-estate")

unblock_fetch parameters

ParamTypeNotes
urlstring, requiredhttp(s) only; media/binary files are rejected.
renderbooleanOmit to let the API decide (plain first, browser when blocked or a JS shell; learned per site). true always renders, false never.
locationstring2-letter country code for the proxy (us, gb, de, …). An unsupported one is refused with the list.
wait_forstringImplies a browser. stable (default), domcontentloaded, networkidle, or a CSS selector to wait for.
wait_stateenumWith a selector wait_for: visible (default), nonempty, hidden, stable.
scroll_steps0–10Implies a browser. Scroll this many times before the readiness check (lazy content).
wait_min_ms0–10000Implies a browser. Minimum delay after navigation.
settle_ms0–25000Implies a browser. Ceiling on the settle wait (default 5000) — capture happens as soon as the DOM is quiet for 500 ms.
wait_rulesarrayImplies a browser. [{if: "#consent", then: "#results"}] — first visible if wins and its then replaces wait_for.
detect_ms0–25000Implies a browser. How long to probe wait_rules (default 800).
max_age0–300Accept a cached copy this many seconds old. Hits return in ms and carry cached: true.
templatestringParse with a published template (handle/name, or handle/name@3 to pin a version) and return JSON. Forces that template's fetch settings. Find one with find_templates.
formatmarkdown | htmlHow the page comes back (default markdown: a fraction of the size). Template results are always JSON.
selectstringCSS selector: return only the matching elements, in format.
freshbooleanFetch again even if this exact fetch was made in the last 10 minutes. By default that copy is reused — so re-reading it with another select or format costs nothing.
max_charsintegerCap on returned body (default 120000), after format/select. Longer bodies are cut with a note.

Responses start with a JSON metadata block (job_id, status, http_response_code, response_time_ms, render, render_reason, readiness, template_version, location, cached, parse_error, truncated, …), then notes on what to try next (scroll for more, a narrower select, …), then --- and the Markdown, HTML or JSON body. API errors (bad key, out of credits, unknown template, invalid params, concurrency limit) come back as clear tool errors.

Full API reference: https://unblockingapi.com/docs.

Development

bash
npm installnpm run dev        # tsx watchnpm run typecheck  # tsc --noEmitnpm run build      # compile to dist/npm run smoke      # drive the built server over stdio (add UNBLOCKINGAPI_KEY for live fetches)npm run smoke:http # the same over HTTP against dist/http.js (or MCP_URL=https://mcp.unblockingapi.com/mcp)npm run start:http # the hosted server on :8080 (PORT)

Repository layout: src/ (server.ts tools, index.ts stdio entry, http.ts hosted entry, client.ts API client), Dockerfile (the hosted image, deployed to mcp.unblockingapi.com by .github/workflows/deploy.yml), .claude-plugin/ (Claude Code marketplace manifest), plugins/claude/ (the Claude Code plugin: hosted server, skill, setup command), .cursor-plugin/ and plugins/cursor/ (the Cursor plugin), docs/ (setup guides).

License

MIT

[@unblockingapi/mcp MCP server – quality and maintenance score on Glama]

[@unblockingapi/mcp MCP server – quality and maintenance score on Glama]

來源:README.md,提交 973be89

工具

3

unblock_fetch

Fetch a URL through UnblockingAPI

Fetch a web page through UnblockingAPI's rotating residential proxies and a real browser. Useful for pages a plain HTTP fetch can't read: pages that need JavaScript, refuse automated requests, or show different content by country. Returns the page as Markdown (or cleaned HTML with format: 'html'); select narrows it to the part you need. If content is missing, fetch again with scroll_steps or wait_for. Picks the mode itself by default: a plain HTTP fetch first, and a real browser when the site blocks it or needs JavaScript. Pass a template reference to get structured JSON instead of HTML — call find_templates with the url first to see whether one exists. Costs 1 credit per successful fetch; failures are free.

輸入參數url必填freshformatrenderselectmax_agelocationtemplatewait_fordetect_msmax_charssettle_ms另有 4 個

find_templates

Find a structured-data template

Find published templates that parse a site into structured JSON instead of HTML. Pass the url you are about to fetch to see whether one already covers it — do this before writing your own extraction for a well-known site. Also searches by keyword or category. Each result shows the fields it returns and an example call; pass its reference as unblock_fetch's template argument. Free — no credit is charged.

輸入參數urlpagelimitsearchcategory

get_build_guide

How to build an app on UnblockingAPI

Read this before writing code that uses UnblockingAPI - an app, script, scheduled job or backend that fetches web pages (a rank tracker, a listings aggregator, a price monitor, …). Returns the REST API reference for calling it with plain HTTP (no SDK), how to keep the key server-side on platforms like Lovable, Replit and Next.js, how to use templates, and complete recipes. Free. Start with topic 'api', then the recipe that fits.

輸入參數topic必填

版本歷史

4
  1. v0.8.2最新Oct 22, 2026
  2. v0.8.1Oct 20, 2026
  3. v0.8.0Oct 20, 2026
  4. v0.6.0Oct 19, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分