
HasData Web Scraping
com.hasdata由 hasdata.com 發布官方發布者v1.0.2更新於 Oct 24, 2026
Fetch any public web page through managed proxies, with optional JS rendering and extraction rules.
發布方自己的服務:HasData Airbnb
概覽
HasData 託管的 MCP 伺服器,提供一個唯讀工具,透過託管代理抓取任意公開網頁,回傳 Markdown、純文字、HTML 或 JSON。
- 可以做什麼
- 抓取單一公開網址,回傳 Markdown、純文字、HTML 或 JSON,並附上狀態碼與回應標頭
- 渲染 JavaScript、等待指定選擇器出現,並依序執行點擊、填寫、捲動或執行腳本等頁面操作
- 用 CSS 選擇器或由模型填寫的型別化 schema 擷取具名欄位,並收集頁面連結與電子郵件
- 擷取渲染後的頁面截圖,選擇資料中心或住宅代理及國家,並可封鎖圖片、廣告或指定網址
- 讀取列出代理類型與代理國家可選值的兩個資源,並使用內建的抓取並摘要提示詞
- 適用情境
- 適合需要讀取沒有專用 API 的網頁,或目標網站會阻擋一般抓取、內容依賴 JavaScript 渲染的情況。它是通用備援方案,不能取代回傳結構化欄位的網站專用解析工具。
- 執行需求
- 需要 HasData API 金鑰:遠端端點透過 x-api-key 標頭傳送,npm 或 PyPI 的 stdio 啟動器則從 HASDATA_API_KEY 環境變數讀取。需要支援 HTTP 或 stdio 的 MCP 用戶端;npx 需 Node.js,Python 套件需 uvx。需能連線至託管端點。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 HasData Web Scraping,將其新增到工作區。
- 連接 x-api-key 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
- 為需要使用其工具的對話啟用該服務。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
交給代理程式安裝
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/com.hasdata%2Fweb-scraping/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。其他 MCP 客戶端
把它新增到你客戶端的 mcpServers 設定中。
{
"mcpServers": {
"hasdata-web-scraping": {
"type": "http",
"url": "https://mcp.hasdata.com/mcp?apis=web_scraping",
"headers": {
"x-api-key": "<YOUR_API_KEY>"
}
}
}
}README
Web Scraping MCP Server
A hosted Web Scraping MCP server that gives Claude, Cursor, Windsurf and any other MCP client one read-only tool for fetching any public web page. It goes out through managed proxies, renders JavaScript when a page needs it, and returns clean markdown, plain text, raw HTML or structured JSON, with nothing to host and no browser in your stack.
This is the fallback for sites with no dedicated API. When a site does have one in the HasData catalogue, that tool returns parsed fields and this one returns a page.
1,000 free credits every month, no card required. A plain fetch costs 1 credit, so the free tier covers 1,000 of them.
[Glama score] [tool contract] [MCP] [Tools]
Contents
- What you need
- Quick start
- Example prompts
- Tools
- Output formats
- Errors and failure paths
- Pricing, free tier and limits
- How it compares
- FAQ
- HasData links
- Development
- Contributing
- License
What you need
An MCP client and a HasData API key from the dashboard, free to create with no card. This is a remote server, so the simplest path is a URL and an x-api-key header, with no container to run. A client that only speaks stdio reaches it through a thin launcher, published as @hasdata/web-scraping-mcp on npm and hasdata-web-scraping-mcp on PyPI, shown below.
Quick start
The server URL is the same for every client. We run it hands-on in Claude Code and Claude Desktop. The other blocks follow each client's own documented format for a remote server.
Clients with OAuth support can add the same URL as a connector and sign in without putting a key in a config file.
Claude Code
Claude Desktop
Settings, then Connectors, then Add custom connector, then paste https://mcp.hasdata.com/mcp?apis=web_scraping and sign in.
For the config-file route, Claude Desktop loads only local (stdio) servers, so it reaches a remote server through a stdio launcher. The @hasdata/web-scraping-mcp package is that launcher, and it reads the key from the environment. Add this to claude_desktop_config.json:
For Python instead of Node, swap the launcher for the PyPI package, which uvx runs without a manual install:
Cursor
~/.cursor/mcp.json for every project, or .cursor/mcp.json for one:
Windsurf
~/.codeium/windsurf/mcp_config.json. Windsurf calls the field serverUrl, not url:
VS Code
.vscode/mcp.json in the workspace:
Example prompts
- Fetch this page as markdown and summarise it.
- Read this documentation page and pull out every code block.
- Get the titles and links from the front page of this site as JSON.
- This page loads its content with JavaScript, so render it and wait for the results list before reading.
- Fetch this page through a German residential proxy and tell me whether the pricing differs.
- Take a screenshot of this page.
One call answers each of these. What changes between them is how much of the browser you asked for, and that is what the call costs.
Tools
One tool. The cost depends on what you turn on, and the table is in Pricing.
Scrape web page
hasdata_web_scraping_web_scraping_scrapeWebPage
Fetch one URL.
extractRules maps a field name to a CSS selector, with @attr to read an attribute rather than text.
jsScenario is an array of actions run in order, covering click, wait, waitFor, waitForAndClick, scrollX, scrollY, fill and evaluate for arbitrary JavaScript. It needs jsRendering on.
aiExtractRules describes the shape you want and lets a model fill it from the HTML. Each key is an output field, typed as string, number, boolean, list or item for a nested object.
Prompts and resources
The server ships one prompt, a ready-made workflow a client can offer instead of making the user compose a tool call.
Alongside them the server exposes 2 resources, one per parameter whose accepted values are a fixed list. Reading one is cheaper than learning the vocabulary from a rejected call, and it costs no credits. Each URI is hasdata://web_scraping/<parameter>.
Both lists are served without an API key, so a client can read them before a user has signed up.
Output formats
This is the part worth reading before your first call, because the response shape moves with outputFormat.
Ask for exactly one of markdown, text or html, and the content arrives as a plain string in text at the top level.
Include json, alone or alongside another format, and everything moves inside json, the top-level text becomes null, and the requested formats become keys in there next to the page metadata.
extractedData holds the extractRules results. A selector matching several elements returns all of them as an array, so .titleline a on a listing page returns every match rather than the first.
Errors and failure paths
Plan for these rather than assuming a happy path.
extractLinks and extractEmails do nothing unless outputFormat includes json. They put links and emails inside the json object, and there is nowhere for them to go in a plain markdown response. Asking for them with outputFormat: ["text"] returns the text and silently no links.
A 404 or a 403 on the target page is a successful call. The page's own status comes back as statusCode inside json, or as status at the top level, and the request is billed either way. Check the status before you parse the body.
jsRendering is on by default, and it is what the call costs. Turning it off takes a fetch from 10 credits to 1. Most static pages, documentation, articles and anything server-rendered do not need it. Turn it on when the content arrives empty without it.
waitFor beats wait. A fixed delay is a guess that is either too short on a slow load or wasted on a fast one. A CSS selector waits for the thing you actually need and returns as soon as it appears.
A residential proxy is five to fifteen times the price of a datacenter one. Reach for it when a datacenter fetch comes back blocked, rather than as the default.
includeOnlyTags and excludeTags take querySelectorAll selectors. An invalid selector narrows nothing rather than erroring, so a suspiciously complete response is the symptom of a typo.
aiExtractRules runs a model over the HTML, so it is neither free nor deterministic. Two calls on the same page can differ in wording. When a CSS selector can do the job, extractRules is cheaper and repeatable.
Results that carry data also carry a requestMetadata.id worth quoting in support.
Pricing, free tier and limits
The cost depends on two switches, and nothing else changes it.
Rendering is on by default, so an unconfigured call costs 10. A static page fetched with jsRendering: false costs 1, which makes this the cheapest tool in the catalogue when you do not need a browser.
The free tier is 1,000 credits every month with no card. That is 1,000 plain fetches, or 100 rendered ones. It renews with the billing cycle.
Paid plans start at $59 a month for 200,000 credits, which is 200,000 plain fetches or 20,000 rendered ones. The unit price falls with volume across the high-volume plans.
Your plan also sets concurrency. The free tier allows 5 requests at a time, Startup 5, Basic 15, and the Growth tiers run from 50 to 500. Retry on the 429 with a backoff in anything unattended, because an agent crawling a list of URLs will reach the ceiling before you do.
Credits come off successful requests only. A page that answers 404 is still a successful fetch of a 404.
How it compares
The comparison worth making is against fetching the page yourself, and against the other tools in this catalogue.
The row that decides it against a dedicated tool is coverage. Amazon, Zillow, Yelp and the rest return typed fields because someone maintains a parser for that site. This one returns a page from any site and leaves the parsing to you, which is the right trade only when no dedicated tool exists.
Against your own fetch, the question is whether the target fights back. For a friendly page, your own code is free and this is not worth a credit.
FAQ
What is a web scraping MCP server?
An MCP server exposes tools an AI client can call. This one lets an agent fetch any public URL through managed proxies and get it back as markdown, text, HTML or structured JSON, without a browser or a proxy pool in your stack.
Do I need my own proxies or a headless browser?
No. Both are on the server side. The only credential is your HasData key.
How do I make calls cheaper?
Set jsRendering: false. That is the difference between 10 credits and 1. Add blockResources when you do need rendering, so the browser skips images and stylesheets.
How do I know whether a page needs rendering?
Fetch it once without rendering, for 1 credit. If the content you want is there, you are done. If the body comes back as an empty shell, render it.
Can it fill in a form or click through to the next page?
Yes, with jsScenario, which runs click, fill, waitFor, scrollY and evaluate steps in order on the rendered page.
What is the difference between extractRules and aiExtractRules?
extractRules takes CSS selectors, and it is cheap, fast and repeatable. aiExtractRules describes the fields you want and lets a model read the page, which handles pages whose structure you cannot pin down but costs more and can vary between runs.
Can I get a screenshot?
Yes, with screenshot: true on a rendered call.
Can I use this together with other HasData APIs?
Yes. One key covers everything, and one endpoint serves them all through the apis parameter. Point a client at ?apis=web_scraping,google_serp to get both tool sets in one connection, or at mcp.hasdata.com/mcp for the full catalogue.
Is HasData affiliated with the sites I fetch?
No. HasData is an independent service. This tool fetches pages you name, so what comes back is whatever that site publishes, and you are responsible for using it in line with that site's terms and the law that applies to you.
Compliance and personal data
This tool points wherever you point it, which puts more on you than a site-specific one does. Two things deserve a decision before you build. extractEmails collects addresses, and an address is personal data in the GDPR sense and regulated separately again for marketing under the CAN-SPAM Act, the ePrivacy rules and their equivalents. And a page behind a login, a paywall or a robots exclusion is not made public by the fact that a proxy can reach it. Fetch what is genuinely public, keep only what your purpose needs, and check your own obligations.
HasData links
- Web Scraping API, the REST endpoint behind this tool
- Parameter reference
- Request cost
- Structured data extraction
- MCP server documentation
- Pricing
- Dashboard
Other HasData MCP servers: Google Search, Google Images, Google Scholar, Google Maps, Google Trends, Bing, DuckDuckGo, YouTube, TikTok, Instagram, Amazon, Walmart, Shopify, Yelp, Yellow Pages, Zillow, Redfin, Airbnb, Booking.com, Indeed, Glassdoor.
Development
The launcher is a thin stdio bridge to the remote server, so there is nothing to build.
The tests in test/ assert the tool contract, the part that can break without a commit here. They check that ?apis=web_scraping returns the one expected tool, that its name has not changed, that it still requires url and carries a description, that the parameters this README documents are still in the schema, and that the key in use is actually accepted.
Two tests pin the output-format behaviour, because it is the part of this README a reader is most likely to be caught by and the part a refactor is most likely to change. One asks for markdown alone and asserts the content arrives as a string at the top level. The other asks for json with extractRules and asserts the extraction lands in extractedData inside json. Both run without rendering, so the pair costs 2 credits.
The contract suite also runs weekly on a schedule, because the upstream tool list can change without anyone touching this repository.
Contributing
A tool table, a response sample or a documented behaviour that does not match reality is worth an issue. There is a template for exactly that. Pull requests are welcome for the same, and for anything in the launcher.
License
MIT, see LICENSE.
來源:README.md,提交 c745e83
工具
0版本歷史
3- v1.0.2最新Sep 24, 2026
- v1.0.1Sep 22, 2026
- v1.0.0Sep 16, 2026
評分
已滿足適用檢查項的 85%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通必需25 分
- 已宣告認證方式必需10 分
- 已列出工具必需15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
其他 Hasdata 整合

HasData Airbnb
com.hasdata官方發布者
由 HasData 託管的 Airbnb MCP 伺服器,提供兩個唯讀工具,讓助理依地點或地圖區域搜尋房源,並以 JSON 讀取房源詳情。

HasData Google Flights Deals
com.hasdata官方發布者
HasData 託管伺服器,提供一個 Google Flights Deals 工具,把自然語言描述的旅行想法變成帶日期的票價、航空公司、轉機次數與訂票連結。

HasData ChatGPT
com.hasdata官方發布者
HasData 託管伺服器,讓助理匿名向 ChatGPT 提問,並取回 Markdown 答案及其引用的網頁來源。

HasData Google Hotels
com.hasdata官方發布者
HasData 託管伺服器,提供一個 Google Hotels 工具,讓助理搜尋飯店與度假短租,並查看某房源在各訂房網站的價格。

HasData Zillow
com.hasdata官方發布者
由 HasData 提供的託管服務,讓助理以結構化 JSON 搜尋 Zillow 待售、出租與已售物件,並讀取完整物件詳情。