MCP docs › Tools › Web Page Scraper
Web Page Scraper
scrape_web_pages fast Web search & page reading
Fetch specific URLs you already know and extract their content — title, meta description, canonical, language, H1/H2 headings, readable body text, word count, emails, phones, social profiles, Open Graph and JSON-LD structured data. No search step. Blocked or non-HTML URLs come back with the reason in their status instead of failing the whole run.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
urls |
string[] | yes | — | The page URLs to scrape (http/https). Private and internal addresses are rejected. |
text_chars |
integer | no | 5000 |
Characters of readable body text per page. Clamped by plan: Starter 5,000, Pro 50,000, Gold 200,000 (full page). |
include_contacts |
boolean | no | true |
Extract emails, phone numbers and social profiles from each page. |
include_structured |
boolean | no | true |
Extract JSON-LD, Open Graph and Twitter-card data from each page. |
include_links |
boolean | no | false |
Return the internal/external links found on each page. |
include_images |
boolean | no | false |
Return the images (src + alt) found on each page. |
Returns
One row per URL with parsed content; blocked pages report the reason in-row instead of failing the run.
Each row typically carries: url final_url http_status title meta_description canonical language headings text word_count emails phones socials open_graph jsonld
The response body is { status, count, fields, results }. Runs that exceed the inline wait return { status: "running", job_id, tool_flow } instead — see Jobs & errors.
Call it over MCP
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "scrape_web_pages",
"arguments": {
"urls": [
"https://example.com/pricing"
],
"text_chars": 8000
}
}
}
Call it over the REST API
curl -X POST https://convertfleet.online/api/tool-run \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tool":"websearch","params":{"urls":["https://example.com/pricing"],"text_chars":8000}}'
Both paths run the same job engine, enforce the same plan limits and count against the same monthly quota. See the REST API page.
Related tools
JSON Schema
{
"type": "object",
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "The page URLs to scrape (http/https). Private and internal addresses are rejected."
},
"text_chars": {
"type": "integer",
"description": "Characters of readable body text per page. Clamped by plan: Starter 5,000, Pro 50,000, Gold 200,000 (full page).",
"default": 5000
},
"include_contacts": {
"type": "boolean",
"description": "Extract emails, phone numbers and social profiles from each page.",
"default": true
},
"include_structured": {
"type": "boolean",
"description": "Extract JSON-LD, Open Graph and Twitter-card data from each page.",
"default": true
},
"include_links": {
"type": "boolean",
"description": "Return the internal/external links found on each page.",
"default": false
},
"include_images": {
"type": "boolean",
"description": "Return the images (src + alt) found on each page.",
"default": false
}
},
"additionalProperties": false,
"required": [
"urls"
]
}