API Reference

June 1, 2026 ยท View on GitHub

Complete documentation for all Scraper MCP tools.

Available Tools

1. scrape_url

Scrape raw HTML content from a URL.

Parameters:

ParameterTypeRequiredDefaultDescription
urlsstring or listYes-Single URL or list of URLs (http:// or https://)
timeoutintegerNo30Request timeout in seconds
max_retriesintegerNo3Maximum retry attempts on failure
css_selectorstringNo-CSS selector to filter HTML elements

Returns:

  • url: Final URL after redirects
  • content: Raw HTML content (filtered if css_selector provided)
  • status_code: HTTP status code
  • content_type: Content-Type header value
  • metadata: Object containing headers, encoding, elapsed_ms, attempts, retries, css_selector_applied, elements_matched

2. scrape_url_markdown

Scrape a URL and convert the content to markdown format. Best for LLM consumption.

Parameters:

ParameterTypeRequiredDefaultDescription
urlsstring or listYes-Single URL or list of URLs
timeoutintegerNo30Request timeout in seconds
max_retriesintegerNo3Maximum retry attempts
strip_tagsarrayNo-HTML tags to strip (e.g., ['script', 'style'])
css_selectorstringNo-CSS selector to filter HTML before conversion

Returns:

  • Same as scrape_url but with markdown-formatted content
  • metadata.page_metadata: Extracted page metadata (title, description, etc.)

3. scrape_url_text

Scrape a URL and extract plain text content.

Parameters:

ParameterTypeRequiredDefaultDescription
urlsstring or listYes-Single URL or list of URLs
timeoutintegerNo30Request timeout in seconds
max_retriesintegerNo3Maximum retry attempts
strip_tagsarrayNoscript, style, meta, link, noscriptHTML tags to strip
css_selectorstringNo-CSS selector to filter HTML before extraction

Returns:

  • Same as scrape_url but with plain text content

Scrape a URL and extract all links.

Parameters:

ParameterTypeRequiredDefaultDescription
urlsstring or listYes-Single URL or list of URLs
timeoutintegerNo30Request timeout in seconds
max_retriesintegerNo3Maximum retry attempts
css_selectorstringNo-CSS selector to scope link extraction

Returns:

  • url: The URL that was scraped
  • links: Array of link objects with url, text, and title
  • count: Total number of links found

5. perplexity

Search the web using Perplexity AI. Requires PERPLEXITY_API_KEY environment variable.

Parameters:

ParameterTypeRequiredDefaultDescription
messagesarrayYes-Conversation messages with role and content
modelstringNosonarModel name. Only enabled (opt-in) models are accepted โ€” see note below
temperaturenumberNo0.3Creativity 0-2 (lower = focused)
max_tokensintegerNo4000Maximum response length

Model allowlist: Only sonar is enabled by default. sonar-pro, sonar-reasoning, sonar-reasoning-pro, and sonar-deep-research must be enabled (opt-in) via PERPLEXITY_ENABLED_MODELS or the perplexity_enabled_models runtime config. A disabled model returns an error without making an API call. See CONFIGURATION.md.

Returns:

  • content: AI-generated response with citation markers
  • model: Model used
  • citations: Array of source URLs
  • usage: Token usage statistics

6. perplexity_reason

Complex reasoning tasks using Perplexity's reasoning model (sonar-reasoning-pro). Requires PERPLEXITY_API_KEY.

Disabled by default: sonar-reasoning-pro is opt-in, so this tool returns a "model not enabled" error until you enable it via PERPLEXITY_ENABLED_MODELS or the perplexity_enabled_models runtime config.

Parameters:

ParameterTypeRequiredDefaultDescription
querystringYes-The query or problem to reason about
temperaturenumberNo0.3Creativity 0-2
max_tokensintegerNo4000Maximum response length

Returns:

  • Same as perplexity tool

CSS Selector Filtering

All scraping tools support CSS selector filtering to extract specific elements before processing.

Supported Selectors

The server uses BeautifulSoup4's .select() method (Soup Sieve), supporting:

Selector TypeExampleDescription
Tagmeta, img, aSelect by tag name
Multipleimg, videoComma-separated
Class.article-contentSelect by class
ID#main-contentSelect by ID
Attributea[href], meta[property="og:image"]Select by attribute
Descendantarticle p, div.content aNested selectors
Pseudo-classp:nth-of-type(3), a:not([rel])Advanced filtering

Examples

# Extract only meta tags
scrape_url("https://example.com", css_selector="meta")

# Get article content as markdown
scrape_url_markdown("https://blog.com/article", css_selector="article.main-content")

# Extract text from specific section
scrape_url_text("https://example.com", css_selector="#main-content")

# Get only navigation links
scrape_extract_links("https://example.com", css_selector="nav.primary")

# Get Open Graph meta tags
scrape_url("https://example.com", css_selector='meta[property^="og:"]')

# Combine with strip_tags
scrape_url_markdown(
    "https://example.com",
    css_selector="article",
    strip_tags=["script", "style"]
)

How It Works

  1. Scrape: Fetch HTML from the URL
  2. Filter: Apply CSS selector to keep only matching elements
  3. Process: Convert to markdown/text or extract links
  4. Return: Include elements_matched count in metadata

Retry Behavior

The scraper includes intelligent retry logic with exponential backoff.

Configuration

SettingDefaultDescription
max_retries3Maximum retry attempts
timeout30sRequest timeout
Retry delay1s initialExponential backoff

Retry Schedule

For default configuration (max_retries=3):

  1. First attempt: Immediate
  2. Retry 1: Wait 1 second
  3. Retry 2: Wait 2 seconds
  4. Retry 3: Wait 4 seconds

Total maximum wait: ~7 seconds before final failure.

What Triggers Retries

  • Network timeouts
  • Connection failures
  • HTTP errors (4xx, 5xx status codes)

Response Metadata

All responses include retry information:

{
  "attempts": 2,
  "retries": 1,
  "elapsed_ms": 234.5
}

Customizing Retries

# Disable retries
scrape_url("https://example.com", max_retries=0)

# More aggressive retries
scrape_url("https://example.com", max_retries=5, timeout=60)

# Quick fail
scrape_url("https://example.com", max_retries=1, timeout=10)

Batch Operations

All tools support batch operations by passing a list of URLs:

# Single URL
scrape_url("https://example.com")

# Batch operation
scrape_url(["https://example.com", "https://example.org", "https://example.net"])

Batch operations:

  • Execute concurrently (default: 5 parallel requests)
  • Return results for all URLs with individual success/failure status
  • Include totals: total, successful, failed

Resources

MCP resources provide read-only data access via URI-based addressing. Access resources via resources/list and resources/read.

Cache Resources

URIDescription
cache://statsCache statistics (hit rate, size, entries)
cache://requestsList of recent request IDs with metadata
cache://request/{id}Full cached result by request ID
cache://request/{id}/contentJust the content from a cached request
cache://request/{id}/metadataJust the metadata from a cached request

Configuration Resources

URIDescription
config://currentCurrent runtime configuration (API key masked)
config://defaultsDefault configuration values
config://scrapingScraping settings (timeout, retries, concurrency)
config://cacheCache settings (TTLs, directory)
config://perplexityPerplexity settings (enabled/available models, key status)

Server Resources

URIDescription
server://infoServer info (version, uptime, capabilities)
server://metricsRequest metrics (counts, success rates)
server://toolsList of available tools with descriptions

Prompts

MCP prompts provide reusable, parameterized workflow templates. Access prompts via prompts/list and prompts/get.

Content Analysis Prompts

PromptParametersPurpose
analyze_webpageurl, focusStructured webpage analysis
summarize_contenturl, length, styleGenerate content summaries
extract_dataurl, data_type, selectorExtract specific data types
compare_pagesurlsCompare multiple pages

SEO/Technical Prompts

PromptParametersPurpose
seo_auditurlComprehensive SEO check
link_auditurlAnalyze internal/external links
metadata_checkurlReview meta tags and OG data
accessibility_checkurlBasic accessibility analysis

Research Prompts

PromptParametersPurpose
research_topictopic, depthMulti-source research
fact_checkclaim, sourcesVerify claims
competitive_analysisurlsCompare competitors
news_rounduptopic, timeframeGather recent news

Disabling Resources/Prompts

To reduce context overhead:

# Environment variables
DISABLE_RESOURCES=true
DISABLE_PROMPTS=true

# CLI flags
python -m scraper_mcp --disable-resources --disable-prompts