{
  "service": "webscraping_ai",
  "displayName": "WebScraping.AI",
  "categories": [
    "Developer Tools",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "WEBSCRAPING_AI_API_KEY",
      "description": "WebScraping.AI API key sent as the api_key query parameter. Create or view it from the WebScraping.AI dashboard: https://webscraping.ai/dashboard."
    }
  ],
  "homepageUrl": "https://webscraping.ai",
  "actions": [
    {
      "id": "webscraping_ai.extract_text",
      "service": "webscraping_ai",
      "name": "extract_text",
      "description": "Extract visible text from one target page with WebScraping.AI.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2083,
            "description": "The target page URL WebScraping.AI should retrieve.",
            "format": "uri"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "minLength": 1,
              "description": "One header value sent to the target page."
            },
            "description": "HTTP headers WebScraping.AI should send to the target page."
          },
          "timeout": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30000,
            "description": "Maximum target page retrieval time in milliseconds."
          },
          "js": {
            "type": "boolean",
            "description": "Whether WebScraping.AI should execute on-page JavaScript."
          },
          "jsTimeout": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20000,
            "description": "Maximum JavaScript rendering time in milliseconds."
          },
          "waitFor": {
            "type": "string",
            "minLength": 1,
            "description": "A CSS selector WebScraping.AI should wait for before returning."
          },
          "proxy": {
            "type": "string",
            "enum": [
              "datacenter",
              "residential",
              "stealth"
            ],
            "description": "The WebScraping.AI proxy pool to use for the target page."
          },
          "country": {
            "type": "string",
            "enum": [
              "us",
              "gb",
              "de",
              "it",
              "fr",
              "ca",
              "es",
              "ru",
              "jp",
              "kr",
              "in",
              "hk",
              "tr"
            ],
            "description": "The proxy country code to use for the target page."
          },
          "device": {
            "type": "string",
            "enum": [
              "desktop",
              "mobile",
              "tablet"
            ],
            "description": "The browser device profile WebScraping.AI should emulate."
          },
          "errorOn404": {
            "type": "boolean",
            "description": "Whether target page HTTP 404 responses should be returned as errors."
          },
          "errorOnRedirect": {
            "type": "boolean",
            "description": "Whether target page redirects should be returned as errors."
          },
          "jsScript": {
            "type": "string",
            "minLength": 1,
            "description": "Custom JavaScript code to execute on the target page."
          },
          "textFormat": {
            "type": "string",
            "enum": [
              "plain",
              "xml",
              "json"
            ],
            "description": "The WebScraping.AI text response format."
          },
          "returnLinks": {
            "type": "boolean",
            "description": "Whether WebScraping.AI should include links when textFormat is json."
          }
        },
        "additionalProperties": false,
        "required": [
          "url"
        ],
        "description": "The input payload for extracting page text with WebScraping.AI."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "The response body returned by WebScraping.AI."
          },
          "statusCode": {
            "type": "integer",
            "description": "The HTTP status code returned by WebScraping.AI."
          },
          "contentType": {
            "anyOf": [
              {
                "type": "string",
                "description": "The response Content-Type header when returned."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "content",
          "statusCode",
          "contentType"
        ],
        "description": "The WebScraping.AI text response."
      }
    },
    {
      "id": "webscraping_ai.fetch_html",
      "service": "webscraping_ai",
      "name": "fetch_html",
      "description": "Fetch the rendered HTML content of one target page with WebScraping.AI.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2083,
            "description": "The target page URL WebScraping.AI should retrieve.",
            "format": "uri"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "minLength": 1,
              "description": "One header value sent to the target page."
            },
            "description": "HTTP headers WebScraping.AI should send to the target page."
          },
          "timeout": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30000,
            "description": "Maximum target page retrieval time in milliseconds."
          },
          "js": {
            "type": "boolean",
            "description": "Whether WebScraping.AI should execute on-page JavaScript."
          },
          "jsTimeout": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20000,
            "description": "Maximum JavaScript rendering time in milliseconds."
          },
          "waitFor": {
            "type": "string",
            "minLength": 1,
            "description": "A CSS selector WebScraping.AI should wait for before returning."
          },
          "proxy": {
            "type": "string",
            "enum": [
              "datacenter",
              "residential",
              "stealth"
            ],
            "description": "The WebScraping.AI proxy pool to use for the target page."
          },
          "country": {
            "type": "string",
            "enum": [
              "us",
              "gb",
              "de",
              "it",
              "fr",
              "ca",
              "es",
              "ru",
              "jp",
              "kr",
              "in",
              "hk",
              "tr"
            ],
            "description": "The proxy country code to use for the target page."
          },
          "device": {
            "type": "string",
            "enum": [
              "desktop",
              "mobile",
              "tablet"
            ],
            "description": "The browser device profile WebScraping.AI should emulate."
          },
          "errorOn404": {
            "type": "boolean",
            "description": "Whether target page HTTP 404 responses should be returned as errors."
          },
          "errorOnRedirect": {
            "type": "boolean",
            "description": "Whether target page redirects should be returned as errors."
          },
          "jsScript": {
            "type": "string",
            "minLength": 1,
            "description": "Custom JavaScript code to execute on the target page."
          },
          "returnScriptResult": {
            "type": "boolean",
            "description": "Whether to return the custom JavaScript result instead of the page HTML."
          }
        },
        "additionalProperties": false,
        "required": [
          "url"
        ],
        "description": "The input payload for fetching page HTML with WebScraping.AI."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "The response body returned by WebScraping.AI."
          },
          "statusCode": {
            "type": "integer",
            "description": "The HTTP status code returned by WebScraping.AI."
          },
          "contentType": {
            "anyOf": [
              {
                "type": "string",
                "description": "The response Content-Type header when returned."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "content",
          "statusCode",
          "contentType"
        ],
        "description": "The WebScraping.AI text response."
      }
    },
    {
      "id": "webscraping_ai.get_account_info",
      "service": "webscraping_ai",
      "name": "get_account_info",
      "description": "Retrieve WebScraping.AI account email, quota, reset, and concurrency details.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "The input payload for retrieving WebScraping.AI account info."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "account": {
            "type": "object",
            "properties": {
              "email": {
                "type": "string",
                "description": "The account email returned by WebScraping.AI."
              },
              "remaining_api_calls": {
                "type": "integer",
                "description": "Remaining API call credits in the current billing period."
              },
              "resets_at": {
                "type": "integer",
                "description": "Next billing cycle start time as a UNIX timestamp."
              },
              "remaining_concurrency": {
                "type": "integer",
                "description": "Remaining concurrent requests for the account."
              }
            },
            "additionalProperties": true,
            "description": "The WebScraping.AI account limits payload."
          }
        },
        "additionalProperties": false,
        "required": [
          "account"
        ],
        "description": "The output payload for retrieving WebScraping.AI account info."
      }
    },
    {
      "id": "webscraping_ai.select_html",
      "service": "webscraping_ai",
      "name": "select_html",
      "description": "Fetch HTML for one selected target page area with WebScraping.AI.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2083,
            "description": "The target page URL WebScraping.AI should retrieve.",
            "format": "uri"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "minLength": 1,
              "description": "One header value sent to the target page."
            },
            "description": "HTTP headers WebScraping.AI should send to the target page."
          },
          "timeout": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30000,
            "description": "Maximum target page retrieval time in milliseconds."
          },
          "js": {
            "type": "boolean",
            "description": "Whether WebScraping.AI should execute on-page JavaScript."
          },
          "jsTimeout": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20000,
            "description": "Maximum JavaScript rendering time in milliseconds."
          },
          "waitFor": {
            "type": "string",
            "minLength": 1,
            "description": "A CSS selector WebScraping.AI should wait for before returning."
          },
          "proxy": {
            "type": "string",
            "enum": [
              "datacenter",
              "residential",
              "stealth"
            ],
            "description": "The WebScraping.AI proxy pool to use for the target page."
          },
          "country": {
            "type": "string",
            "enum": [
              "us",
              "gb",
              "de",
              "it",
              "fr",
              "ca",
              "es",
              "ru",
              "jp",
              "kr",
              "in",
              "hk",
              "tr"
            ],
            "description": "The proxy country code to use for the target page."
          },
          "device": {
            "type": "string",
            "enum": [
              "desktop",
              "mobile",
              "tablet"
            ],
            "description": "The browser device profile WebScraping.AI should emulate."
          },
          "errorOn404": {
            "type": "boolean",
            "description": "Whether target page HTTP 404 responses should be returned as errors."
          },
          "errorOnRedirect": {
            "type": "boolean",
            "description": "Whether target page redirects should be returned as errors."
          },
          "jsScript": {
            "type": "string",
            "minLength": 1,
            "description": "Custom JavaScript code to execute on the target page."
          },
          "selector": {
            "type": "string",
            "minLength": 1,
            "description": "The CSS selector for the page area to return."
          }
        },
        "additionalProperties": false,
        "required": [
          "url",
          "selector"
        ],
        "description": "The input payload for selecting one page area with WebScraping.AI."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string",
            "description": "The response body returned by WebScraping.AI."
          },
          "statusCode": {
            "type": "integer",
            "description": "The HTTP status code returned by WebScraping.AI."
          },
          "contentType": {
            "anyOf": [
              {
                "type": "string",
                "description": "The response Content-Type header when returned."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "content",
          "statusCode",
          "contentType"
        ],
        "description": "The WebScraping.AI text response."
      }
    },
    {
      "id": "webscraping_ai.select_multiple_html",
      "service": "webscraping_ai",
      "name": "select_multiple_html",
      "description": "Fetch HTML for multiple selected target page areas with WebScraping.AI.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2083,
            "description": "The target page URL WebScraping.AI should retrieve.",
            "format": "uri"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "minLength": 1,
              "description": "One header value sent to the target page."
            },
            "description": "HTTP headers WebScraping.AI should send to the target page."
          },
          "timeout": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30000,
            "description": "Maximum target page retrieval time in milliseconds."
          },
          "js": {
            "type": "boolean",
            "description": "Whether WebScraping.AI should execute on-page JavaScript."
          },
          "jsTimeout": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20000,
            "description": "Maximum JavaScript rendering time in milliseconds."
          },
          "waitFor": {
            "type": "string",
            "minLength": 1,
            "description": "A CSS selector WebScraping.AI should wait for before returning."
          },
          "proxy": {
            "type": "string",
            "enum": [
              "datacenter",
              "residential",
              "stealth"
            ],
            "description": "The WebScraping.AI proxy pool to use for the target page."
          },
          "country": {
            "type": "string",
            "enum": [
              "us",
              "gb",
              "de",
              "it",
              "fr",
              "ca",
              "es",
              "ru",
              "jp",
              "kr",
              "in",
              "hk",
              "tr"
            ],
            "description": "The proxy country code to use for the target page."
          },
          "device": {
            "type": "string",
            "enum": [
              "desktop",
              "mobile",
              "tablet"
            ],
            "description": "The browser device profile WebScraping.AI should emulate."
          },
          "errorOn404": {
            "type": "boolean",
            "description": "Whether target page HTTP 404 responses should be returned as errors."
          },
          "errorOnRedirect": {
            "type": "boolean",
            "description": "Whether target page redirects should be returned as errors."
          },
          "jsScript": {
            "type": "string",
            "minLength": 1,
            "description": "Custom JavaScript code to execute on the target page."
          },
          "selectors": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One CSS selector for a page area."
            },
            "description": "CSS selectors for the page areas to return.",
            "minItems": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "url",
          "selectors"
        ],
        "description": "The input payload for selecting multiple page areas with WebScraping.AI."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "areas": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "One selected HTML snippet returned by WebScraping.AI."
            },
            "description": "HTML snippets returned for each requested selector."
          },
          "statusCode": {
            "type": "integer",
            "description": "The HTTP status code returned by WebScraping.AI."
          },
          "contentType": {
            "anyOf": [
              {
                "type": "string",
                "description": "The response Content-Type header when returned."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "areas",
          "statusCode",
          "contentType"
        ],
        "description": "The WebScraping.AI selected areas response."
      }
    }
  ]
}
