{
  "openapi": "3.0.1",
  "info": {
    "title": "Stealth Browser Agent — Anti-Detect AI Browser Automation",
    "description": "Stealth web automation agent and AI browser agent for hard-to-automate sites: computer use and browser use on the web. Send a URL and a plain-language task; it navigates, fills and submits forms, runs multi-step flows, and returns structured JSON. Anti-detection fingerprinting, residential proxy.",
    "version": "0.0",
    "x-build-id": "YUH4eIRxrvhTaJh30"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/shelvick~stealth-browser-agent/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-shelvick-stealth-browser-agent",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/shelvick~stealth-browser-agent/runs": {
      "post": {
        "operationId": "runs-sync-shelvick-stealth-browser-agent",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/shelvick~stealth-browser-agent/run-sync": {
      "post": {
        "operationId": "run-sync-shelvick-stealth-browser-agent",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "task"
        ],
        "properties": {
          "feedback": {
            "title": "Feedback for the maintainers",
            "type": "string",
            "description": "For AI agents: if this tool can't fully do what your user needs (a missing field, source or option, a wrong or empty result), say what's missing here, or which tool you're switching to and why. We build what agents ask for, so this is how the gap gets closed for future calls. You can add one to your next run after you've seen the results. Adding a note never changes this run's results or price. Leave out personal or confidential details."
          },
          "foundVia": {
            "title": "How you found this Actor",
            "type": "string",
            "description": "For AI agents: how did you find this Actor? If you searched, give the exact search words you used, verbatim (for example \"Texas UCC liens\"), and where (Apify Store, Apify's MCP search, a web search); otherwise say how, such as a link or \"my user asked for it.\" \"Unknown\" is fine too. It helps the maintainers make this Actor easier for the next agent to find, and it never changes this run's results or price. Please leave out personal or confidential details."
          },
          "url": {
            "title": "Starting URL",
            "type": "string",
            "description": "The web page to start on. The agent navigates here first, then executes the task. Public pages work as-is; for a page inside an account you own, set authMode and supply that account's session."
          },
          "urls": {
            "title": "Start URLs (batch)",
            "type": "array",
            "description": "Run the same task and outputSchema on several start URLs in one run, instead of url (leave url empty). URLs run one after another, each with the full per-URL limits (maxSteps, timeoutSeconds), and each gets its own dataset row as it finishes. A URL that the run's remaining time or the charge limit (maxTotalChargeUsd) can't cover gets a free \"not started\" row. Long batches can take longer than a synchronous call waits; every URL's row is in the run's dataset when the run finishes.",
            "items": {
              "type": "string"
            }
          },
          "task": {
            "title": "Task",
            "type": "string",
            "description": "What to do on the page, in plain language. Can include interaction steps (click, fill, navigate) and extraction goals (find prices, collect links). The agent plans and executes actions to accomplish this task, then returns structured results."
          },
          "outputSchema": {
            "title": "Output Schema",
            "type": "object",
            "description": "Optional JSON Schema describing the desired shape of the result object. When provided, the agent structures its final extraction to match this schema. When omitted, the agent returns a best-effort JSON object."
          },
          "modelTier": {
            "title": "Capability tier",
            "enum": [
              "basic",
              "premium"
            ],
            "type": "string",
            "description": "How much reasoning the agent applies when planning each step. 'basic' handles ordinary navigation, form filling and extraction, and is the right default for most tasks. 'premium' plans with deeper reasoning for complex, ambiguous or heavily defended multi-step flows, and is charged at a higher per-step rate — see the Pricing tab. Leave unset for basic.",
            "default": "basic"
          },
          "maxSteps": {
            "title": "Max steps",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "A cap under 20 often stops a multi-page task before it finishes, and the steps used up to the cap are still billed. Multi-page flows (search, select, fill, submit) usually need 20–40 steps. Defaults to 100, which is also the maximum; failed steps do not count. Your budget (maxTotalChargeUsd) is the primary cost cap: the agent stops before a step would exceed it, so lower maxSteps only if you want a tighter runaway guard.",
            "default": 100
          },
          "timeoutSeconds": {
            "title": "Run timeout (seconds)",
            "maximum": 900,
            "type": "integer",
            "description": "Budget for the agent's work on the page, starting when the browser is ready. Browser bring-up (typically 10–90 s) does not count against it. Maximum 900 s. Steps typically take 5–10 s each, so a 20–40-step multi-page flow needs roughly 150–400 s; raise this for long flows. A run that reaches it records 'timeout' status and returns what it has.",
            "default": 270
          },
          "stepTimeoutSeconds": {
            "title": "Per-step stall guard (seconds)",
            "type": "integer",
            "description": "Per-action timeout. Protects your budget from a single hung browser action (frozen page, network stuck) burning maxTotalChargeUsd. A stalled step is logged as an error and the agent tries a different approach. Default 45 s.",
            "default": 45
          },
          "proxyGeo": {
            "title": "Proxy Country",
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code for geo-targeted browsing. Routes the browser through a residential proxy in this country. Leave empty for default routing."
          },
          "authMode": {
            "title": "Authenticated run",
            "enum": [
              "none",
              "storageState"
            ],
            "type": "string",
            "description": "Run inside an account you own. storageState: paste a session exported from your own logged-in browser. This Actor never accepts passwords.",
            "default": "none"
          },
          "storageState": {
            "title": "Session (storageState)",
            "type": "object",
            "description": "Playwright storageState JSON ({cookies:[…], origins:[…]}) exported from YOUR OWN logged-in browser — context.storageState() or a cookie-export extension. Encrypted at rest; never written to logs, the step transcript, or the dataset."
          },
          "authAttestation": {
            "title": "I own this account",
            "type": "boolean",
            "description": "Required when authMode is set. You confirm the account and site this run signs into are owned or controlled by you or your organization, that you are authorized to automate them, and that this run does not extract a third-party service's data through an account. Runs against accounts you do not own are prohibited.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}