{
  "service": "scraperapi",
  "displayName": "ScraperAPI",
  "categories": [
    "Developer Tools",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "SCRAPERAPI_API_KEY",
      "description": "ScraperAPI API key passed as the api_key query parameter. Find it in your ScraperAPI dashboard API key page: https://dashboard.scraperapi.com/account."
    }
  ],
  "homepageUrl": "https://www.scraperapi.com",
  "actions": [
    {
      "id": "scraperapi.get_account_usage",
      "service": "scraperapi",
      "name": "get_account_usage",
      "description": "Retrieve current ScraperAPI account usage and limits.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "The input payload for retrieving ScraperAPI account usage."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "usage": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Usage and account details returned by ScraperAPI."
          }
        },
        "additionalProperties": false,
        "required": [
          "usage"
        ],
        "description": "The response returned when retrieving ScraperAPI account usage."
      }
    },
    {
      "id": "scraperapi.scrape_url",
      "service": "scraperapi",
      "name": "scrape_url",
      "description": "Fetch one public URL through ScraperAPI with optional rendering, geotargeting, and text output controls.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2083,
            "description": "The public target URL ScraperAPI should request.",
            "format": "uri"
          },
          "render": {
            "type": "boolean",
            "description": "Whether ScraperAPI should render JavaScript before returning the response."
          },
          "waitForSelector": {
            "type": "string",
            "minLength": 1,
            "description": "The CSS selector ScraperAPI should wait for before returning the response. This requires render to be true."
          },
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "The two-letter country code used for request geolocation."
          },
          "premium": {
            "type": "boolean",
            "description": "Whether ScraperAPI should use premium residential or mobile proxies."
          },
          "ultraPremium": {
            "type": "boolean",
            "description": "Whether ScraperAPI should use advanced bypass mechanisms."
          },
          "sessionNumber": {
            "type": "integer",
            "minimum": 1,
            "description": "The sticky session number used to reuse the same proxy across related requests."
          },
          "keepHeaders": {
            "type": "boolean",
            "description": "Whether ScraperAPI should forward provided custom headers to the target URL."
          },
          "deviceType": {
            "type": "string",
            "enum": [
              "desktop",
              "mobile"
            ],
            "description": "The device type ScraperAPI should emulate."
          },
          "outputFormat": {
            "type": "string",
            "enum": [
              "text",
              "markdown"
            ],
            "description": "The text-oriented output format ScraperAPI should return."
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Whether ScraperAPI should follow target website redirects."
          },
          "customHeaders": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "One custom HTTP header value."
            },
            "description": "Custom HTTP headers ScraperAPI should forward to the target URL when keepHeaders is true."
          }
        },
        "additionalProperties": false,
        "required": [
          "url"
        ],
        "description": "The input payload for scraping one URL with ScraperAPI."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "body": {
            "type": "string",
            "description": "The response body returned by ScraperAPI."
          },
          "metadata": {
            "type": "object",
            "properties": {
              "statusCode": {
                "type": "integer",
                "description": "The HTTP status code returned by ScraperAPI."
              },
              "contentType": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The response content type returned by ScraperAPI."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false,
            "required": [
              "statusCode",
              "contentType"
            ],
            "description": "Metadata collected from the ScraperAPI response."
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "One response header value."
            },
            "description": "Response headers returned by ScraperAPI or the target website."
          }
        },
        "additionalProperties": false,
        "required": [
          "body",
          "metadata",
          "headers"
        ],
        "description": "The response returned by a ScraperAPI synchronous request."
      }
    },
    {
      "id": "scraperapi.submit_url",
      "service": "scraperapi",
      "name": "submit_url",
      "description": "Send a POST or PUT request to one public URL through ScraperAPI.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2083,
            "description": "The public target URL ScraperAPI should request.",
            "format": "uri"
          },
          "render": {
            "type": "boolean",
            "description": "Whether ScraperAPI should render JavaScript before returning the response."
          },
          "waitForSelector": {
            "type": "string",
            "minLength": 1,
            "description": "The CSS selector ScraperAPI should wait for before returning the response. This requires render to be true."
          },
          "countryCode": {
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "description": "The two-letter country code used for request geolocation."
          },
          "premium": {
            "type": "boolean",
            "description": "Whether ScraperAPI should use premium residential or mobile proxies."
          },
          "ultraPremium": {
            "type": "boolean",
            "description": "Whether ScraperAPI should use advanced bypass mechanisms."
          },
          "sessionNumber": {
            "type": "integer",
            "minimum": 1,
            "description": "The sticky session number used to reuse the same proxy across related requests."
          },
          "keepHeaders": {
            "type": "boolean",
            "description": "Whether ScraperAPI should forward provided custom headers to the target URL."
          },
          "deviceType": {
            "type": "string",
            "enum": [
              "desktop",
              "mobile"
            ],
            "description": "The device type ScraperAPI should emulate."
          },
          "outputFormat": {
            "type": "string",
            "enum": [
              "text",
              "markdown"
            ],
            "description": "The text-oriented output format ScraperAPI should return."
          },
          "followRedirect": {
            "type": "boolean",
            "description": "Whether ScraperAPI should follow target website redirects."
          },
          "customHeaders": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "One custom HTTP header value."
            },
            "description": "Custom HTTP headers ScraperAPI should forward to the target URL when keepHeaders is true."
          },
          "method": {
            "type": "string",
            "enum": [
              "POST",
              "PUT"
            ],
            "description": "The HTTP method ScraperAPI should send to the target URL."
          },
          "body": {
            "type": "string",
            "maxLength": 1000000,
            "description": "The request body to send to the target URL."
          },
          "contentType": {
            "type": "string",
            "minLength": 1,
            "description": "The Content-Type header for the submitted request body."
          }
        },
        "additionalProperties": false,
        "required": [
          "url",
          "method",
          "body"
        ],
        "description": "The input payload for submitting a request through ScraperAPI."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "body": {
            "type": "string",
            "description": "The response body returned by ScraperAPI."
          },
          "metadata": {
            "type": "object",
            "properties": {
              "statusCode": {
                "type": "integer",
                "description": "The HTTP status code returned by ScraperAPI."
              },
              "contentType": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The response content type returned by ScraperAPI."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false,
            "required": [
              "statusCode",
              "contentType"
            ],
            "description": "Metadata collected from the ScraperAPI response."
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "One response header value."
            },
            "description": "Response headers returned by ScraperAPI or the target website."
          }
        },
        "additionalProperties": false,
        "required": [
          "body",
          "metadata",
          "headers"
        ],
        "description": "The response returned by a ScraperAPI synchronous request."
      }
    }
  ]
}
