fastcrw-com · Schema

ScrapeRequest

CompanyWeb ScrapingAI AgentsRustOpen SourceSearch API

Properties

Name Type Description
url string
formats array
onlyMainContent boolean Strip navigation, ads, and boilerplate; keep main article content only
renderJs booleannull null = auto-detect, true = force JS rendering, false = skip JS rendering
waitFor integer Milliseconds to wait after JS rendering before extracting content
includeTags array CSS selectors / HTML tags to include in extraction
excludeTags array CSS selectors / HTML tags to remove before extraction
jsonSchema object JSON Schema describing the structured output shape for the 'json' format
basis boolean Return per-field evidence alongside the 'json' format: each top-level scalar schema property comes back as a Basis with an honest status. Requires a JSON schema; off by default, and when off the reque
headers object Custom HTTP request headers forwarded to the target URL
cssSelector string CSS selector to narrow content extraction to a specific element
xpath string XPath expression to narrow content extraction to a specific element
chunkStrategy object Strategy for chunking the extracted markdown
query string Query string for BM25/cosine chunk filtering (used with chunkStrategy)
filterMode string Filtering algorithm to rank chunks against query
topK integer Number of top chunks to return after filtering (default: 5)
proxy string Per-request proxy URL (http/https/socks5). Overrides global config.
proxyList array Per-request proxy pool to rotate among (BYOP). Takes precedence over proxy and server config.
proxyRotation string Rotation strategy for proxyList (default: sticky_per_host)
country string 2-letter ISO 3166-1 alpha-2 country code for residential proxy egress (e.g. 'us', 'gb')
stealth boolean Override stealth mode for this request (null = use global config)
actions object Unsupported Firecrawl parameter — returns a clear error if supplied
extract object Firecrawl-compatible extract object (e.g. { schema: {...} })
llmApiKey string BYOK: LLM provider API key for structured extraction (overrides server key)
llmProvider string Per-request LLM provider override
llmModel string Per-request LLM model identifier override
baseUrl string Per-request LLM base URL override for Chat Completions-compatible or Responses-compatible providers (e.g. https://api.deepseek.com/v1)
summaryPrompt string User-supplied instructions appended to the summary system prompt (capped at 500 chars)
maxContentChars integer Maximum bytes of scraped content sent to LLM for 'summary' format (capped at 200 KB)
renderer string Pin this request to a specific renderer. A non-auto browser tier implies renderJs:true unless renderJs:false is set. impersonated-http is a JS-less tier that presents a real Chrome TLS fingerprint; it
deadlineMs integer End-to-end deadline budget in milliseconds (default: 8000, max: 60000)
debug boolean When true, response includes debugExtraction trace with every candidate the extractor considered
changeTracking object Activated when formats includes 'changeTracking'. The format entry is the plain string; options ride on this sibling field.
goal string Plain-language monitor goal for the meaningful-change judge
judgeEnabled boolean Run the LLM meaningful-change judge on a changed page (requires goal)
parsers array Document parser directives. Omit = auto-parse PDFs. Empty array = disable parsing.
screenshotFullPage boolean Capture the whole page rather than the viewport, for `formats: ["screenshot"]`.
maxAge integer How old a cached copy of this fetch may be, in milliseconds. 0 always fetches. Clamped to a 24 hour ceiling. Extraction options (formats, schema, selectors) are not part of the cache key, so a second
storeInCache boolean Set false to read the cache without writing to it.
View JSON Schema on GitHub

JSON Schema

fastcrw-com-scrape-request-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/fastcrw-com/json-schema/fastcrw-com-scrape-request-schema.json",
  "title": "ScrapeRequest",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/fastcrw-com-openapi.json#/components/schemas/ScrapeRequest",
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "format": "uri"
    },
    "formats": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/OutputFormat"
      },
      "default": [
        "markdown"
      ]
    },
    "onlyMainContent": {
      "type": "boolean",
      "default": true,
      "description": "Strip navigation, ads, and boilerplate; keep main article content only"
    },
    "renderJs": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "null = auto-detect, true = force JS rendering, false = skip JS rendering"
    },
    "waitFor": {
      "type": "integer",
      "minimum": 0,
      "description": "Milliseconds to wait after JS rendering before extracting content"
    },
    "includeTags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [],
      "description": "CSS selectors / HTML tags to include in extraction"
    },
    "excludeTags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [],
      "description": "CSS selectors / HTML tags to remove before extraction"
    },
    "jsonSchema": {
      "type": "object",
      "additionalProperties": true,
      "description": "JSON Schema describing the structured output shape for the 'json' format"
    },
    "basis": {
      "type": "boolean",
      "default": false,
      "description": "Return per-field evidence alongside the 'json' format: each top-level scalar schema property comes back as a Basis with an honest status. Requires a JSON schema; off by default, and when off the request sent to the model is unchanged."
    },
    "headers": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "Custom HTTP request headers forwarded to the target URL"
    },
    "cssSelector": {
      "type": "string",
      "description": "CSS selector to narrow content extraction to a specific element"
    },
    "xpath": {
      "type": "string",
      "description": "XPath expression to narrow content extraction to a specific element"
    },
    "chunkStrategy": {
      "$ref": "#/$defs/ChunkStrategy",
      "description": "Strategy for chunking the extracted markdown"
    },
    "query": {
      "type": "string",
      "description": "Query string for BM25/cosine chunk filtering (used with chunkStrategy)"
    },
    "filterMode": {
      "type": "string",
      "enum": [
        "bm25",
        "cosine"
      ],
      "description": "Filtering algorithm to rank chunks against query"
    },
    "topK": {
      "type": "integer",
      "minimum": 1,
      "description": "Number of top chunks to return after filtering (default: 5)"
    },
    "proxy": {
      "type": "string",
      "description": "Per-request proxy URL (http/https/socks5). Overrides global config."
    },
    "proxyList": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "default": [],
      "description": "Per-request proxy pool to rotate among (BYOP). Takes precedence over proxy and server config."
    },
    "proxyRotation": {
      "type": "string",
      "enum": [
        "round_robin",
        "random",
        "sticky_per_host"
      ],
      "description": "Rotation strategy for proxyList (default: sticky_per_host)"
    },
    "country": {
      "type": "string",
      "description": "2-letter ISO 3166-1 alpha-2 country code for residential proxy egress (e.g. 'us', 'gb')"
    },
    "stealth": {
      "type": "boolean",
      "description": "Override stealth mode for this request (null = use global config)"
    },
    "actions": {
      "type": "object",
      "additionalProperties": true,
      "description": "Unsupported Firecrawl parameter — returns a clear error if supplied"
    },
    "extract": {
      "$ref": "#/$defs/ExtractOptions",
      "description": "Firecrawl-compatible extract object (e.g. { schema: {...} })"
    },
    "llmApiKey": {
      "type": "string",
      "description": "BYOK: LLM provider API key for structured extraction (overrides server key)"
    },
    "llmProvider": {
      "type": "string",
      "enum": [
        "anthropic",
        "openai",
        "deepseek",
        "azure",
        "openai-compatible",
        "openai-responses"
      ],
      "description": "Per-request LLM provider override"
    },
    "llmModel": {
      "type": "string",
      "description": "Per-request LLM model identifier override"
    },
    "baseUrl": {
      "type": "string",
      "description": "Per-request LLM base URL override for Chat Completions-compatible or Responses-compatible providers (e.g. https://api.deepseek.com/v1)"
    },
    "summaryPrompt": {
      "type": "string",
      "maxLength": 500,
      "description": "User-supplied instructions appended to the summary system prompt (capped at 500 chars)"
    },
    "maxContentChars": {
      "type": "integer",
      "minimum": 1,
      "description": "Maximum bytes of scraped content sent to LLM for 'summary' format (capped at 200 KB)"
    },
    "renderer": {
      "type": "string",
      "enum": [
        "auto",
        "lightpanda",
        "chrome",
        "chrome_proxy",
        "playwright",
        "camoufox",
        "impersonated-http"
      ],
      "description": "Pin this request to a specific renderer. A non-auto browser tier implies renderJs:true unless renderJs:false is set. impersonated-http is a JS-less tier that presents a real Chrome TLS fingerprint; it never implies renderJs, and combining it with renderJs:true is rejected."
    },
    "deadlineMs": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60000,
      "description": "End-to-end deadline budget in milliseconds (default: 8000, max: 60000)"
    },
    "debug": {
      "type": "boolean",
      "description": "When true, response includes debugExtraction trace with every candidate the extractor considered"
    },
    "changeTracking": {
      "$ref": "#/$defs/ChangeTrackingOptions",
      "description": "Activated when formats includes 'changeTracking'. The format entry is the plain string; options ride on this sibling field."
    },
    "goal": {
      "type": "string",
      "maxLength": 2048,
      "description": "Plain-language monitor goal for the meaningful-change judge"
    },
    "judgeEnabled": {
      "type": "boolean",
      "description": "Run the LLM meaningful-change judge on a changed page (requires goal)"
    },
    "parsers": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ParserSpec"
      },
      "description": "Document parser directives. Omit = auto-parse PDFs. Empty array = disable parsing."
    },
    "screenshotFullPage": {
      "type": "boolean",
      "default": false,
      "description": "Capture the whole page rather than the viewport, for `formats: [\"screenshot\"]`."
    },
    "maxAge": {
      "type": "integer",
      "format": "int64",
      "minimum": 0,
      "default": 3600000,
      "description": "How old a cached copy of this fetch may be, in milliseconds. 0 always fetches. Clamped to a 24 hour ceiling. Extraction options (formats, schema, selectors) are not part of the cache key, so a second pass over the same page reuses the fetch."
    },
    "storeInCache": {
      "type": "boolean",
      "default": true,
      "description": "Set false to read the cache without writing to it."
    }
  },
  "$defs": {
    "ChangeTrackingOptions": {
      "type": "object",
      "properties": {
        "modes": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "gitDiff",
              "json"
            ]
          },
          "description": "Diff surfaces. gitDiff = markdown unified diff + AST; json = per-field diff; both = mixed."
        },
        "schema": {
          "type": "object",
          "additionalProperties": true,
          "description": "JSON schema of tracked fields (json/mixed mode)"
        },
        "prompt": {
          "type": "string"
        },
        "previous": {
          "$ref": "#/$defs/ChangeTrackingSnapshot"
        },
        "tag": {
          "type": "string",
          "description": "Opaque caller tag echoed on the result"
        },
        "contentType": {
          "type": "string",
          "description": "MIME type; non-text content is hashed, not diffed"
        }
      }
    },
    "ChangeTrackingSnapshot": {
      "type": "object",
      "properties": {
        "markdown": {
          "type": "string",
          "description": "Present for gitDiff/mixed mode"
        },
        "json": {
          "type": "object",
          "additionalProperties": true,
          "description": "Present for json/mixed mode"
        },
        "contentHash": {
          "type": "string",
          "description": "Mode-aware hash; persist + supply on the next check"
        },
        "capturedAt": {
          "type": "string",
          "description": "Caller-stamped capture time, echoed untouched"
        }
      }
    },
    "ChunkStrategy": {
      "type": "object",
      "description": "Strategy for chunking extracted markdown before query-based filtering",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "sentence",
            "regex",
            "topic"
          ],
          "description": "Chunking algorithm: sentence = split on .!?, regex = split on pattern, topic = split on markdown headings"
        },
        "maxChars": {
          "type": "integer",
          "minimum": 1,
          "description": "Maximum characters per chunk (merges short chunks up to this limit)"
        },
        "overlapChars": {
          "type": "integer",
          "minimum": 0,
          "description": "Character overlap between adjacent chunks"
        },
        "dedupe": {
          "type": "boolean",
          "description": "Remove duplicate chunks"
        },
        "pattern": {
          "type": "string",
          "description": "Regex pattern to split on (required when type = 'regex')"
        }
      }
    },
    "ExtractOptions": {
      "type": "object",
      "description": "Firecrawl-compatible extraction options sub-object",
      "properties": {
        "schema": {
          "type": "object",
          "additionalProperties": true,
          "description": "JSON Schema for structured extraction. Used as jsonSchema when jsonSchema is not set directly."
        }
      }
    },
    "OutputFormat": {
      "type": "string",
      "enum": [
        "markdown",
        "html",
        "rawHtml",
        "plainText",
        "links",
        "images",
        "json",
        "summary",
        "changeTracking",
        "screenshot"
      ],
      "description": "Aliases accepted in addition to these: `extract` and `llm-extract` for `json`, `change-tracking` for `changeTracking`, `screenshot@fullPage` for `screenshot`."
    },
    "ParserSpec": {
      "type": "object",
      "description": "Document parser directive. Accepts string form ('pdf') or object form.",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "pdf"
          ],
          "description": "Parser type (only 'pdf' is supported)"
        },
        "mode": {
          "type": "string",
          "enum": [
            "auto",
            "fast",
            "ocr"
          ],
          "description": "Parsing strategy (auto = text-first; ocr degrades to text extraction with a warning)"
        },
        "maxPages": {
          "type": "integer",
          "minimum": 1,
          "description": "Optional cap on the number of pages to parse"
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/fastcrw-com-scrape-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.