{
  "ai": {
    "billing": {
      "extract_units": {
        "default": 2,
        "fast": 2,
        "smart": 3
      },
      "fetch_units": 1,
      "note": "A delivered fetch is 1 unit. A delivered render costs render_units in total (block_resources \u003c plain \u003c screenshot). AI extraction adds extract_units[model] on top of whichever fetch carried it. A render or extraction that fails is not surcharged; if the AI step alone fails, the fetch beneath it still counts.",
      "render_units": {
        "block_resources": 1,
        "plain": 5,
        "screenshot": 10
      },
      "unit": "request-unit"
    },
    "configured": true,
    "default": "fast",
    "enabled": true,
    "min_plan": "scale",
    "models": [
      "fast",
      "smart"
    ],
    "plan_scoped": false,
    "structured": {
      "default": true,
      "false_key": "answer",
      "implied_by": [
        "schema",
        "extract_type"
      ],
      "same_unit_cost": true,
      "supported": true,
      "true_key": "data"
    }
  },
  "billing": {
    "extract_units": {
      "default": 2,
      "fast": 2,
      "smart": 3
    },
    "fetch_units": 1,
    "note": "A delivered fetch is 1 unit. A delivered render costs render_units in total (block_resources \u003c plain \u003c screenshot). AI extraction adds extract_units[model] on top of whichever fetch carried it. A render or extraction that fails is not surcharged; if the AI step alone fails, the fetch beneath it still counts.",
    "render_units": {
      "block_resources": 1,
      "plain": 5,
      "screenshot": 10
    },
    "unit": "request-unit"
  },
  "endpoints": [
    "/v1/fetch",
    "/v1/extract",
    "/v1/rank",
    "/v1/batch",
    "/v1/search",
    "/v1/jobs",
    "/v1/account",
    "/v1/capabilities"
  ],
  "entitlements": {
    "ai_extraction": {
      "enabled": true,
      "min_plan": "scale"
    },
    "max_response_bytes": 2097152,
    "plan": "",
    "plan_scoped": false,
    "priority_exits": {
      "enabled": false,
      "means": "paid plans are routed to premium ISP/datacenter exits first, get a deeper bench of health-checked pool proxies, and get a last-resort delivery attempt. Free accounts exit through a high-latency public pool intended for prototyping and testing — measured at a 1,015 ms median against 453 ms on premium, an observation of a volatile public pool rather than a service level. There is no request queue — this is which exits you get, not your position in a line.",
      "min_plan": "starter"
    },
    "rate_limit_rps": 0,
    "refusal_code_locations": "JSON body field `code` on the data API; X-Scrapeland-Error response header on the proxy gateway",
    "refusal_codes": [
      "plan-upgrade-required",
      "quota-exhausted",
      "key-budget-exhausted",
      "rate-limited",
      "response-too-large"
    ],
    "render": {
      "enabled": true,
      "min_plan": ""
    }
  },
  "extract_types": [
    "article",
    "discussion",
    "event",
    "job",
    "product",
    "profile",
    "real_estate",
    "recipe"
  ],
  "features": [
    "actions",
    "ai_extract",
    "async_jobs",
    "batch",
    "block_resources",
    "body",
    "cookies",
    "country",
    "device",
    "extract_type",
    "field_errors",
    "fields",
    "fingerprint",
    "headers",
    "links",
    "markdown",
    "max_latency",
    "metadata",
    "method",
    "protocol",
    "rank",
    "render",
    "screenshot",
    "search",
    "send_headers",
    "session",
    "webhooks"
  ],
  "formats": [
    "html",
    "text",
    "markdown",
    "raw"
  ],
  "limits": {
    "batch_max_urls": 20,
    "links_max": 2000,
    "max_response_bytes": 2097152,
    "max_response_bytes_scope": "lowest_plan",
    "rate_limit_scope": "account",
    "raw_max_bytes": 7340032,
    "raw_max_bytes_scope": "format",
    "render_rate_limit_rps": 5,
    "render_rate_limit_scope": "account",
    "search_max_count": 10
  },
  "render": {
    "actions": true,
    "block_resources": true,
    "device": true,
    "enabled": true,
    "fingerprint": true,
    "screenshot": true
  }
}
