{
  "openapi": "3.1.0",
  "info": {
    "title": "Bing Search API",
    "version": "1.0.0",
    "description": "Bing web results with the answer box, knowledge panel, People also ask and related searches, rank checks, search suggestions, news and videos, exposed through FetchLayer as structured JSON."
  },
  "servers": [
    {
      "url": "https://api.fetchlayer.dev/bing"
    }
  ],
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "API Key",
        "description": "Send your FetchLayer key as Authorization: Bearer ss-your-key."
      }
    }
  },
  "paths": {
    "/search": {
      "post": {
        "operationId": "search",
        "tags": [
          "Web search"
        ],
        "summary": "Search Bing web results",
        "description": "Ranked organic web results for a query, with what Bing shows around them. Each result carries its position, page, title, URL, the URL as Bing prints it, domain, site name, snippet, the date Bing shows (e.g. \"Feb 9, 2026\" or \"2 days ago\") and its sitelinks (deepLinks). From the first page read: the answer box — type fact for a direct answer such as a height or a date, or ai_overview for Bing’s generated summary, with its sources — the knowledge panel, the People also ask questions, related searches, top stories and videos, Bing’s own estimate of matching pages (totalResults, when shown) and the query Bing searched instead when it corrected the spelling (correctedQuery). All of them are empty or null when Bing does not show them, which is common. Ads come back in ads, from every page read, and never take a position; text ads are rare. Positions count organic results only, and a URL Bing repeats on a later page is counted once. limit defaults to 10, the first page, and goes up to 200; pages reads up to 20 pages at once, page jumps to a later page (positions then start at that page’s offset), and nextCursor continues, sent with the same query, market, country, language, safeSearch, timeRange and device — a cursor sent with different filters is a 400. Results reflect an en-US searcher unless you set market; rankings differ between markets and devices, and Bing’s positions move noticeably between regions and even between requests minutes apart. A query that matches nothing is a 200 with an empty results list. Answers under People also ask are not returned, and shopping, maps, weather and flight modules are not returned as fields. Billing: each result page read counts as one request (pagesScraped). To find where one site ranks, use rank-check instead: it costs one request at any depth.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string",
                    "description": "The search query, as you would type it (1–500 characters)."
                  },
                  "market": {
                    "type": "string",
                    "description": "Bing market: en-US, en-GB, en-CA, en-AU, en-IN, de-DE, fr-FR, es-ES, it-IT, nl-NL, pt-BR, ja-JP, zh-CN and 25 more (38 in all). Case-insensitive. Results and rankings differ by market.",
                    "example": "en-US"
                  },
                  "country": {
                    "type": "string",
                    "description": "Two-letter country, only when it should differ from the market’s (market en-US, country CA)."
                  },
                  "language": {
                    "type": "string",
                    "description": "Language code such as en, de or zh-hant, only when it should differ from the market’s."
                  },
                  "safeSearch": {
                    "type": "string",
                    "description": "strict, moderate or off.",
                    "example": "moderate"
                  },
                  "timeRange": {
                    "type": "string",
                    "description": "any, day, week, month or year: only pages published or updated within it.",
                    "example": "any"
                  },
                  "device": {
                    "type": "string",
                    "description": "desktop or mobile: which results page to read. Bing ranks slightly differently on each.",
                    "example": "desktop"
                  },
                  "limit": {
                    "type": "number",
                    "description": "Organic results to return (1–200), or -1 for the maximum.",
                    "example": "10"
                  },
                  "pages": {
                    "type": "number",
                    "description": "Most result pages to read in this request (1–20), or -1. Defaults to as many as limit needs. Each page read counts as one request."
                  },
                  "page": {
                    "type": "number",
                    "description": "Result page to start on (1–20, 10 results a page). Not used with cursor.",
                    "example": "1"
                  },
                  "cursor": {
                    "type": "string",
                    "description": "A previous response’s nextCursor. Send it with the same query and filters."
                  },
                  "format": {
                    "type": "string",
                    "description": "json or markdown.",
                    "example": "json"
                  },
                  "timeoutMs": {
                    "type": "number",
                    "description": "Time limit for each page read, in milliseconds (1000–120000)."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "query"
                ]
              },
              "examples": {
                "default": {
                  "value": {
                    "query": "open source crm",
                    "limit": 10
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "resultType": {
                      "type": "string",
                      "description": "search, rank-check, suggestions, news or videos."
                    },
                    "requestedUrl": {
                      "type": "string",
                      "description": "The Bing page this result corresponds to."
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Caveats about this particular result — a list that may be incomplete, a depth Bing could not reach, a later page that could not be read. Empty when there are none. Read it on every call."
                    },
                    "transport": {
                      "type": "string",
                      "description": "The source this data came from. Always \"bing\"."
                    },
                    "scrapedAt": {
                      "type": "string",
                      "description": "ISO 8601 timestamp of when the data was collected."
                    },
                    "query": {
                      "type": "string",
                      "description": "The query that was run."
                    },
                    "market": {
                      "type": "string",
                      "description": "The market the results are for."
                    },
                    "country": {
                      "type": "string",
                      "description": "The two-letter country the results are for."
                    },
                    "language": {
                      "type": "string",
                      "description": "The language the results are in."
                    },
                    "safeSearch": {
                      "type": "string",
                      "description": "The safe search level applied."
                    },
                    "timeRange": {
                      "type": "string",
                      "description": "The time range applied."
                    },
                    "device": {
                      "type": "string",
                      "description": "desktop or mobile."
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true,
                        "properties": {
                          "position": {
                            "type": "number",
                            "description": "1-based position among organic results, counted across pages. Ads never take a position."
                          },
                          "page": {
                            "type": "number",
                            "description": "The result page it appeared on."
                          },
                          "title": {
                            "type": "string",
                            "description": "The result title."
                          },
                          "url": {
                            "type": "string",
                            "description": "The destination URL."
                          },
                          "displayedUrl": {
                            "type": "string",
                            "description": "The URL as Bing prints it, e.g. \"https://www.forbes.com › advisor › business\", or null."
                          },
                          "domain": {
                            "type": "string",
                            "description": "Hostname of url."
                          },
                          "siteName": {
                            "type": "string",
                            "description": "The site name shown above the result, e.g. \"Forbes\", or null."
                          },
                          "snippet": {
                            "type": "string",
                            "description": "The text under the result, or null."
                          },
                          "date": {
                            "type": "string",
                            "description": "The date Bing shows beside the result, as given (e.g. \"Feb 9, 2026\" or \"2 days ago\"), or null. No time zone is stated, so none is added."
                          },
                          "deepLinks": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "additionalProperties": true
                            },
                            "description": "Sitelinks under the result, each { title, url, snippet }."
                          }
                        }
                      },
                      "description": "Organic results, in ranked order."
                    },
                    "resultCount": {
                      "type": "number",
                      "description": "Results in this response."
                    },
                    "ads": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      },
                      "description": "Ads shown with the results, never ranked: page, placement (top, middle, bottom or side), title, url (the advertiser’s landing page, when stated), displayedUrl, domain, snippet."
                    },
                    "answerBox": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "The answer above the results — type (fact or ai_overview), title, answer, sources ({ title, url }) — or null."
                    },
                    "knowledgePanel": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "The panel about the person, place or thing the query names — title, subtitle, description, url (official site), facts ({ label, value }) — or null."
                    },
                    "relatedQuestions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      },
                      "description": "People also ask, each { question }. The answers are not returned."
                    },
                    "relatedSearches": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      },
                      "description": "Related searches, each { query, url }."
                    },
                    "topStories": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      },
                      "description": "News shown with the results: title, url, source, age (e.g. \"3h\"), snippet."
                    },
                    "videos": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      },
                      "description": "Videos shown with the results: title, url, publisher (e.g. \"YouTube\"), channel, duration, age, views, thumbnailUrl."
                    },
                    "totalResults": {
                      "type": "number",
                      "description": "Bing’s own estimate of matching pages (\"About 26,400 results\"), or null when not shown."
                    },
                    "correctedQuery": {
                      "type": "string",
                      "description": "The query Bing searched instead, when it corrected the spelling, or null."
                    },
                    "endOfResults": {
                      "type": "boolean",
                      "description": "Bing has no further results for this query."
                    },
                    "pagesScraped": {
                      "type": "number",
                      "description": "Result pages read. Each counts as one request against your plan."
                    },
                    "pagesRequested": {
                      "type": "number",
                      "description": "The most pages this request would have read. Compare with pagesScraped."
                    },
                    "nextCursor": {
                      "type": "string",
                      "description": "Pass back as cursor, with the same query and filters, to continue. null at the end."
                    },
                    "hasNextPage": {
                      "type": "boolean",
                      "description": "Whether there is more to fetch."
                    }
                  },
                  "additionalProperties": false
                },
                "examples": {
                  "default": {
                    "value": {
                      "resultType": "search",
                      "requestedUrl": "https://www.bing.com/search?q=open+source+crm&setlang=en&cc=US&mkt=en-US&adlt=moderate",
                      "scrapedAt": "2026-09-15T21:19:34.543Z",
                      "transport": "bing",
                      "notes": [],
                      "query": "open source crm",
                      "market": "en-US",
                      "country": "US",
                      "language": "en",
                      "safeSearch": "moderate",
                      "timeRange": "any",
                      "device": "desktop",
                      "results": [
                        {
                          "position": 1,
                          "page": 1,
                          "title": "Best Open Source CRM Software for 2026: Top 8 Picks Reviewed",
                          "url": "https://crm.org/crmland/open-source-crm",
                          "displayedUrl": "https://crm.org › crmland › open-source-crm",
                          "domain": "crm.org",
                          "siteName": "CRM.org",
                          "snippet": "An open source app means its source code is publicly available. This is the code that makes the program run. This source code may be modified and shared by users according to their needs. The idea is that, if any and all developers can tweak the pro…",
                          "date": null,
                          "deepLinks": []
                        },
                        {
                          "position": 2,
                          "page": 1,
                          "title": "9 Best Open Source CRMs Of 2026 – Forbes Advisor",
                          "url": "https://www.forbes.com/advisor/business/software/best-open-source-crm/",
                          "displayedUrl": "https://www.forbes.com › advisor › business › software › best-open-source-crm",
                          "domain": "www.forbes.com",
                          "siteName": "Forbes",
                          "snippet": "In this roundup, you’ll learn about the best open source CRM software options. We’ll discuss features, costs and what …",
                          "date": "Feb 9, 2026",
                          "deepLinks": []
                        },
                        {
                          "position": 3,
                          "page": 1,
                          "title": "Best Open Source CRM Software 2026 - SourceForge",
                          "url": "https://sourceforge.net/directory/crm/",
                          "displayedUrl": "https://sourceforge.net › directory › crm",
                          "domain": "sourceforge.net",
                          "siteName": "SourceForge",
                          "snippet": null,
                          "date": null,
                          "deepLinks": []
                        }
                      ],
                      "resultCount": 10,
                      "ads": [],
                      "answerBox": {
                        "type": "ai_overview",
                        "title": null,
                        "answer": "Open-source CRM software provides businesses with flexible, customizable, and cost-effective tools to manage customer relationships while retaining full control over data and workflows. …",
                        "sources": [
                          {
                            "url": "https://crm.org/crmland/open-source-crm",
                            "title": "Best Open Source CRM Software for 2026: Top 8 Picks Reviewed"
                          },
                          {
                            "url": "https://twenty.com/",
                            "title": "Twenty | #1 Open Source CRM"
                          }
                        ]
                      },
                      "knowledgePanel": null,
                      "relatedQuestions": [],
                      "relatedSearches": [
                        {
                          "query": "open source crm GitHub",
                          "url": "https://www.bing.com/search?q=open+source+crm+GitHub"
                        },
                        {
                          "query": "open source free crm",
                          "url": "https://www.bing.com/search?q=open+source+free+crm"
                        }
                      ],
                      "topStories": [],
                      "videos": [
                        {
                          "title": "5 Best Open Source CRM For Small Businesses and Startups in 2026",
                          "url": "https://www.youtube.com/watch?v=fi4w2W7i6Fo",
                          "publisher": "YouTube",
                          "channel": "CRM Central",
                          "duration": "6:33",
                          "age": "5 months ago",
                          "views": "10K views",
                          "thumbnailUrl": "https://th.bing.com/th/id/OM.qu1BtrIwAQOZuw_1782759008?pid=1.7"
                        }
                      ],
                      "totalResults": null,
                      "correctedQuery": null,
                      "endOfResults": false,
                      "pagesScraped": 1,
                      "pagesRequested": 2,
                      "nextCursor": "eyJ2IjoxLCJmIjoiTU9BMktZVk5kQ2g5IiwibyI6MTEs…",
                      "hasNextPage": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Invalid or missing Bearer token"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/rank-check": {
      "post": {
        "operationId": "rank-check",
        "tags": [
          "Web search"
        ],
        "summary": "Check where a site ranks on Bing",
        "description": "Find where a domain or URL ranks in Bing’s organic results for a query — built for SEO rank tracking. Send a query and a target and get back whether it was found, its best (lowest) position, and every match with its position, URL, title and result page, scanning up to depth positions (1–200, default 100). A domain target (example.com, or https://www.example.com/) matches that site and, by default, its subdomains; matching is on whole hostname labels, so notexample.com and example.com.evil.net never match, and www. is ignored on both sides. A URL with a path (example.com/blog) matches pages on that host under that path: /blog, /blog/ and /blog/post, but not /blogging. Positions are counted exactly as search counts them — organic results only, ads never take a position, a repeated URL once. The scan stops after the first result page containing a match, so several matches on that page are all reported; set allMatches to scan the full depth. found: false always means the whole depth was examined, or every result Bing lists when that is fewer (a note says so); if Bing cannot be read part-way through, the response is a retryable 503, never a \"not found\". Rankings differ by market and device and move between days — and noticeably between regions and between two checks minutes apart — so track a query over time. A depth-200 check typically takes around 30 seconds. Billing: A rank check costs 1 credit regardless of depth: scanning 200 positions across 10 or more result pages is billed as one request. serpPagesFetched reports how many result pages were read and is never billed.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string",
                    "description": "The search query, as a searcher would type it (1–500 characters)."
                  },
                  "target": {
                    "type": "string",
                    "description": "What to look for: a domain such as example.com (matches the site and its subdomains), or a URL with a path such as example.com/blog (matches pages under that path)."
                  },
                  "depth": {
                    "type": "number",
                    "description": "Organic positions to scan, e.g. 10, 20, 50 or 100 (1–200), or -1 for the maximum. One request at any depth.",
                    "example": "100"
                  },
                  "allMatches": {
                    "type": "boolean",
                    "description": "Scan the full depth and report every matching position, instead of stopping after the first result page with a match.",
                    "example": "false"
                  },
                  "includeSubdomains": {
                    "type": "boolean",
                    "description": "For a domain target, whether subdomains such as blog.example.com count as the site.",
                    "example": "true"
                  },
                  "market": {
                    "type": "string",
                    "description": "Bing market: en-US, en-GB, en-CA, en-AU, en-IN, de-DE, fr-FR, es-ES, it-IT, nl-NL, pt-BR, ja-JP, zh-CN and 25 more (38 in all). Case-insensitive. Results and rankings differ by market.",
                    "example": "en-US"
                  },
                  "country": {
                    "type": "string",
                    "description": "Two-letter country, only when it should differ from the market’s (market en-US, country CA)."
                  },
                  "language": {
                    "type": "string",
                    "description": "Language code such as en, de or zh-hant, only when it should differ from the market’s."
                  },
                  "safeSearch": {
                    "type": "string",
                    "description": "strict, moderate or off.",
                    "example": "moderate"
                  },
                  "timeRange": {
                    "type": "string",
                    "description": "any, day, week, month or year: only pages published or updated within it.",
                    "example": "any"
                  },
                  "device": {
                    "type": "string",
                    "description": "desktop or mobile: which results page to read. Bing ranks slightly differently on each.",
                    "example": "desktop"
                  },
                  "format": {
                    "type": "string",
                    "description": "json or markdown.",
                    "example": "json"
                  },
                  "timeoutMs": {
                    "type": "number",
                    "description": "Time limit for each page read, in milliseconds (1000–120000)."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "query",
                  "target"
                ]
              },
              "examples": {
                "default": {
                  "value": {
                    "query": "reddit api",
                    "target": "fetchlayer.dev",
                    "depth": 200
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "resultType": {
                      "type": "string",
                      "description": "search, rank-check, suggestions, news or videos."
                    },
                    "requestedUrl": {
                      "type": "string",
                      "description": "The Bing page this result corresponds to."
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Caveats about this particular result — a list that may be incomplete, a depth Bing could not reach, a later page that could not be read. Empty when there are none. Read it on every call."
                    },
                    "transport": {
                      "type": "string",
                      "description": "The source this data came from. Always \"bing\"."
                    },
                    "scrapedAt": {
                      "type": "string",
                      "description": "ISO 8601 timestamp of when the data was collected."
                    },
                    "query": {
                      "type": "string",
                      "description": "The query that was run."
                    },
                    "market": {
                      "type": "string",
                      "description": "The market the results are for."
                    },
                    "country": {
                      "type": "string",
                      "description": "The two-letter country the results are for."
                    },
                    "language": {
                      "type": "string",
                      "description": "The language the results are in."
                    },
                    "safeSearch": {
                      "type": "string",
                      "description": "The safe search level applied."
                    },
                    "target": {
                      "type": "object",
                      "additionalProperties": true,
                      "description": "The target as understood: input, type (domain or url_prefix), value (the hostname, or host and path, that was matched) and includeSubdomains."
                    },
                    "found": {
                      "type": "boolean",
                      "description": "Whether the target appeared within the scanned depth."
                    },
                    "position": {
                      "type": "number",
                      "description": "Its best (lowest) organic position, or null."
                    },
                    "matches": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true
                      },
                      "description": "Every match found: position, url, title and page."
                    },
                    "depth": {
                      "type": "number",
                      "description": "The depth you asked for."
                    },
                    "depthScanned": {
                      "type": "number",
                      "description": "Organic positions actually examined."
                    },
                    "serpPagesFetched": {
                      "type": "number",
                      "description": "Result pages read. Informational only — never billed."
                    },
                    "endOfResults": {
                      "type": "boolean",
                      "description": "Bing ran out of results before the requested depth."
                    },
                    "pagesScraped": {
                      "type": "number",
                      "description": "Always 1: a rank check counts as one request against your plan, however deep it scans."
                    }
                  },
                  "additionalProperties": false
                },
                "examples": {
                  "default": {
                    "value": {
                      "resultType": "rank-check",
                      "requestedUrl": "https://www.bing.com/search?q=reddit+api&setlang=en&cc=US&mkt=en-US&adlt=moderate",
                      "scrapedAt": "2026-09-15T21:19:53.823Z",
                      "transport": "bing",
                      "notes": [
                        "Stopped after the first page containing the target; set allMatches to scan the full depth."
                      ],
                      "query": "reddit api",
                      "market": "en-US",
                      "country": "US",
                      "language": "en",
                      "safeSearch": "moderate",
                      "timeRange": "any",
                      "device": "desktop",
                      "target": {
                        "input": "fetchlayer.dev",
                        "type": "domain",
                        "value": "fetchlayer.dev",
                        "includeSubdomains": true
                      },
                      "found": true,
                      "position": 124,
                      "matches": [
                        {
                          "position": 124,
                          "url": "https://fetchlayer.dev/blog/reddit-api-closed-2026",
                          "title": "Reddit API Shut Down in 2026: What Still Works | FetchLayer",
                          "page": 10
                        }
                      ],
                      "depth": 200,
                      "depthScanned": 125,
                      "serpPagesFetched": 10,
                      "endOfResults": false,
                      "pagesScraped": 1
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Invalid or missing Bearer token"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/suggestions": {
      "post": {
        "operationId": "suggestions",
        "tags": [
          "Suggestions"
        ],
        "summary": "Get Bing search suggestions",
        "description": "The completions Bing’s search box suggests for a partial query, in Bing’s order — useful for keyword research and query expansion. Takes a market and nothing else; country, language, safe search or time range is a 400. Billing: one request.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string",
                    "description": "The partial query to complete (1–500 characters)."
                  },
                  "market": {
                    "type": "string",
                    "description": "Bing market: en-US, en-GB, en-CA, en-AU, en-IN, de-DE, fr-FR, es-ES, it-IT, nl-NL, pt-BR, ja-JP, zh-CN and 25 more (38 in all). Case-insensitive. Results and rankings differ by market.",
                    "example": "en-US"
                  },
                  "format": {
                    "type": "string",
                    "description": "json or markdown.",
                    "example": "json"
                  },
                  "timeoutMs": {
                    "type": "number",
                    "description": "Time limit for each page read, in milliseconds (1000–120000)."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "query"
                ]
              },
              "examples": {
                "default": {
                  "value": {
                    "query": "fetchla"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "resultType": {
                      "type": "string",
                      "description": "search, rank-check, suggestions, news or videos."
                    },
                    "requestedUrl": {
                      "type": "string",
                      "description": "The Bing page this result corresponds to."
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Caveats about this particular result — a list that may be incomplete, a depth Bing could not reach, a later page that could not be read. Empty when there are none. Read it on every call."
                    },
                    "transport": {
                      "type": "string",
                      "description": "The source this data came from. Always \"bing\"."
                    },
                    "scrapedAt": {
                      "type": "string",
                      "description": "ISO 8601 timestamp of when the data was collected."
                    },
                    "query": {
                      "type": "string",
                      "description": "The partial query."
                    },
                    "market": {
                      "type": "string",
                      "description": "The market the suggestions are for."
                    },
                    "suggestions": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "The completions, in Bing’s order."
                    },
                    "pagesScraped": {
                      "type": "number",
                      "description": "Always 1."
                    }
                  },
                  "additionalProperties": false
                },
                "examples": {
                  "default": {
                    "value": {
                      "resultType": "suggestions",
                      "requestedUrl": "https://www.bing.com/search?q=fetchla&mkt=en-US",
                      "scrapedAt": "2026-09-15T21:19:33.494Z",
                      "transport": "bing",
                      "notes": [],
                      "query": "fetchla",
                      "market": "en-US",
                      "suggestions": [
                        "fetch lands",
                        "fetchland",
                        "fetch lands mtg",
                        "fetchlab",
                        "fetchlands scryfall",
                        "fetch land magic",
                        "fetchland set",
                        "fetchlater"
                      ],
                      "pagesScraped": 1
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Invalid or missing Bearer token"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/news": {
      "post": {
        "operationId": "news",
        "tags": [
          "News & videos"
        ],
        "summary": "Search Bing News",
        "description": "News articles for a query, in the order Bing News lists them: title, URL, publisher, snippet, age as Bing shows it (e.g. \"15h\") and image. Filter by market, country and language overrides, safe search, and a time range of hour, day, week or month. limit defaults to 30 and goes up to 100; hasMore says whether Bing had more. Billing: each list read counts as one request (10 articles a list).",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string",
                    "description": "The search query (1–500 characters)."
                  },
                  "market": {
                    "type": "string",
                    "description": "Bing market: en-US, en-GB, en-CA, en-AU, en-IN, de-DE, fr-FR, es-ES, it-IT, nl-NL, pt-BR, ja-JP, zh-CN and 25 more (38 in all). Case-insensitive. Results and rankings differ by market.",
                    "example": "en-US"
                  },
                  "country": {
                    "type": "string",
                    "description": "Two-letter country, only when it should differ from the market’s (market en-US, country CA)."
                  },
                  "language": {
                    "type": "string",
                    "description": "Language code such as en, de or zh-hant, only when it should differ from the market’s."
                  },
                  "safeSearch": {
                    "type": "string",
                    "description": "strict, moderate or off.",
                    "example": "moderate"
                  },
                  "timeRange": {
                    "type": "string",
                    "description": "any, hour, day, week or month: only articles published within it.",
                    "example": "any"
                  },
                  "limit": {
                    "type": "number",
                    "description": "Articles to return (1–100), or -1 for the maximum.",
                    "example": "30"
                  },
                  "format": {
                    "type": "string",
                    "description": "json or markdown.",
                    "example": "json"
                  },
                  "timeoutMs": {
                    "type": "number",
                    "description": "Time limit for each page read, in milliseconds (1000–120000)."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "query"
                ]
              },
              "examples": {
                "default": {
                  "value": {
                    "query": "openai",
                    "limit": 10
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "resultType": {
                      "type": "string",
                      "description": "search, rank-check, suggestions, news or videos."
                    },
                    "requestedUrl": {
                      "type": "string",
                      "description": "The Bing page this result corresponds to."
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Caveats about this particular result — a list that may be incomplete, a depth Bing could not reach, a later page that could not be read. Empty when there are none. Read it on every call."
                    },
                    "transport": {
                      "type": "string",
                      "description": "The source this data came from. Always \"bing\"."
                    },
                    "scrapedAt": {
                      "type": "string",
                      "description": "ISO 8601 timestamp of when the data was collected."
                    },
                    "query": {
                      "type": "string",
                      "description": "The query that was run."
                    },
                    "market": {
                      "type": "string",
                      "description": "The market the results are for."
                    },
                    "country": {
                      "type": "string",
                      "description": "The two-letter country the results are for."
                    },
                    "language": {
                      "type": "string",
                      "description": "The language the results are in."
                    },
                    "safeSearch": {
                      "type": "string",
                      "description": "The safe search level applied."
                    },
                    "timeRange": {
                      "type": "string",
                      "description": "The time range applied."
                    },
                    "articles": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true,
                        "properties": {
                          "position": {
                            "type": "number",
                            "description": "1-based position in the list."
                          },
                          "title": {
                            "type": "string",
                            "description": "The headline."
                          },
                          "url": {
                            "type": "string",
                            "description": "The article URL."
                          },
                          "source": {
                            "type": "string",
                            "description": "The publisher as Bing names it, or null."
                          },
                          "snippet": {
                            "type": "string",
                            "description": "The excerpt Bing shows, or null."
                          },
                          "age": {
                            "type": "string",
                            "description": "How long ago it was published, as shown (e.g. \"15h\"), or null."
                          },
                          "imageUrl": {
                            "type": "string",
                            "description": "The article image, or null."
                          }
                        }
                      },
                      "description": "The articles, in Bing’s order."
                    },
                    "articleCount": {
                      "type": "number",
                      "description": "Articles in this response."
                    },
                    "pagesScraped": {
                      "type": "number",
                      "description": "Lists read. Each counts as one request against your plan."
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether Bing had more articles than were returned."
                    }
                  },
                  "additionalProperties": false
                },
                "examples": {
                  "default": {
                    "value": {
                      "resultType": "news",
                      "requestedUrl": "https://www.bing.com/news/search?q=openai&mkt=en-US&setlang=en&cc=US&adlt=moderate",
                      "scrapedAt": "2026-09-15T21:19:33.425Z",
                      "transport": "bing",
                      "notes": [],
                      "query": "openai",
                      "market": "en-US",
                      "country": "US",
                      "language": "en",
                      "safeSearch": "moderate",
                      "timeRange": "any",
                      "articles": [
                        {
                          "position": 1,
                          "title": "OpenAI backs measure that would require independent audits of AI models",
                          "url": "https://www.msn.com/en-us/news/other/openai-backs-measure-that-would-require-independent-audits-of-ai-models/ar-AA2chjVF?ocid=BingNewsVerp",
                          "source": "CBS News on MSN",
                          "snippet": "Top OpenAI executive endorses plan that would require AI companies to submit their technology to third-party reviews to ...",
                          "age": "39m",
                          "imageUrl": "https://www.bing.com/th?id=ONUT.kj0_npu1nPRM_vl89QQ1vQ&pid=News&w=234&h=132&c=14&rs=2&qlt=90"
                        },
                        {
                          "position": 2,
                          "title": "OpenAI backs bipartisan House plan for third-party safety assessments",
                          "url": "https://www.politico.com/news/2026/09/15/openai-backs-bipartisan-house-plan-for-third-party-safety-assessments-01076588",
                          "source": "Politico",
                          "snippet": "The leading AI lab endorses a bipartisan proposal that would require top AI companies to work with independent safety ...",
                          "age": "7h",
                          "imageUrl": "https://www.bing.com/th?id=ONUT.3O38yP46gyTVZtb9Rem78w&pid=News&w=234&h=132&c=14&rs=2&qlt=90"
                        }
                      ],
                      "articleCount": 10,
                      "pagesScraped": 1,
                      "hasMore": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Invalid or missing Bearer token"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/videos": {
      "post": {
        "operationId": "videos",
        "tags": [
          "News & videos"
        ],
        "summary": "Search Bing Videos",
        "description": "Videos for a query from Bing Videos, in order: title, URL, hosting site (e.g. YouTube), channel, duration, age and views as Bing shows them, and thumbnail. Filter by market, country and language overrides and safe search; there is no time filter on this route. limit defaults to 35 and goes up to 105; hasMore says whether Bing had more. Billing: each list read counts as one request (about 35 videos a list).",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "query": {
                    "type": "string",
                    "description": "The search query (1–500 characters)."
                  },
                  "market": {
                    "type": "string",
                    "description": "Bing market: en-US, en-GB, en-CA, en-AU, en-IN, de-DE, fr-FR, es-ES, it-IT, nl-NL, pt-BR, ja-JP, zh-CN and 25 more (38 in all). Case-insensitive. Results and rankings differ by market.",
                    "example": "en-US"
                  },
                  "country": {
                    "type": "string",
                    "description": "Two-letter country, only when it should differ from the market’s (market en-US, country CA)."
                  },
                  "language": {
                    "type": "string",
                    "description": "Language code such as en, de or zh-hant, only when it should differ from the market’s."
                  },
                  "safeSearch": {
                    "type": "string",
                    "description": "strict, moderate or off.",
                    "example": "moderate"
                  },
                  "limit": {
                    "type": "number",
                    "description": "Videos to return (1–105), or -1 for the maximum.",
                    "example": "35"
                  },
                  "format": {
                    "type": "string",
                    "description": "json or markdown.",
                    "example": "json"
                  },
                  "timeoutMs": {
                    "type": "number",
                    "description": "Time limit for each page read, in milliseconds (1000–120000)."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "query"
                ]
              },
              "examples": {
                "default": {
                  "value": {
                    "query": "bun javascript runtime",
                    "limit": 10
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "resultType": {
                      "type": "string",
                      "description": "search, rank-check, suggestions, news or videos."
                    },
                    "requestedUrl": {
                      "type": "string",
                      "description": "The Bing page this result corresponds to."
                    },
                    "notes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "description": "Caveats about this particular result — a list that may be incomplete, a depth Bing could not reach, a later page that could not be read. Empty when there are none. Read it on every call."
                    },
                    "transport": {
                      "type": "string",
                      "description": "The source this data came from. Always \"bing\"."
                    },
                    "scrapedAt": {
                      "type": "string",
                      "description": "ISO 8601 timestamp of when the data was collected."
                    },
                    "query": {
                      "type": "string",
                      "description": "The query that was run."
                    },
                    "market": {
                      "type": "string",
                      "description": "The market the results are for."
                    },
                    "country": {
                      "type": "string",
                      "description": "The two-letter country the results are for."
                    },
                    "language": {
                      "type": "string",
                      "description": "The language the results are in."
                    },
                    "safeSearch": {
                      "type": "string",
                      "description": "The safe search level applied."
                    },
                    "videos": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true,
                        "properties": {
                          "position": {
                            "type": "number",
                            "description": "1-based position in the list."
                          },
                          "title": {
                            "type": "string",
                            "description": "The video title."
                          },
                          "url": {
                            "type": "string",
                            "description": "The video page URL."
                          },
                          "publisher": {
                            "type": "string",
                            "description": "The hosting site, e.g. \"YouTube\", or null."
                          },
                          "channel": {
                            "type": "string",
                            "description": "The channel or account that published it, or null."
                          },
                          "duration": {
                            "type": "string",
                            "description": "As shown, e.g. \"9:04\", or null."
                          },
                          "age": {
                            "type": "string",
                            "description": "As shown, e.g. \"3 months ago\" or \"Oct 12, 2023\", or null."
                          },
                          "views": {
                            "type": "string",
                            "description": "As shown, e.g. \"30.6K views\", or null."
                          },
                          "thumbnailUrl": {
                            "type": "string",
                            "description": "Thumbnail image URL, or null."
                          }
                        }
                      },
                      "description": "The videos, in Bing’s order."
                    },
                    "videoCount": {
                      "type": "number",
                      "description": "Videos in this response."
                    },
                    "pagesScraped": {
                      "type": "number",
                      "description": "Lists read. Each counts as one request against your plan."
                    },
                    "hasMore": {
                      "type": "boolean",
                      "description": "Whether Bing had more videos than were returned."
                    }
                  },
                  "additionalProperties": false
                },
                "examples": {
                  "default": {
                    "value": {
                      "resultType": "videos",
                      "requestedUrl": "https://www.bing.com/videos/search?q=bun+javascript+runtime&mkt=en-US&setlang=en&cc=US&adlt=moderate",
                      "scrapedAt": "2026-09-15T21:19:34.491Z",
                      "transport": "bing",
                      "notes": [],
                      "query": "bun javascript runtime",
                      "market": "en-US",
                      "country": "US",
                      "language": "en",
                      "safeSearch": "moderate",
                      "videos": [
                        {
                          "position": 1,
                          "title": "Bun Tutorial – JavaScript Runtime (Node.js Alternative) [Full Course]",
                          "url": "https://www.youtube.com/watch?v=eTB0UCDnMQo",
                          "publisher": "YouTube",
                          "channel": "freeCodeCamp.org",
                          "duration": "1:07:54",
                          "age": "Oct 12, 2023",
                          "views": "92.6K views",
                          "thumbnailUrl": "https://th.bing.com/th/id/OMB2.xqE4wfJqJBtF3w_1786540526?pid=2.1"
                        },
                        {
                          "position": 2,
                          "title": "Bun Crash Course | JavaScript Runtime, Bundler & Transpiler",
                          "url": "https://www.youtube.com/watch?v=U4JVw8K19uY",
                          "publisher": "YouTube",
                          "channel": "Traversy Media",
                          "duration": "40:19",
                          "age": "Sep 18, 2023",
                          "views": "83K views",
                          "thumbnailUrl": "https://th.bing.com/th/id/OMB1.ac55ejKFgPPuYw_1763657184?pid=2.1"
                        }
                      ],
                      "videoCount": 10,
                      "pagesScraped": 1,
                      "hasMore": true
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Invalid or missing Bearer token"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    },
    "/resolve-url": {
      "post": {
        "operationId": "resolve-url",
        "tags": [
          "Utility"
        ],
        "summary": "Parse a Bing URL",
        "description": "Turn a Bing URL into the request fields it encodes, without contacting Bing. A web, news, video, image, shopping or map search page (bing.com/search?q=reddit+api&mkt=en-GB&first=11) comes back as its kind, query, market, country, language, safe search, time range and offset — the 1-based position of the first result it asks for; a result link through Bing (kind result-link) as its destination in targetUrl. Fields the URL does not carry are null. Any other URL is a 400 saying why. Parsing a URL does not consume a credit.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "A Bing URL: a web, news, video, image, shopping or map search page, or a result link."
                  },
                  "format": {
                    "type": "string",
                    "description": "json or markdown.",
                    "example": "json"
                  },
                  "timeoutMs": {
                    "type": "number",
                    "description": "Time limit for each page read, in milliseconds (1000–120000)."
                  }
                },
                "additionalProperties": false,
                "required": [
                  "url"
                ]
              },
              "examples": {
                "default": {
                  "value": {
                    "url": "https://www.bing.com/search?q=reddit+api&mkt=en-GB&first=11"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "resultType": {
                      "type": "string",
                      "description": "Always \"resolve-url\"."
                    },
                    "url": {
                      "type": "string",
                      "description": "The URL you sent."
                    },
                    "kind": {
                      "type": "string",
                      "description": "search, news, videos, images, shopping, maps or result-link."
                    },
                    "query": {
                      "type": "string",
                      "description": "The query the URL carries, or null. Pass it to search, news or videos."
                    },
                    "market": {
                      "type": "string",
                      "description": "The market the URL carries, or null."
                    },
                    "country": {
                      "type": "string",
                      "description": "The country the URL carries, or null."
                    },
                    "language": {
                      "type": "string",
                      "description": "The language the URL carries, or null."
                    },
                    "safeSearch": {
                      "type": "string",
                      "description": "The safe search level the URL carries, or null."
                    },
                    "timeRange": {
                      "type": "string",
                      "description": "The time range the URL carries, or null."
                    },
                    "offset": {
                      "type": "number",
                      "description": "The 1-based position of the first result the URL asks for, or null."
                    },
                    "targetUrl": {
                      "type": "string",
                      "description": "Where a result link leads, or null."
                    }
                  },
                  "additionalProperties": false
                },
                "examples": {
                  "default": {
                    "value": {
                      "resultType": "resolve-url",
                      "url": "https://www.bing.com/search?q=reddit+api&mkt=en-GB&first=11",
                      "query": "reddit api",
                      "market": "en-GB",
                      "country": null,
                      "language": null,
                      "safeSearch": null,
                      "timeRange": null,
                      "offset": 11,
                      "targetUrl": null,
                      "kind": "search"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Invalid or missing Bearer token"
          }
        },
        "security": [
          {
            "BearerAuth": []
          }
        ]
      }
    }
  }
}