{
  "id": "mrscraper.scrape.detail",
  "object": "tool",
  "name": "Extract Detail Page",
  "summary": "Extract a product, property, hotel, job, or article detail page into typed fields.",
  "description": "Scrape one detail page with the vendor's detail agent, which picks the field set for the page type on its own: products (title, price, condition, brand, specifics, seller, shipping, images), property listings (address, price, beds, baths, sqft, facts), hotels, job postings, and articles. Returns the extracted JSON under data plus the fetched page HTML; a prompt is optional and only steers the parse. Works on any site, including ones without a fixed-price scraper (v1 measured eBay at 57 tokens, Zillow at 32). Suited for normalizing detail pages across many sites into one schema.\n\nRaw mrscraper#/scrape/detail endpoint: input is { body, queryParams, pathParams } as the provider documents them (https://docs.mrscraper.com/docs/features/ai-scraper/general).",
  "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_detail",
  "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."
          },
          "prompt": {
            "type": "string",
            "minLength": 1,
            "description": "Natural-language description of the data to extract (field names, shape); append a 'Json Schema:' section to shape the output. Parses the scraped content only — it cannot steer the scraper."
          },
          "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')."
          },
          "browserRendering": {
            "type": "boolean",
            "description": "Render the page in a real Chromium browser. Required for JavaScript-heavy sites and SPAs. Default false."
          },
          "waitUntil": {
            "type": "string",
            "enum": [
              "domcontentloaded",
              "load",
              "networkidle0",
              "networkidle2"
            ],
            "description": "When the browser considers navigation complete (browser rendering only). 'networkidle0' is the most thorough but slowest. Default 'domcontentloaded'."
          },
          "timeout": {
            "type": "integer",
            "minimum": 1,
            "maximum": 300,
            "description": "Maximum seconds to wait for the page to fully load (default 300)."
          },
          "blockResources": {
            "type": "boolean",
            "description": "Skip images, fonts, and stylesheets to speed up scraping and cut bandwidth-driven token usage. Default false."
          },
          "waitForSelector": {
            "type": "string",
            "minLength": 1,
            "description": "Wait until this CSS selector appears in the DOM before extracting — for content that loads after the initial page."
          },
          "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"
}