web-search (Used in MCP tests)
Under maintenancePricing
Pay per usage
web-search (Used in MCP tests)
Under maintenancePricing
Pay per usage
You can access the web-search (Used in MCP tests) programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "0.0", "x-build-id": "5gHaJj8KPj0dYhWD1" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/apify~web-search/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-apify-web-search", "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/apify~web-search/runs": { "post": { "operationId": "runs-sync-apify-web-search", "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/apify~web-search/run-sync": { "post": { "operationId": "run-sync-apify-web-search", "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": [ "query" ], "properties": { "query": { "title": "Search query", "type": "string", "description": "Operators like site: pass through unchecked. Use allowedDomains and blockedDomains to enforce domain filters, and dateFrom and dateTo for dates." }, "provider": { "title": "Provider", "enum": [ "google", "duckduckgo" ], "type": "string", "description": "Google is the default search engine, supports location, and returns the most data. DuckDuckGo has no location, covers fewer countries, and fills fewer fields. Use it for a second, independent ranking, or when Google finds nothing. Each search is charged separately.", "default": "google" }, "maxResults": { "title": "Maximum results", "minimum": 1, "type": "integer", "description": "Maximum number of organic results to return. Leave it empty to get every result on the page. You get fewer when the page has fewer, or when domain filters remove some." }, "languageCode": { "title": "Language code", "type": "string", "description": "ISO 639-1 code with an optional region suffix, like \"en\", \"de\", or \"pt-BR\". See https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes. Google uses it to localize the interface and bias ranking, without translating or strictly filtering results. DuckDuckGo picks the matching regional variant, or the country's default.", "default": "en" }, "countryCode": { "title": "Country code", "type": "string", "description": "ISO 3166-1 alpha-2 code, like \"US\", \"DE\", or \"CZ\". The search runs as if you were in that country, changing result order and which local businesses appear. Google queries that country's domain (google.de for \"DE\"). DuckDuckGo picks the matching region, preferring the languageCode variant (\"CA\" with \"fr\") over the default. Results aren't limited to sites hosted or registered there. Web Search returns INVALID_COUNTRY if the provider has no market there.", "default": "US" }, "location": { "title": "Location", "type": "string", "description": "A place name, most specific first, like \"Paris, Ile-de-France, France\". Google treats it as your location for local and \"near me\" results. It doesn't filter pages. It's best-effort and not validated: Google may ignore places it can't resolve. Using it with DuckDuckGo returns INVALID_PARAMETER." }, "dateFrom": { "title": "Date from", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string", "description": "The earliest publication date to include. Best-effort. See the README." }, "dateTo": { "title": "Date to", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string", "description": "The latest publication date to include. Best-effort. See the README." }, "allowedDomains": { "title": "Allowed domains", "maxItems": 10, "type": "array", "description": "Return only results from these domains. You can list up to 10 domains. A domain matches itself and its subdomains, so \"wikipedia.org\" covers \"en.wikipedia.org\". A top-level domain like \"gov\" matches every domain under it. Examples: \"wikipedia.org\", \"docs.python.org\", \"gov\".", "items": { "type": "string" } }, "blockedDomains": { "title": "Blocked domains", "maxItems": 10, "type": "array", "description": "Exclude results from these domains. You can list up to 10 domains. Matching works like allowedDomains, including subdomains and top-level domains. Examples: \"pinterest.com\", \"reddit.com\", \"ru\".", "items": { "type": "string" } } } }, "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 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for web-search (Used in MCP tests) from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: