Skip to main content
Glama
scrapfly

Scrapfly MCP

by scrapfly

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:

📖 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:

Install in VS Code Install in VS Code Insiders Install in Visual Studio Install in Cursor


📦 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

Install in VS Code

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

Install in VS Code Insiders

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

Install in Visual Studio

Manual Install

  1. Open Visual Studio

  2. Navigate to GitHub Copilot Chat window

  3. Click the tools icon (🛠️) in the chat toolbar

  4. Click + Add Server to open the configuration dialog

  5. Configure:

    • Server ID: scrapfly-cloud-mcp

    • Type: http/sse

    • URL: https://mcp.scrapfly.io/mcp

  6. Click Save

📖 Full guide: Visual Studio MCP documentation

One-Click Install

Install in Cursor

Manual Install

  1. Go to Cursor SettingsMCPAdd new MCP Server

  2. Use the standard configuration above

  3. 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

scraping_instruction_enhanced

Cheat-sheet of the scraping options

Optional — when the right options are unclear

web_get_page

Quick page fetch with smart defaults

Simple scraping tasks

web_scrape

Full control with browser automation

Complex scraping, login flows

screenshot

Capture page screenshots

Visual analysis, monitoring

info_account

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 stories

Example: 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

OAuth2 Setup

API Key

Personal use, development

API Key Setup

Header Auth

Custom integrations

Header Auth

🔑 Get your API key: Scrapfly Dashboard


📊 Configuration Reference

Setting

Value

Server Name

scrapfly-cloud-mcp

Type

Remote HTTP Server

URL

https://mcp.scrapfly.io/mcp

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

-http <address>

Start HTTP server at the specified address (e.g., :8080). Takes precedence over PORT env var.

-apikey <key>

Use this API key instead of the SCRAPFLY_API_KEY environment variable.

Environment Variables

Variable

Description

PORT

HTTP port to listen on. Used if -http flag is not set.

SCRAPFLY_API_KEY

Default Scrapfly API key. Can also be passed via query parameter ?apiKey=xxx at runtime.

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-mcp

Docker

# 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:

📖 All integrations: Integration Index


📚 Resources


💬 Need Help?


Available Tools

6 tools
info_accountScrapfly Account InformationsA
Read-onlyIdempotent

Get subscription, usage, limits. Use for quotas/billing/concurrency. Avoid for content scraping.

ParametersJSON Schema
NameRequiredDescriptionDefault
dummyNoDummy input (for langchain compatibility)

Output Schema

ParametersJSON Schema
NameRequiredDescription
accountYes
projectYes
subscriptionYes

TDQS

A4.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 KeyA
Read-onlyIdempotent

Return the Users' ScrapFly API key

ParametersJSON Schema
NameRequiredDescriptionDefault
dummyNoDummy input (for langchain compatibility)

Output Schema

ParametersJSON Schema
NameRequiredDescription
api_keyYes

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 promptC
Read-onlyIdempotent

Return critical instructions for scraping tools

ParametersJSON Schema
NameRequiredDescriptionDefault
dummyNoDummy input (for langchain compatibility)

Output Schema

ParametersJSON Schema
NameRequiredDescription
instruction_promptYes

TDQS

C2.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose2/5

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.

Usage Guidelines2/5

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 ToolB
Read-only

Screenshot a URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe target URL to scrape.
formatNoThe image format to use for the screenshot.jpg
captureNoThe capture to use for the screenshot. Either fullpage or a CSS selector fullpage
resolutionNoThe resolution to use for the screenshot. e.g. 1920x10801920x1080
countryNoThe country to use for the proxy. Supports ISO 3166-1 alpha-2 country codes.
rendering_waitNoWait for this number of milliseconds before returning the response.
wait_for_selectorNoThe wait for selector to use for the screenshot.
optionsNoScreenshot options to use for the screenshot.
auto_scrollNoIf true, automatically scroll the page to load lazy content.
jsNoThe JavaScript to execute before capturing.
cacheNoIf true, enable response caching.
cache_ttlNoThe cache time-to-live in seconds.
cache_clearNoIf true, bypass & clear cache for this request.
webhookNoThe webhook to call after the request completes.
vision_deficiency_typeNoThe vision deficiency to use for the screenshot.none

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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 ToolA
Read-onlyIdempotent

