Skip to main content
Glama
webscraping-ai

WebScraping-AI MCP Server

Official

Get Structured Site Data

webscraping_ai_data
Read-only

Extract structured JSON from any public web page by its normal URL, including parse status and consistent snake_case fields. Use it to turn pages into reusable data without writing site-specific parsers.

Instructions

Get structured JSON for any public web page from its normal URL. Returns {request_parameters: {url, provider, type}, parse_status, data}: provider is the site and type the kind of page, parse_status is ok, parse_failed or not_found, and data holds snake_case fields whose names stay the same for every page of that kind on that site (null for values the page doesn't expose; data itself can be null when parsing fails). Some sites have dedicated parsers; for others, the first request for a new kind of page also learns its structure and can take up to about 45 seconds. When learning takes longer, it returns an error result with status_code 503 and body.error_code "structure_processing" (not charged): retry after body.retry_after seconds. A 422 "structure_unavailable" means no structured data was found (not charged); use webscraping_ai_fields to name the values you want instead. On those sites, redirects to another site aren't followed: they return a 500 with body.error_code "target_redirect" naming the target (not charged). Priced per request (see https://webscraping.ai/docs#data), including parse_failed and not_found results; failed fetches are not charged.

Input Schema

NameRequiredDescriptionDefault
urlYesNormal URL of any public web page, e.g. https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html. Sent as-is; the site and page type are detected from it.
paramsNoExtra site-specific query parameters sent to the API as-is, as an object of string, number or boolean values, for parameters added after this tool was released. Must not contain url, api_key or the parameters above.
countryNoTwo-letter country code of the proxy used to fetch the page, e.g. us, gb, de (us by default).
transcriptNoVideo pages on sites with a dedicated parser only. Also fetch the video's transcript into data.transcript (null when no matching captions are available; false by default). If the transcript fetch fails, the whole request fails with a 500 and is not charged.
transcript_languageNoWith transcript: true. Caption language to pick, e.g. en, de. Without it, English is preferred, then the first available track; if the video has no captions in that language, data.transcript is null.
disable_content_sandboxingNoReturn the raw result without the external-content security boundaries that guard against prompt injection (false by default).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv1.4.0
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / params / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • changedInput schema / properties / transcript / description
      Previous value: -"YouTube videos only. Also fetch the video's transcript into data.transcript (null when no matching captions are available; false by default). If the transcript fetch fails, the whole request fails with a 500 and is not charged."New value: +"Video pages on sites with a dedicated parser only. Also fetch the video's transcript into data.transcript (null when no matching captions are available; false by default). If the transcript fetch fails, the whole request fails with a 500 and is not charged."
    • changedInput schema / properties / transcript_language / description
      Previous value: -"YouTube videos only, with transcript: true. Caption language to pick, e.g. en, de. Without it, English is preferred, then the first available track; if the video has no captions in that language, data.transcript is null."New value: +"With transcript: true. Caption language to pick, e.g. en, de. Without it, English is preferred, then the first available track; if the video has no captions in that language, data.transcript is null."
    • changedInput schema / properties / url / description
      Previous value: -"Normal URL of a public page on a supported site, e.g. https://www.youtube.com/watch?v=dQw4w9WgXcQ. Sent as-is; the site and page type are detected from it."New value: +"Normal URL of any public web page, e.g. https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html. Sent as-is; the site and page type are detected from it."
  2. Addedv1.2.2

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds substantial behavioral detail beyond them: return shape, parse_status values, learning latency up to 45 seconds, 503 structure_processing retry behavior, 422 structure_unavailable handling, redirect behavior, and pricing/charging rules. This is unusually transparent for an agent deciding how to invoke and interpret the tool.

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 front-loaded with the core action and return format, and most sentences convey necessary behavior around parsing, errors, and billing. It is dense and long in a single paragraph, but the detail is largely earned by the tool's complexity rather than being filler.

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 six parameters, no output schema, and an open-world read-only tool, the description is complete enough: it explains the response object, parse status semantics, latency/learning behavior, key error cases, and billing implications. The schema already documents the parameters, so the description fills the remaining behavioral gaps.

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 all six parameters already have structured descriptions. The tool description adds little parameter-level meaning beyond saying the URL is sent as-is, which is already covered by the schema; the baseline of 3 is appropriate.

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 states a specific verb and resource: 'Get structured JSON for any public web page from its normal URL.' It explains exactly what the tool returns and distinguishes the fallback case by naming webscraping_ai_fields when structured data is unavailable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: it is for structured JSON from a normal public URL, and it explicitly redirects the agent to webscraping_ai_fields when a 422 structure_unavailable occurs. It does not broadly compare itself with the other siblings such as html, text, question, or selected, so it falls short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.