Scrapfly MCP
Enables extraction of structured product data including prices and listings from Amazon pages using web scraping tools with anti-bot bypass capabilities.
Provides web scraping capabilities to CrewAI agents, allowing them to fetch live web data, extract structured information, and capture screenshots as part of their workflows.
Integrates web scraping tools into LangChain applications, enabling agents to access real-time web data, bypass anti-bot protections, and extract structured content from any website.
Enables Make automation workflows to scrape live web data, extract structured information, and capture screenshots from any website with built-in anti-bot bypass.
Adds web scraping capabilities to n8n workflows, allowing automation of data extraction, screenshot capture, and structured content parsing from websites with CAPTCHA and rate limit handling.
Provides OpenAI applications with tools to scrape live web data, extract structured information, and capture screenshots from any website using advanced anti-bot bypass technology.
Integrates web scraping functionality into Zapier automation, enabling real-time data extraction, structured content parsing, and screenshot capture from any website in automated workflows.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Scrapfly MCPscrape the latest tech news from hackernews.com and extract headlines"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Scrapfly MCP Server
What is Scrapfly MCP?
The Scrapfly MCP Server connects your AI assistants to live web data through the Model Context Protocol. Transform your AI from being limited by training data to having real-time access to any website.
✨ What Your AI Can Do
Capability | Description |
🌐 Scrape Live Data | Pull current prices, listings, news, or any webpage content in real-time |
🛡️ Bypass Anti-Bot Systems | Automatically handle CAPTCHAs, proxies, JavaScript rendering, and rate limits |
⚡ Extract Structured Data | Parse complex websites into clean JSON using AI-powered extraction |
📸 Capture Screenshots | Take visual snapshots of pages or specific elements for analysis |
🏆 Why Scrapfly?
Built on battle-tested infrastructure used by thousands of developers:
99.9% Uptime — Enterprise-grade reliability
100+ Countries — Global proxy network with datacenter & residential IPs
Anti-Bot Bypass — Advanced ASP technology defeats modern protections
OAuth2 Security — Enterprise authentication for production deployments
📖 Learn more: Why Scrapfly MCP?
Related MCP server: Thordata MCP Server
🚀 Quick Install
Click one of the buttons below to install the MCP server in your preferred IDE:
📦 Manual Installation
Standard Configuration
Works with most MCP-compatible tools:
{
"servers": {
"scrapfly-cloud-mcp": {
"type": "http",
"url": "https://mcp.scrapfly.io/mcp"
}
}
}Cloud Configuration (NPX)
For tools that require a local process:
{
"mcpServers": {
"scrapfly": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.scrapfly.io/mcp"
]
}
}
}🔧 IDE-Specific Setup
One-Click Install
Manual Install
Follow the VS Code MCP guide or use the CLI:
code --add-mcp '{"name":"scrapfly-cloud-mcp","type":"http","url":"https://mcp.scrapfly.io/mcp"}'After installation, Scrapfly tools will be available in GitHub Copilot Chat.
📖 Full guide: VS Code Integration
One-Click Install
Manual Install
code-insiders --add-mcp '{"name":"scrapfly-cloud-mcp","type":"http","url":"https://mcp.scrapfly.io/mcp"}'📖 Full guide: VS Code Integration
One-Click Install
Manual Install
Open Visual Studio
Navigate to GitHub Copilot Chat window
Click the tools icon (🛠️) in the chat toolbar
Click + Add Server to open the configuration dialog
Configure:
Server ID:
scrapfly-cloud-mcpType:
http/sseURL:
https://mcp.scrapfly.io/mcp
Click Save
📖 Full guide: Visual Studio MCP documentation
One-Click Install
Manual Install
Go to
Cursor Settings→MCP→Add new MCP ServerUse the standard configuration above
Click Edit to verify or add arguments
📖 Full guide: Cursor Integration
Use the Claude Code CLI:
claude mcp add scrapfly-cloud-mcp --url https://mcp.scrapfly.io/mcp📖 Full guide: Claude Code Integration
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"scrapfly": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.scrapfly.io/mcp"]
}
}
}📖 Full guide: Claude Desktop Integration
Add to your Cline MCP settings:
{
"scrapfly-cloud-mcp": {
"type": "http",
"url": "https://mcp.scrapfly.io/mcp"
}
}📖 Full guide: Cline Integration
Follow the Windsurf MCP documentation using the standard configuration.
📖 Full guide: Windsurf Integration
Add to your Zed settings:
{
"context_servers": {
"scrapfly-cloud-mcp": {
"type": "http",
"url": "https://mcp.scrapfly.io/mcp"
}
}
}📖 Full guide: Zed Integration
Create or edit ~/.codex/config.toml:
[mcp_servers.scrapfly-cloud-mcp]
url = "https://mcp.scrapfly.io/mcp"📖 More info: Codex MCP documentation
Follow the Gemini CLI MCP guide using the standard configuration.
Add to ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"scrapfly-cloud-mcp": {
"type": "http",
"url": "https://mcp.scrapfly.io/mcp",
"enabled": true
}
}
}📖 More info: OpenCode MCP documentation
🛠️ Available Tools
The Scrapfly MCP Server provides 5 powerful tools covering 99% of web scraping use cases:
Tool | Description | Use Case |
| Cheat-sheet of the scraping options | Optional — when the right options are unclear |
| Quick page fetch with smart defaults | Simple scraping tasks |
| Full control with browser automation | Complex scraping, login flows |
| Capture page screenshots | Visual analysis, monitoring |
| Check usage & quota | Account management |
📖 Full reference: Tools & API Specification
Example: Scrape a Page
User: "What are the top posts on Hacker News right now?"
AI: Uses web_get_page to fetch https://news.ycombinator.com and returns current top storiesExample: Extract Structured Data
User: "Get all product prices from this Amazon page"
AI: Uses web_scrape with extraction_model="product_listing" to return structured JSON📖 More examples: Real-World Examples
🔐 Authentication
Scrapfly MCP supports multiple authentication methods:
Method | Best For | Documentation |
OAuth2 | Production, multi-user apps | |
API Key | Personal use, development | |
Header Auth | Custom integrations |
🔑 Get your API key: Scrapfly Dashboard
📊 Configuration Reference
Setting | Value |
Server Name |
|
Type | Remote HTTP Server |
URL |
|
Protocol | MCP over HTTP/SSE |
🖥️ Self-Hosted / Local Deployment
You can run the Scrapfly MCP server locally or self-host it.
CLI Arguments
Flag | Description |
| Start HTTP server at the specified address (e.g., |
| Use this API key instead of the |
Environment Variables
Variable | Description |
| HTTP port to listen on. Used if |
| Default Scrapfly API key. Can also be passed via query parameter |
Examples
# Start HTTP server on port 8080
./scrapfly-mcp -http :8080
# Start HTTP server using PORT env var
PORT=8080 ./scrapfly-mcp
# Start with API key
./scrapfly-mcp -http :8080 -apikey scp-live-xxxx
# Start in stdio mode (for local MCP clients)
./scrapfly-mcpDocker
# Build
docker build -t scrapfly-mcp .
# Run (Smithery compatible - uses PORT env var)
docker run -p 8080:8080 scrapfly-mcp
# Run with custom port
docker run -e PORT=9000 -p 9000:9000 scrapfly-mcp🤝 Framework Integrations
Scrapfly MCP also works with AI frameworks and automation tools:
Framework | Documentation |
LangChain | |
LlamaIndex | |
CrewAI | |
OpenAI | |
n8n | |
Make | |
Zapier |
📖 All integrations: Integration Index
📚 Resources
🌐 MCP Cloud Landing Page — Product overview & features
🎮 Live n8n Demo — Try it in your browser
❓ FAQ
💬 Need Help?
Available Tools
6 toolsinfo_accountScrapfly Account InformationsARead-onlyIdempotent
Get subscription, usage, limits. Use for quotas/billing/concurrency. Avoid for content scraping.
| Name | Required | Description | Default |
|---|---|---|---|
| dummy | No | Dummy input (for langchain compatibility) |
Output Schema
| Name | Required | Description |
|---|---|---|
| account | Yes | |
| project | Yes | |
| subscription | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover key behavioral traits (read-only, open-world, idempotent, non-destructive), so the bar is lower. The description adds useful context about the tool's focus on account management rather than scraping operations, which complements the annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (two sentences) and front-loaded with the core purpose, followed by usage guidance. Every sentence adds value without redundancy, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity, rich annotations covering safety and behavior, and the presence of an output schema, the description is complete. It provides all necessary context for an agent to understand when and how to use this tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage and only one dummy parameter documented in the schema, the description appropriately omits parameter details. It focuses on the tool's purpose and usage, which is sufficient given the minimal parameter requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get') and resources ('subscription, usage, limits'), making the purpose explicit. It distinguishes this tool from sibling scraping tools by focusing on account metadata rather than content extraction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use ('for quotas/billing/concurrency') and when to avoid ('Avoid for content scraping'), directly addressing alternatives like web_scrape or web_get_page. This gives clear context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
info_api_keyScrapfly Account API KeyARead-onlyIdempotent
Return the Users' ScrapFly API key
| Name | Required | Description | Default |
|---|---|---|---|
| dummy | No | Dummy input (for langchain compatibility) |
Output Schema
| Name | Required | Description |
|---|---|---|
| api_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a safe, read-only, idempotent operation (readOnlyHint: true, destructiveHint: false, idempotentHint: true), which the description doesn't repeat. It adds value by specifying the exact resource returned ('API key'), but doesn't disclose additional behavioral traits like rate limits or authentication requirements, though annotations cover the core safety profile adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that directly states the tool's function with zero wasted words. It's front-loaded and efficiently conveys the essential information, making it easy for an agent to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (simple retrieval), rich annotations covering safety and idempotency, and the presence of an output schema (which handles return values), the description is mostly complete. It specifies the exact resource ('API key'), but could improve by clarifying usage context relative to siblings, though annotations reduce the burden.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, documenting the single 'dummy' parameter as for LangChain compatibility. The description doesn't add parameter details beyond this, which is acceptable since the schema fully handles it. With 0 required parameters, the baseline is high, and the description focuses on the tool's purpose without redundancy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Return') and resource ('Users' ScrapFly API key'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'info_account', which might provide broader account information, leaving room for minor ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention scenarios like retrieving API keys for authentication purposes or contrast it with siblings such as 'info_account' that might include the API key among other details, leaving the agent without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scraping_instruction_enhancedScrapfly Scraping tools instructions // enhanced promptCRead-onlyIdempotent
Return critical instructions for scraping tools
| Name | Required | Description | Default |
|---|---|---|---|
| dummy | No | Dummy input (for langchain compatibility) |
Output Schema
| Name | Required | Description |
|---|---|---|
| instruction_prompt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide clear behavioral hints: readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false. The description doesn't contradict these but adds minimal context beyond them—it implies the tool returns instructions rather than performing scraping, which aligns with read-only behavior. However, it doesn't disclose additional traits like rate limits, authentication needs, or response format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise—a single sentence with no wasted words. It's front-loaded with the core action ('Return critical instructions'), though it lacks detail. For such a brief tool purpose, this efficiency is appropriate, but it borders on under-specification rather than optimal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one dummy parameter, annotations covering safety, and an output schema present), the description is minimally adequate. However, it doesn't explain what the 'critical instructions' entail or how they're used, leaving gaps in understanding the tool's value. The output schema likely details return values, so the description needn't cover those, but more context on the instructions' nature would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter with 100% description coverage, documenting it as a 'Dummy input (for langchain compatibility).' The description doesn't add any parameter-specific information, which is acceptable since the schema fully covers the single parameter. With zero required parameters and high schema coverage, a baseline of 3 is appropriate, but the simplicity of the parameter setup (one optional dummy input) justifies a slightly higher score for clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Return critical instructions for scraping tools' is a tautology that essentially restates the tool name/title. While it indicates the tool returns something (instructions), it doesn't specify what type of instructions, for which specific scraping tools, or what makes them 'critical.' It fails to distinguish this from sibling tools like 'info_account' or 'info_api_key' which might also return information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, context for when these instructions are needed, or how it differs from sibling tools like 'web_scrape' or 'web_get_page.' Users must infer usage from the vague description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotScrapfly Screenshot ToolBRead-only
Screenshot a URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The target URL to scrape. | |
| format | No | The image format to use for the screenshot. | jpg |
| capture | No | The capture to use for the screenshot. Either fullpage or a CSS selector | fullpage |
| resolution | No | The resolution to use for the screenshot. e.g. 1920x1080 | 1920x1080 |
| country | No | The country to use for the proxy. Supports ISO 3166-1 alpha-2 country codes. | |
| rendering_wait | No | Wait for this number of milliseconds before returning the response. | |
| wait_for_selector | No | The wait for selector to use for the screenshot. | |
| options | No | Screenshot options to use for the screenshot. | |
| auto_scroll | No | If true, automatically scroll the page to load lazy content. | |
| js | No | The JavaScript to execute before capturing. | |
| cache | No | If true, enable response caching. | |
| cache_ttl | No | The cache time-to-live in seconds. | |
| cache_clear | No | If true, bypass & clear cache for this request. | |
| webhook | No | The webhook to call after the request completes. | |
| vision_deficiency_type | No | The vision deficiency to use for the screenshot. | none |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering the safety and scope profile. The description doesn't add behavioral context beyond the basic action, such as performance characteristics, rate limits, or what happens with complex pages. However, it doesn't contradict the annotations either.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence ('Screenshot a URL.') that communicates the core purpose without any wasted words. It's appropriately front-loaded and earns its place by establishing the fundamental action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 15 parameters, rich schema documentation, and annotations covering safety, the description is minimal but adequate as a starting point. However, it doesn't address output format (no output schema exists) or complex behavioral aspects, leaving some contextual gaps despite the structured data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, all 15 parameters are well-documented in the schema itself. The description adds no additional parameter semantics beyond the basic action, so it meets the baseline of 3 where the schema does the heavy lifting without compensating for any gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Screenshot a URL' clearly states the verb ('screenshot') and resource ('URL'), making the purpose immediately understandable. However, it doesn't distinguish this from potential sibling tools like 'web_get_page' or 'web_scrape' that might also involve URL processing, so it doesn't reach the highest clarity level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'web_get_page' or 'web_scrape'. There's no mention of prerequisites, limitations, or specific scenarios where screenshotting is preferred over other URL interaction methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_get_pageScrapfly Quick Page Fetch ToolARead-onlyIdempotent
Quick page fetch with sane defaults. Use tool scraping_instruction_enhanced before using this tool. Use when you just need the content fast.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The target URL to scrape. | |
| country | No | The country to use for the proxy. Supports ISO 3166-1 alpha-2 country codes. | |
| format | No | The desired output format for the content. Supports clean_html, markdown, text, and json | markdown |
| format_options | No | Additional options (only available for markdown and text formats) | |
| proxy_pool | No | The proxy pool to use. Supports public_datacenter_pool and public_residential_pool, defaults: public_datacenter_pool | public_datacenter_pool |
| rendering_wait | No | Wait for this number of milliseconds before returning the response. | |
| capture_page | No | If true, also capture the page as a screenshot. | |
| capture_flags | No | Screenshot flags to use for the screenshot. | |
| extraction_model | No | The extraction model to use for the offloaded extraction. Exclusive with extraction_template and extraction_prompt. | |
| pow | Yes | use scraping_instruction_enhanced tool use for instructions |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | Errors if any |
| content | Yes | HTML/Text/JSON depending on format |
| screenshots | No | Screenshots if any |
| status_code | Yes | |
| content_type | Yes | |
| extraction_result | No | Extracted data if extraction_prompt was provided |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=true, covering safety and idempotency. The description adds context about 'sane defaults' and the speed focus ('fast'), which provides useful behavioral context beyond annotations. However, it doesn't mention rate limits, authentication needs, or other operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at just two sentences, with zero wasted words. It's front-loaded with the core purpose, followed by specific usage instructions. Every sentence earns its place by providing essential guidance that isn't covered elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complex tool with 10 parameters, 100% schema coverage, comprehensive annotations, and an output schema (implied by context signals), the description provides adequate context. It covers purpose and usage guidelines well, though it could better differentiate from sibling tools and provide more behavioral context about limitations or performance characteristics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 10 parameters. The description doesn't add any parameter-specific information beyond what's in the schema. The baseline score of 3 is appropriate when the schema carries the full parameter documentation burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Quick page fetch with sane defaults' which indicates it retrieves web page content efficiently. It specifies the verb 'fetch' and resource 'page', but doesn't explicitly differentiate from sibling tools like 'web_scrape' or 'screenshot' beyond the 'quick' qualifier. The purpose is clear but sibling differentiation is incomplete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Use tool scraping_instruction_enhanced before using this tool' establishes a prerequisite, and 'Use when you just need the content fast' gives clear context for when to choose this tool. This directly addresses when to use it versus alternatives, though it doesn't explicitly name sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
web_scrapeScrapfly Advanced Scraping ToolARead-onlyIdempotent
Scrape a URL with full control. Use tool scraping_instruction_enhanced before using this tool. Prefer web_get_page for quick fetch
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The target URL to scrape. | |
| method | No | The HTTP method to use for the request. | GET |
| body | No | Request body for POST/PUT/PATCH requests. | |
| headers | No | HTTP headers to send. | |
| country | No | The country to use for the proxy. Supports ISO 3166-1 alpha-2 country codes. | |
| proxy_pool | No | The proxy pool to use. Supports public_datacenter_pool and public_residential_pool, defaults: public_datacenter_pool | public_datacenter_pool |
| render_js | No | Enable JavaScript rendering with a headless browser. | |
| rendering_wait | No | Wait for this number of milliseconds before returning the response. | |
| asp | No | Enable Anti Scraping Protection. | |
| cache | No | Enable caching of the response. | |
| cache_ttl | No | Cache TTL in seconds when cache is true. | |
| cache_clear | No | If true, bypass & clear cache for this URL. | |
| retry | No | If false, disable automatic retry on transient errors. | |
| wait_for_selector | No | (Prefer rendering_wait). Wait for this CSS selector to appear in the page when rendering JS. | |
| lang | No | Languages to use for the request (Accept-Language header). Empty for auto-detection/Proxy Location alignment | |
| cookies | No | Cookies to send with the request. | |
| format | No | The desired output format for the content. Supports clean_html, markdown, text, and json | markdown |
| format_options | No | Additional options (only available for markdown and text formats) | |
| js | No | JavaScript to execute on the page. | |
| js_scenario | No | A schema for validating a sequence of browser actions (JS Scenario) for the Scrapfly API. | |
| screenshots | No | Screenshots with target (fullpage, selector). Example: [{ 'name': 'my_screenshot', 'target': 'fullpage' }, { 'name': 'my_screenshot2', 'target': 'selector', 'css_selector': '#price' }] | |
| screenshot_flags | No | Screenshot flags to use for the screenshot. | |
| timeout | No | Server-side timeout in milliseconds. (Prefer rendering_wait + timeout) | |
| extraction_prompt | No | (Avoid if the llm is thinking and can process the data itself). If data extraction cannot be assumed by the current llm model,AI prompt to add step of llm assisted data extraction. | |
| extraction_model | No | The extraction model to use for the offloaded extraction. Exclusive with extraction_template and extraction_prompt. | |
| pow | Yes | use scraping_instruction_enhanced tool use for instructions |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | No | Errors if any |
| content | Yes | HTML/Text/JSON depending on format |
| screenshots | No | Screenshots if any |
| status_code | Yes | |
| content_type | Yes | |
| extraction_result | No | Extracted data if extraction_prompt was provided |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=true. The description adds valuable context about the 'full control' nature of this advanced scraping tool and the prerequisite relationship with another tool. While it doesn't mention rate limits or authentication needs, it provides meaningful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at just 2 sentences, with zero wasted words. It's perfectly front-loaded with the core purpose, followed by crucial usage guidance. Every sentence earns its place by providing essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the comprehensive annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint), 100% schema description coverage, and the existence of an output schema, the description provides exactly what's needed. It states the purpose, gives critical usage guidance, and doesn't need to explain parameters or return values that are already well-documented elsewhere.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the input schema already documents all 26 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. The baseline of 3 is appropriate when the schema does all the heavy lifting for parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Scrape a URL with full control', which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools beyond mentioning one alternative; it could more clearly distinguish from 'screenshot' and 'scraping_instruction_enhanced'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides excellent usage guidance with explicit instructions: 'Use tool scraping_instruction_enhanced before using this tool' (prerequisite) and 'Prefer web_get_page for quick fetch' (alternative for simpler cases). This gives clear when-to-use and when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes, but web_get_page and web_scrape overlap in fetching web content, which could cause confusion despite descriptions suggesting different use cases (quick fetch vs. full control). The info_account and info_api_key tools are clearly separate for account management versus API key retrieval.
Naming is mixed with snake_case used throughout, but patterns vary: some start with 'info_' (info_account, info_api_key), others with 'web_' (web_get_page, web_scrape), and one with 'scraping_' (scraping_instruction_enhanced). This inconsistency makes the set less predictable, though it remains readable.
With 6 tools, the count is well-scoped for a scraping server, covering account info, instructions, screenshot, and web fetching. Each tool appears to serve a specific function without being overly sparse or bloated, fitting the domain appropriately.
The toolset covers key scraping needs: account management, instructions, screenshot, and web fetching with both quick and full-control options. A minor gap exists in lacking explicit tools for post-processing scraped data or handling errors, but core workflows are adequately supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Cloud scraping & crawling API for AI agents. Turn any URL into clean, LLM-ready markdown.
Web scraping for AI agents. Converts URLs to clean, LLM-ready Markdown with anti-bot bypass.
Web scraping for AI agents. Extract text and metadata from any URL worldwide. $0.005/page.
Fetch and process content from specified URLs & sources using the Oxylabs Web Scraper API.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables web scraping and document processing with JavaScript execution, anti-detection measures, batch processing, and structured data extraction. Supports multiple formats including markdown, HTML, screenshots, and handles PDFs with OCR capabilities.4MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables AI models to scrape and extract structured data from any website globally using a 195+ country proxy network with JavaScript rendering, anti-bot bypass, and output in Markdown, HTML, or Links format.

zenrows-mcpofficial
AlicenseAqualityBmaintenanceScrape any webpage and return clean markdown, HTML, or structured JSON. Bypasses anti-bot protection, renders JavaScript (React/Vue/Angular), supports premium residential proxies and CSS extraction. Works with any MCP client — no local install required.127619MIT
HatFetchofficial
AlicenseAqualityAmaintenanceEnables LLM agents to read any website by scraping and crawling into clean Markdown, automatically bypassing bot detection with residential proxies.321MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/scrapfly/scrapfly-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server