Quick page fetch with sane defaults. Use tool scraping_instruction_enhanced before using this tool. Use when you just need the content fast.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe target URL to scrape.
countryNoThe country to use for the proxy. Supports ISO 3166-1 alpha-2 country codes.
formatNoThe desired output format for the content. Supports clean_html, markdown, text, and jsonmarkdown
format_optionsNoAdditional options (only available for markdown and text formats)
proxy_poolNoThe proxy pool to use. Supports public_datacenter_pool and public_residential_pool, defaults: public_datacenter_poolpublic_datacenter_pool
rendering_waitNoWait for this number of milliseconds before returning the response.
capture_pageNoIf true, also capture the page as a screenshot.
capture_flagsNoScreenshot flags to use for the screenshot.
extraction_modelNoThe extraction model to use for the offloaded extraction. Exclusive with extraction_template and extraction_prompt.
powYesuse scraping_instruction_enhanced tool use for instructions

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorsNoErrors if any
contentYesHTML/Text/JSON depending on format
screenshotsNoScreenshots if any
status_codeYes
content_typeYes
extraction_resultNoExtracted data if extraction_prompt was provided

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines5/5

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 ToolA
Read-onlyIdempotent

Scrape a URL with full control. Use tool scraping_instruction_enhanced before using this tool. Prefer web_get_page for quick fetch

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe target URL to scrape.
methodNoThe HTTP method to use for the request.GET
bodyNoRequest body for POST/PUT/PATCH requests.
headersNoHTTP headers to send.
countryNoThe country to use for the proxy. Supports ISO 3166-1 alpha-2 country codes.
proxy_poolNoThe proxy pool to use. Supports public_datacenter_pool and public_residential_pool, defaults: public_datacenter_poolpublic_datacenter_pool
render_jsNoEnable JavaScript rendering with a headless browser.
rendering_waitNoWait for this number of milliseconds before returning the response.
aspNoEnable Anti Scraping Protection.
cacheNoEnable caching of the response.
cache_ttlNoCache TTL in seconds when cache is true.
cache_clearNoIf true, bypass & clear cache for this URL.
retryNoIf false, disable automatic retry on transient errors.
wait_for_selectorNo(Prefer rendering_wait). Wait for this CSS selector to appear in the page when rendering JS.
langNoLanguages to use for the request (Accept-Language header). Empty for auto-detection/Proxy Location alignment
cookiesNoCookies to send with the request.
formatNoThe desired output format for the content. Supports clean_html, markdown, text, and jsonmarkdown
format_optionsNoAdditional options (only available for markdown and text formats)
jsNoJavaScript to execute on the page.
js_scenarioNoA schema for validating a sequence of browser actions (JS Scenario) for the Scrapfly API.
screenshotsNoScreenshots with target (fullpage, selector). Example: [{ 'name': 'my_screenshot', 'target': 'fullpage' }, { 'name': 'my_screenshot2', 'target': 'selector', 'css_selector': '#price' }]
screenshot_flagsNoScreenshot flags to use for the screenshot.
timeoutNoServer-side timeout in milliseconds. (Prefer rendering_wait + timeout)
extraction_promptNo(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_modelNoThe extraction model to use for the offloaded extraction. Exclusive with extraction_template and extraction_prompt.
powYesuse scraping_instruction_enhanced tool use for instructions

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorsNoErrors if any
contentYesHTML/Text/JSON depending on format
screenshotsNoScreenshots if any
status_codeYes
content_typeYes
extraction_resultNoExtracted data if extraction_prompt was provided

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines5/5

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

A3.6/5.0
Disambiguation4/5

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 Consistency3/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    4
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Scrape 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.
    1
    276
    19
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables LLM agents to read any website by scraping and crawling into clean Markdown, automatically bypassing bot detection with residential proxies.
    3
    21
    MIT

Latest Blog Posts

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