{
  "openapi": "3.0.1",
  "info": {
    "title": "Web Search API for AI Agents - Brave, DuckDuckGo & Bing",
    "description": "Search the web without an API key: Brave, DuckDuckGo and Bing results with title, URL, snippet, domain and date, plus the clean main text of the top pages in markdown for LLMs and RAG. US$ 3 per 1,000 result pages.",
    "version": "0.1",
    "x-build-id": "Adj5zYXhSVj1zitgn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~web-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-web-search-scraper",
        "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/scrapewise~web-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-web-search-scraper",
        "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/scrapewise~web-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-web-search-scraper",
        "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",
        "properties": {
          "queries": {
            "title": "Search queries",
            "type": "array",
            "description": "Search queries, one per line, as you would type them in a search box (for example best running shoes 2026). Operators such as site:, quotes and -word work as on the engine. Each query returns one row per result with position, title, URL, description and date when the engine shows one. Leave empty to run an example query. Also accepts 'searchQueries', 'query', 'keywords' or 'q'.",
            "items": {
              "type": "string"
            }
          },
          "engines": {
            "title": "Search engines",
            "type": "array",
            "description": "One or more of Brave Search (default, up to 20 results per page and dates), DuckDuckGo and Bing. With several engines the results are merged rank by rank and duplicates removed, which gives a broader view than any single engine. Each engine results page with at least one result is charged, so more engines means more pages. Also accepts 'engine' and 'ddg'.",
            "items": {
              "type": "string",
              "enum": [
                "brave",
                "duckduckgo",
                "bing"
              ],
              "enumTitles": [
                "Brave Search (20 results per page, dates)",
                "DuckDuckGo",
                "Bing"
              ]
            },
            "default": [
              "brave"
            ]
          },
          "maxResults": {
            "title": "Max results per query",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum results per query (1 to 200, default 10). Brave returns up to 20 results per page and DuckDuckGo and Bing up to 10, so 50 results on Brave reads 3 pages. You pay per results page. Also accepts 'maxResultsPerQuery'.",
            "default": 10
          },
          "fallbackEngines": {
            "title": "Fall back to another engine if blocked",
            "type": "boolean",
            "description": "On (default): if the chosen engines return nothing (blocked or empty), the Actor tries Brave and then DuckDuckGo automatically, so a query rarely comes back empty. Only pages with results are charged. Turn off to use only the engines you chose.",
            "default": true
          },
          "countryCode": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code (default us; for example gb, de, br, fr). Sets the region on each engine, so results and their order match what people in that country see.",
            "default": "us"
          },
          "languageCode": {
            "title": "Language",
            "type": "string",
            "description": "Two-letter language code for the results (default en; for example de, pt, es). Combine it with the country, for example de and de for German results from Germany.",
            "default": "en"
          },
          "timeRange": {
            "title": "Published within",
            "enum": [
              "any",
              "day",
              "week",
              "month",
              "year"
            ],
            "type": "string",
            "description": "Only pages the engine dates within this period: Any time (default), Past day, Past week, Past month or Past year. Useful for news and monitoring queries. Results without a date may be left out by the engine.",
            "default": "any"
          },
          "scrapeContent": {
            "title": "Also read the pages (text for LLMs and RAG)",
            "type": "boolean",
            "description": "Opens the top results of each query and adds their clean main text (no menus, ads or footers), ready for LLM prompts and RAG. Charged per page that yielded text (200+ characters), on top of the results page; pages that fail are free. Off by default.",
            "default": false
          },
          "maxContentPages": {
            "title": "How many top results to read per query",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "How many of the top results to open and read for each query (0 to 200, default 5). Only used when page reading is on. Each page read is charged once, so 5 pages for 10 queries is up to 50 page reads.",
            "default": 5
          },
          "contentFormat": {
            "title": "Content format",
            "enum": [
              "markdown",
              "text"
            ],
            "type": "string",
            "description": "Markdown (default) keeps headings, lists and tables, which LLMs read well. Plain text strips all formatting. Only used when page reading is on.",
            "default": "markdown"
          },
          "maxContentChars": {
            "title": "Max characters per page",
            "minimum": 500,
            "type": "integer",
            "description": "Page texts longer than this many characters (at least 500, default 30,000) are cut here and flagged with contentTruncated; the full length is in contentLength. Lower it to keep rows small for LLM context windows. Same price.",
            "default": 30000
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy, on by default with the datacenter group. A blocked engine is retried and, with the fallback on, replaced by another engine. Keep the default unless you have your own proxy.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}