{
  "openapi": "3.0.1",
  "info": {
    "title": "Bing Search Scraper — Web, News & Image Results (SERP)",
    "description": "Scrape Bing search results for any keyword and country: organic results with position, URL, snippet, date and sitelinks, plus ads, related searches, People also ask, news, images and videos.",
    "version": "0.1",
    "x-build-id": "grmrL1J8iM2TerZlR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tortuga~bing-search-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tortuga-bing-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/tortuga~bing-search-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tortuga-bing-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/tortuga~bing-search-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tortuga-bing-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 terms",
            "type": "array",
            "description": "One Bing search per term, as you would type it on Bing, e.g. \"best coffee maker\", \"site:example.com pricing\", \"\\\"your brand\\\" reviews\". Bing operators (site:, intitle:, quotes, -word) work.",
            "items": {
              "type": "string"
            }
          },
          "searchTypes": {
            "title": "What to scrape",
            "type": "array",
            "description": "Bing verticals to search for every term: Web (organic results, optional ads and the SERP summary), News, Images, Videos. Each picked vertical runs its own search per term.",
            "items": {
              "type": "string",
              "enum": [
                "web",
                "news",
                "images",
                "videos"
              ],
              "enumTitles": [
                "Web results",
                "News",
                "Images",
                "Videos"
              ]
            },
            "default": [
              "web"
            ]
          },
          "maxPagesPerQuery": {
            "title": "Max pages per search term",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many Bing result pages to read per term and vertical. Web: page 1 has 10 organic results, later pages 6-10 (Bing's own layout). News: ~10 per page. Images: ~35 per page. Videos: ~30 per page. The actor stops earlier when Bing has no more results.",
            "default": 1
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many results in total (all terms and verticals together). You pay per result saved, so this caps the cost.",
            "default": 100
          },
          "country": {
            "title": "Country (cc)",
            "enum": [
              "US",
              "GB",
              "CA",
              "AU",
              "IN",
              "DE",
              "FR",
              "ES",
              "IT",
              "NL",
              "BR",
              "MX",
              "JP",
              "PL",
              "SE",
              "CH",
              "IE",
              "NZ",
              "SG",
              "ZA"
            ],
            "type": "string",
            "description": "Which country's Bing results you get (Bing's cc parameter).",
            "default": "US"
          },
          "language": {
            "title": "Language (setlang)",
            "type": "string",
            "description": "Bing interface language code, e.g. en, de, fr, es, pt-br. It affects snippets, dates and which results Bing ranks first.",
            "default": "en"
          },
          "timePeriod": {
            "title": "Freshness",
            "enum": [
              "any",
              "day",
              "week",
              "month",
              "year"
            ],
            "type": "string",
            "description": "Only results Bing dates within this period (Bing's date filter). News supports past 24 hours / week / month; 'Past year' applies to web, images and videos.",
            "default": "any"
          },
          "safeSearch": {
            "title": "SafeSearch",
            "enum": [
              "moderate",
              "strict",
              "off"
            ],
            "type": "string",
            "description": "Bing SafeSearch level (adlt). Moderate is Bing's default.",
            "default": "moderate"
          },
          "includeSerpFeatures": {
            "title": "SERP summary row (related searches, People also ask, knowledge panel)",
            "type": "boolean",
            "description": "Web only: add one row per search term (type 'serp') with Bing's total results estimate, related searches, People also ask questions with answers, the knowledge panel (entity title, description, facts) and answer box, when Bing shows them. Charged as one result. Not output in monitoring mode.",
            "default": true
          },
          "includeAds": {
            "title": "Include ads",
            "type": "boolean",
            "description": "Web only: also output Bing's text ads (type 'ad', with placement top/bottom/middle/sidebar, title, advertiser, landing URL, description). Each ad is charged as one result.",
            "default": false
          },
          "newsSortByDate": {
            "title": "News: newest first",
            "type": "boolean",
            "description": "News only: sort articles by date instead of Bing's relevance order.",
            "default": false
          },
          "startUrls": {
            "title": "Bing URLs (optional)",
            "type": "array",
            "description": "Optional: Bing search URLs such as https://www.bing.com/search?q=coffee&cc=GB or https://www.bing.com/news/search?q=coffee. The term (q), country (cc), language (setlang) and market (mkt) are taken from the URL; /news, /images and /videos URLs run that vertical.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed items",
            "type": "boolean",
            "description": "Remember what earlier runs of this search returned and output only new items or items whose price/status changed. Use with a Schedule; unchanged items are not charged. For Bing: only result URLs that earlier runs of this watch did not return for the same term, country and language (a new page ranking for your keyword, a new article mentioning your brand). The SERP summary row is not output in this mode.",
            "default": false
          },
          "monitoringKey": {
            "title": "Monitoring key",
            "type": "string",
            "description": "Name for this watch, so several schedules on the same search stay separate; defaults to a key derived from the search input"
          },
          "residentialFallback": {
            "title": "Residential fallback",
            "type": "boolean",
            "description": "When Bing keeps answering datacenter IPs with off-topic results for a search (common for countries other than the US), retry that search through Apify residential proxy in the search's country. Used only after 2 failed datacenter tries. Residential traffic is billed by Apify per GB: about $0.0003 per basic results page, up to ~$0.0025 for a full page with ads and panels. Turn off to use datacenter proxy only.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy (the default) works well for US Bing; each search keeps one IP and cookie jar for all its pages. Searches datacenter IPs cannot get are retried on residential proxy when 'Residential fallback' is on. You can also pick residential proxy (with a country) here for every request.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}