{
  "openapi": "3.0.1",
  "info": {
    "title": "Bing, DuckDuckGo, Baidu & Yahoo SERP Scraper — One Run",
    "description": "Track rankings on the search engines Google-only scrapers ignore. Bing, DuckDuckGo, Baidu and Yahoo in a single run — one flat JSON row per result: rank, title, URL, snippet, page, engine, total results. Language/region targeting, native pagination, desktop/mobile. No API keys, no login.",
    "version": "0.1",
    "x-build-id": "pLUg1F3z3Y7hR3JlH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nomad-agent~serp-multi-engine-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nomad-agent-serp-multi-engine-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/nomad-agent~serp-multi-engine-scraper/runs": {
      "post": {
        "operationId": "runs-sync-nomad-agent-serp-multi-engine-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/nomad-agent~serp-multi-engine-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-nomad-agent-serp-multi-engine-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",
        "required": [
          "queries"
        ],
        "properties": {
          "queries": {
            "title": "Search queries",
            "type": "array",
            "description": "Search queries to run, one per entry. Search operators like site: and filetype: work inline (e.g. <code>annual report filetype:pdf site:example.com</code>).",
            "items": {
              "type": "string"
            }
          },
          "engines": {
            "title": "Search engines",
            "type": "array",
            "description": "Engines to query — every result row is tagged with the engine it came from. Bing, DuckDuckGo and Baidu need no proxy. Yahoo returns nothing from datacenter IPs unless you enable Apify residential proxy below. A blocked engine is logged and skipped, never fails the run.",
            "items": {
              "type": "string",
              "enum": [
                "bing",
                "duckduckgo",
                "baidu",
                "yahoo"
              ],
              "enumTitles": [
                "Bing",
                "DuckDuckGo",
                "Baidu",
                "Yahoo (needs residential proxy)"
              ]
            },
            "default": [
              "bing",
              "duckduckgo"
            ]
          },
          "device": {
            "title": "Device",
            "enum": [
              "desktop",
              "mobile"
            ],
            "type": "string",
            "description": "Search as a desktop or mobile browser. Only Bing actually changes its response based on this (a mobile signal also helps avoid its bot-block page). The other engines accept the field but ignore it — see the <code>Device support</code> table in the README.",
            "default": "desktop"
          },
          "languageCode": {
            "title": "Language code",
            "type": "string",
            "description": "BCP-47 language code, e.g. <code>en</code>, <code>de</code>, <code>pt-BR</code>. Mapped per engine: Bing mkt/setlang/cc, DuckDuckGo kl, Yahoo vl. Baidu does not take a language param."
          },
          "region": {
            "title": "Region / country",
            "type": "string",
            "description": "Country hint. Two-letter code for Bing (cc), e.g. <code>de</code>, <code>gb</code>. Ignored by engines without a region param."
          },
          "maxPagesPerQuery": {
            "title": "Max pages per query",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "SERP pages to fetch per query per engine. Pagination uses each engine's native offset param (Bing first, DuckDuckGo s, Baidu pn, Yahoo b). Stops early when a page is empty or blocked.",
            "default": 1
          },
          "resultsPerPage": {
            "title": "Results per page",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Results requested per page where the engine supports it (Bing count, Baidu rn, Yahoo n). 0 = engine default (~10, DuckDuckGo ~25).",
            "default": 0
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Hard cap on total results pushed across all queries and engines. The cap is shared out evenly across your queries (round-robin), so every query gets results — it is never drained by the first query alone. Each result returned is billed as one dataset item — see Pricing in the README. 0 = no cap (costs then scale with queries × engines × pages; use with care).",
            "default": 100
          },
          "includeAds": {
            "title": "Include ads",
            "type": "boolean",
            "description": "Include sponsored/ad results (marked with <code>ad</code>: true). Off = organic results only.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional proxy. Bing, DuckDuckGo and Baidu work fine without one. Yahoo returns nothing from Apify's datacenter IPs — enable Apify Proxy with the RESIDENTIAL group to scrape it. A proxy also reduces rate limiting on long multi-query runs."
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many searches to run at the same time. Higher is faster but more likely to get rate-limited or blocked by a search engine. Extra pages within a single search are always fetched one at a time with a short delay between them, regardless of this setting.",
            "default": 4
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}