{
  "service": "scrapingbee",
  "displayName": "ScrapingBee",
  "categories": [
    "Developer Tools",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "SCRAPINGBEE_API_KEY",
      "description": "ScrapingBee API key passed with the api_key query parameter.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://www.scrapingbee.com",
  "actions": [
    {
      "id": "scrapingbee.extract_data",
      "service": "scrapingbee",
      "name": "extract_data",
      "description": "Extract structured JSON data from one public URL with ScrapingBee extract_rules.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The public URL to extract data from with ScrapingBee.",
            "format": "uri"
          },
          "extractRules": {
            "type": "object",
            "additionalProperties": {
              "description": "A JSON-compatible value used in ScrapingBee extraction rules or responses."
            },
            "description": "The extraction rules object serialized into the extract_rules query parameter."
          },
          "renderJs": {
            "type": "boolean",
            "description": "Whether ScrapingBee should render JavaScript before returning the page."
          },
          "waitMs": {
            "type": "integer",
            "minimum": 0,
            "description": "How many milliseconds ScrapingBee should wait before returning the page."
          },
          "waitFor": {
            "type": "string",
            "minLength": 1,
            "description": "The CSS selector ScrapingBee should wait for before returning the page."
          },
          "device": {
            "type": "string",
            "enum": [
              "desktop",
              "mobile"
            ],
            "description": "The device preset used for the request."
          },
          "blockAds": {
            "type": "boolean",
            "description": "Whether ScrapingBee should block ads on the page."
          },
          "blockResources": {
            "type": "boolean",
            "description": "Whether ScrapingBee should block images and CSS resources."
          },
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "The two-letter country code used for request geolocation."
          },
          "premiumProxy": {
            "type": "boolean",
            "description": "Whether ScrapingBee should use premium proxy routing."
          },
          "stealthProxy": {
            "type": "boolean",
            "description": "Whether ScrapingBee should use stealth proxy routing."
          },
          "transparentStatusCode": {
            "type": "boolean",
            "description": "Whether ScrapingBee should return the target page status code transparently."
          },
          "retry": {
            "type": "integer",
            "minimum": 1,
            "description": "How many times ScrapingBee should retry the request on failure."
          }
        },
        "additionalProperties": false,
        "required": [
          "url",
          "extractRules"
        ],
        "description": "The input payload for extracting structured data with ScrapingBee."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "additionalProperties": {
              "description": "A JSON-compatible value used in ScrapingBee extraction rules or responses."
            },
            "description": "The structured data object returned by ScrapingBee extract_rules."
          },
          "statusCode": {
            "type": "integer",
            "description": "The HTTP status code returned by ScrapingBee."
          },
          "resolvedUrl": {
            "type": "string",
            "description": "The final resolved URL reported by ScrapingBee."
          },
          "creditCost": {
            "type": "number",
            "description": "The request credit cost reported by ScrapingBee."
          }
        },
        "additionalProperties": false,
        "required": [
          "data",
          "statusCode"
        ],
        "description": "The output payload for extracting structured data with ScrapingBee."
      }
    },
    {
      "id": "scrapingbee.fetch_html",
      "service": "scrapingbee",
      "name": "fetch_html",
      "description": "Fetch HTML content from one public URL with optional rendering and proxy controls.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The public URL to fetch with ScrapingBee.",
            "format": "uri"
          },
          "renderJs": {
            "type": "boolean",
            "description": "Whether ScrapingBee should render JavaScript before returning the page."
          },
          "waitMs": {
            "type": "integer",
            "minimum": 0,
            "description": "How many milliseconds ScrapingBee should wait before returning the page."
          },
          "waitFor": {
            "type": "string",
            "minLength": 1,
            "description": "The CSS selector ScrapingBee should wait for before returning the page."
          },
          "device": {
            "type": "string",
            "enum": [
              "desktop",
              "mobile"
            ],
            "description": "The device preset used for the request."
          },
          "blockAds": {
            "type": "boolean",
            "description": "Whether ScrapingBee should block ads on the page."
          },
          "blockResources": {
            "type": "boolean",
            "description": "Whether ScrapingBee should block images and CSS resources."
          },
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "The two-letter country code used for request geolocation."
          },
          "premiumProxy": {
            "type": "boolean",
            "description": "Whether ScrapingBee should use premium proxy routing."
          },
          "stealthProxy": {
            "type": "boolean",
            "description": "Whether ScrapingBee should use stealth proxy routing."
          },
          "transparentStatusCode": {
            "type": "boolean",
            "description": "Whether ScrapingBee should return the target page status code transparently."
          },
          "retry": {
            "type": "integer",
            "minimum": 1,
            "description": "How many times ScrapingBee should retry the request on failure."
          }
        },
        "additionalProperties": false,
        "required": [
          "url"
        ],
        "description": "The input payload for fetching page HTML with ScrapingBee."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "html": {
            "type": "string",
            "description": "The HTML content returned by ScrapingBee."
          },
          "statusCode": {
            "type": "integer",
            "description": "The HTTP status code returned by ScrapingBee."
          },
          "contentType": {
            "type": "string",
            "description": "The content type returned by ScrapingBee."
          },
          "initialStatusCode": {
            "type": "integer",
            "description": "The original target page status code reported by ScrapingBee."
          },
          "resolvedUrl": {
            "type": "string",
            "description": "The final resolved URL reported by ScrapingBee."
          },
          "creditCost": {
            "type": "number",
            "description": "The request credit cost reported by ScrapingBee."
          }
        },
        "additionalProperties": false,
        "required": [
          "html",
          "statusCode"
        ],
        "description": "The output payload for fetching page HTML with ScrapingBee."
      }
    },
    {
      "id": "scrapingbee.get_usage_stats",
      "service": "scrapingbee",
      "name": "get_usage_stats",
      "description": "Retrieve the current ScrapingBee API usage and concurrency statistics.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "The input payload for retrieving ScrapingBee usage statistics."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "usage": {
            "type": "object",
            "properties": {
              "max_api_credit": {
                "type": "integer",
                "description": "The maximum API credits available in the current billing period."
              },
              "used_api_credit": {
                "type": "integer",
                "description": "The API credits already consumed in the current billing period."
              },
              "max_concurrency": {
                "type": "integer",
                "description": "The maximum number of concurrent requests allowed."
              },
              "current_concurrency": {
                "type": "integer",
                "description": "The current number of concurrent requests in use."
              },
              "renewal_subscription_date": {
                "type": "string",
                "description": "The renewal timestamp for the current subscription period."
              }
            },
            "additionalProperties": false,
            "description": "The current ScrapingBee usage snapshot."
          }
        },
        "additionalProperties": false,
        "description": "The output payload for retrieving ScrapingBee usage statistics."
      }
    }
  ]
}
