Web Scraping MCP Server
Connect your AI agents to HasData's Web Scraping MCP server. Scrape any public page as markdown, rendered HTML, or CSS-extracted fields in structured JSON over streamable HTTP.
https://mcp.hasdata.com/api/mcp?apis=web_scraping - Transport
- Streamable HTTP
- Auth
- OAuth or API key
- Tools
- 1 Web Scraping tool
- Price
- 1 credit / call


See the Web Scraping MCP server in action
Select a sample prompt to inspect the tool it chooses and the JSON payload your agent receives.
Fetch docs.hasdata.com/mcp-server as markdown
Pull the story titles and points from the Hacker News front page
Get the title, price and stock status from books.toscrape.com/catalogue/a-light-in-the-attic_1000
Scrape the quotes on quotes.toscrape.com/js, which only appear once JavaScript runs
The Web Scraping tool your agent can call
1 toolTyped parameters, required flags, and structured JSON fields for each tool. Fetch a page through a datacenter or residential proxy in the country you choose, render it in a headless browser, wait for a selector, and get back markdown, cleaned HTML, or the fields your CSS and AI rules describe.
+ hasdata_web_scraping_web_scraping_scrapeWebPage Any URL, in the shape you ask for 9 params 1 credit
Try| Parameter | Type | Required | Example |
|---|---|---|---|
| url | string | required | "https://news.ycombinator.com/" |
| outputFormat | array | optional | ["markdown"] |
| jsRendering | boolean | optional | true |
| waitFor | string | optional | ".quote" |
| extractRules | object | optional | { "titles": ".titleline > a" } |
| aiExtractRules | object | optional | { "price": { "type": "string" } } |
| proxyType | enum | optional | "residential" |
| proxyCountry | enum | optional | "DE" |
| screenshot | boolean | optional | true |
- requestMetadata
- content
- text
- headers
- extractedData
- aiResponse
Base calls cost 1 credit. Failed calls are not billed.
One endpoint, any MCP client
A config block for every major MCP client, in its native format. Authenticate with browser OAuth or an x-api-key header.
Claude Code
hasdata-web-scraping · connected · 1 toolCursor
hasdata-web-scraping · 1 tool enabledClaude Desktop
hasdata-web-scraping · connected · 1 toolVS Code / Copilot
hasdata-web-scraping · running · 1 toolWindsurf
hasdata-web-scraping · 1 toolCline
hasdata-web-scraping · 1 toolChatGPT / Agents SDK
hasdata-web-scraping · 1 tool listedCodex CLI
hasdata-web-scraping · 1 toolGemini CLI
hasdata-web-scraping · 1 toolRaw HTTP / curl
{ "tools": [ … 1 item ] }Web scraping plus whatever else you need
Name the services in the query string and the server exposes only their tools. Every one draws from the same key and the same balance.
Free on GitHub, paid in hours
Anyone can clone a free MCP to fetch a web page. Whether that stays free depends on the shape of your project.
A script I run once
A weekly report
A pipeline in production
A feature in my product
One balance, every interface
A flat monthly price against a known credit ceiling. Move up a plan when you outgrow it.
Free
Startup
Basic
RecommendedGrowth
Monthly tool call volume
Custom price based on required volume
Past 20M credits a month, or terms the self-serve plans do not cover. We shape the contract around your workload.
The same data, without the agent
Before you wire it in
Which sites can it fetch?
Any public URL. There is no allow-list, so the same tool reads a docs page, a product page or a JSON endpoint. Pages that need an account are out of scope, and the tool never sends cookies of yours.
What formats can the page come back in?
Set outputFormat to markdown, text, html or json. Markdown is the one agents digest best. Ask for several and they arrive together in one response.
When do I need jsRendering?
When the content you want is put on the page by a script after load. Single-page apps and infinite feeds are the usual cases. Pair it with waitFor so the fetch waits for the selector that proves the data has landed.
What is the difference between extractRules and aiExtractRules?
extractRules take CSS selectors and return exactly what they match, the same way every time. aiExtractRules take a field name and a description and let a model pull the value out of the HTML, which suits pages whose markup you do not know in advance.
How does billing work with rendering and proxies?
The tools table shows the base cost of a plain fetch. Rendering JavaScript or routing through a residential proxy raises it, and the exact ladder is on the Web Scraping API page.
How fresh is the data? Is anything cached?
Every tool call fetches the page at that moment. Nothing is served from a cache, which is why a call takes a couple of seconds instead of milliseconds.
How many calls can run in parallel?
One on the free tier, five on Startup, fifteen on Basic, and fifty on Growth. The larger Growth volumes raise it to 200, 300 and 500.
What happens when I run out of credits?
Nothing is charged on top of the plan. Calls stop until the billing cycle renews.
Does it work with Claude Desktop, Cursor, VS Code and Claude Code?
Yes, all four, plus anything else that speaks MCP over streamable HTTP. Claude Desktop connects through OAuth, and the rest take the URL and an API key header.
Is HasData affiliated with the sites I scrape?
No. HasData is an independent service and is not affiliated with, endorsed by, or sponsored by any website you point the tool at. Site names and trademarks belong to their respective owners.
How is this different from calling the Web Scraping API directly?
Same request, same infrastructure. The MCP server puts a tool schema and auth in front of it so an agent can pick the parameters itself, instead of you writing the request and parsing the response.