{
  "id": "mrscraper.scrape.map",
  "object": "tool",
  "name": "Map Site URLs",
  "summary": "Crawl a site to discover its URL structure and build seed URL lists.",
  "description": "Crawl outward from a starting URL and return every discovered URL with a total count — the fastest way to map a site's architecture before scraping it page by page, without downloading full page content. Supports crawl depth and page caps, a URL collection limit, include/exclude URL patterns, proxy country selection, and a real-device stealth mode. Suited for sitemap discovery, coverage planning, and generating seed lists for the scrape endpoints.\n\nRaw mrscraper#/scrape/map endpoint: input is { body, queryParams, pathParams } as the provider documents them (https://docs.mrscraper.com/docs/api/playground/scrape-sitemap).",
  "category": "lookup",
  "hosted_by": "MrScraper",
  "runtime": "partner",
  "side_effects": false,
  "status": "live",
  "credits": 0,
  "price": null,
  "providers": [
    {
      "id": "mrscraper",
      "name": "MrScraper",
      "price": null,
      "own_key_only": true
    }
  ],
  "mcp_name": "mrscraper_scrape_map",
  "input_schema": {
    "type": "object",
    "properties": {
      "body": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "pattern": "^https?:\\/\\/\\S+$",
            "description": "Full URL to scrape, including the http:// or https:// scheme."
          },
          "maxDepth": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991,
            "description": "Maximum crawl depth from the starting URL."
          },
          "maxPages": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "description": "Maximum pages to crawl (1-20)."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991,
            "description": "Maximum number of URLs to collect."
          },
          "includePatterns": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "Only URLs matching these patterns are crawled, one pattern per entry (e.g. 'https://example.com/blog/*')."
          },
          "excludePatterns": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1
            },
            "description": "URLs matching these patterns are skipped, one pattern per entry."
          },
          "geoCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "Two-letter country code to load the page from (default 'us')."
          },
          "proxyCountry": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "Two-letter country code of the proxy exit (default 'us')."
          },
          "timeout": {
            "type": "integer",
            "minimum": 1,
            "maximum": 300,
            "description": "Maximum seconds to wait for the page to fully load (default 300)."
          },
          "super": {
            "type": "boolean",
            "description": "Route through real devices to bypass hard anti-bot protection. Uses more upstream resources, so runs consume more tokens. Default false."
          }
        },
        "required": [
          "url"
        ],
        "additionalProperties": false
      }
    },
    "required": [
      "body"
    ],
    "additionalProperties": false
  },
  "kind": "endpoint"
}