{"id":18725818,"url":"https://github.com/cryptix720/bing-ai","last_synced_at":"2026-05-04T20:33:16.802Z","repository":{"id":71599390,"uuid":"129237585","full_name":"Cryptix720/Bing-AI","owner":"Cryptix720","description":"Bing AI Search API for NodeJS","archived":false,"fork":false,"pushed_at":"2018-04-12T11:00:36.000Z","size":10,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-30T00:05:42.936Z","etag":null,"topics":["ai","bing","bot","coffee","js","microsoft","node","search"],"latest_commit_sha":null,"homepage":"","language":"CoffeeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Cryptix720.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-12T11:00:02.000Z","updated_at":"2023-03-04T06:36:41.000Z","dependencies_parsed_at":"2023-05-12T10:00:34.736Z","dependency_job_id":null,"html_url":"https://github.com/Cryptix720/Bing-AI","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Cryptix720/Bing-AI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cryptix720%2FBing-AI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cryptix720%2FBing-AI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cryptix720%2FBing-AI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cryptix720%2FBing-AI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Cryptix720","download_url":"https://codeload.github.com/Cryptix720/Bing-AI/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Cryptix720%2FBing-AI/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266596689,"owners_count":23953891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","bing","bot","coffee","js","microsoft","node","search"],"created_at":"2024-11-07T14:12:05.560Z","updated_at":"2026-05-04T20:33:11.777Z","avatar_url":"https://github.com/Cryptix720.png","language":"CoffeeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Bing AI Search  API for NodeJS\r\n==========================\r\n\r\nFeatures\r\n--------\r\n\r\n* Support **all** [Bing AI Search API](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/Microsoft.Search) verticals\r\n    * Web\r\n    * Image\r\n    * Video\r\n    * News\r\n    * Related search\r\n    * Spelling suggestions\r\n    * Composite\r\n* **Accurate counts** for each vertical. Web being the most problematic.\r\n* Abstracted pagination for **large results.**\r\n* **Concurrent** requests for results sets larger than 150 results.\r\n* **Normalized** JSON results.\r\n* Automatically uses `gzip`\r\n\r\nMaking your first steps..\r\n---------------\r\n\r\n1. Sign-up for an account the [Bing Search API](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/Microsoft.Search) via the Azure Market Place.\r\n2. Use the [Azure Data Explorer for the Bing Search API](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/Microsoft.Search) to see the results you can expect returned via the API.\r\n3. Grab the account key from the Data Explorer.\r\n\r\nInstall\r\n-------\r\n\r\n```bash\r\n$ npm install bingAi.search --save\r\n```\r\n\r\nUsage with NodeJS\r\n-----\r\n\r\nBasic example:\r\n```javascript\r\nvar Search = require('bing.search');\r\nvar util = require('util');\r\n\r\nsearch = new Search('API_KEY');\r\n\r\nsearch.web('Pizzeria Italia',\r\n  {top: 5},\r\n  function(err, results) {\r\n    console.log(util.inspect(results, \r\n      {colors: true, depth: null}));\r\n  }\r\n);\r\n```\r\n\r\nOutput:\r\n```javascript\r\n[ { id: 'e66c09f5-3317-4227-aee7-bc5dec3aec43',\r\n    title: 'Pizzeria Italia',\r\n    description: 'Italian pizzeria located...',\r\n    displayUrl: 'pizzeriaItalia.se',\r\n    url: 'https://www.pizzItalia.se/' },\r\n  { id: '94b5a08a-6148-4832-9077-98245f3e1b42',\r\n    title: 'Pizzeria Italia - Columbia City',\r\n    description: 'Tutta Bella Columbia City...',\r\n    displayUrl: 'https://www.pizzItalia.se/index.php',\r\n    url: 'https://www.pizzItalia.se/index.php' },\r\n  { id: '11bf839d-ce9e-4215-9b55-d663bdd17b98',\r\n    title: 'Tutta Bella Menu - Pizzeria Italia',\r\n    description: 'Pizzeria Italia - Columbia City...',\r\n    displayUrl: 'https://www.pizzItalia.se/meny',\r\n    url: 'https://www.pizzItalia.se/meny/' },\r\n  { id: 'da706086-5566-414b-b70f-2648e762cdf6',\r\n    title: 'Pizzeria Italia - Crossroads',\r\n    description: 'Ciao! Come and visit us making the best pizza location...',\r\n    displayUrl: 'pizzItalia.se/index.php',\r\n    url: 'https://www.pizzItalia.se/index.php' },\r\n  { id: '4d4d0961-bdd1-406f-aa80-39d067318c49',\r\n    title: 'Pizzeria Italia - Westlake',\r\n    description: 'Parking. Pizzeria Italia validates guest parking...',\r\n    displayUrl: 'https://www.pizzItalia.se/pizzor245WL',\r\n    url: 'https://www.pizzItalia.se/pizzor244/' } ]\r\n```\r\n\r\n### new Search(accountKey, [parallelLimit], [useGzip])\r\n\r\nThe `accountKey` is Bing Search API account key provided by the Azure market\r\nplace. `parallelLimit` is the number of search results pages fetched in\r\nparallel for a given query. The default is `10`. `useGzip` defaults to true.\r\n\r\nAvailable methods:\r\n\r\n* `counts(query, [options], callback)` . `query` is the search query. `options` is a dictionary with permissible values below -- it can be ommitted. `callback` takes an error and a results object.  \r\n\r\n  The following options can be provided:\r\n  * `market`\r\n  * `sources` defaults to all sources.\r\n\r\n  Format of results to callback:\r\n  ```javascript\r\n  { web: 334,\r\n    image: 20400,\r\n    video: 33400,\r\n    news: 1460 }\r\n  ```\r\n\r\n* `web(query, [options], callback)` \"Web\" only search. `query` is the search query. `options` is a dictionary with permissible values below -- it can be ommitted. `callback` takes an error and a results object.  \r\n\r\n  The following options can be provided:\r\n  * `top` default is 150\r\n  * `skip` default is 0\r\n  * `market`\r\n\r\n  Format of results to callback:\r\n  ```javascript\r\n  [ { id: '...',\r\n      title: '...',\r\n      description: '...',\r\n      url: '...' },\r\n     ...\r\n  ]\r\n\r\n  ```\r\n* `images(query, [options], callback)` \"Image\" only search. `query` is the search query. `options` is a dictionary with permissible values below -- it can be ommitted. `callback` takes an error and a results object.\r\n\r\n  The following options can be provided:\r\n  * `top` default is 150\r\n  * `skip` default is 0\r\n  * `market`\r\n\r\n  Format of results to callback:\r\n  ```javascript\r\n  [ { id: '...',\r\n      title: '...',\r\n      url: 'http://...',\r\n      sourceUrl: 'http://...',\r\n      displayUrl: '...',\r\n      width: 1025,\r\n      height: 1600,\r\n      size: 136701,\r\n      type: 'image/jpeg',\r\n      thumbnail:\r\n      { url: 'http://...',\r\n        type: 'image/jpg',\r\n        width: 192,\r\n        height: 300,\r\n        size: 6946 }\r\n    },\r\n     ...\r\n  ]\r\n  ```\r\n* `videos(query, [options], callback)` \"Video\" only search. `query` is the search query. `options` is a dictionary with permissible values below -- it can be ommitted. `callback` takes an error and a results object.\r\n\r\n  The following options can be provided:\r\n  * `top` default is 150\r\n  * `skip` default is 0\r\n  * `market`\r\n\r\n  Format of results to callback:\r\n  ```javascript\r\n  [ { id: '...',\r\n      title: '...',\r\n      url: 'https://...',\r\n      displayUrl: 'http://...',\r\n      runtime: 62000,\r\n      thumbnail:\r\n      { url: 'http://...',\r\n        type: 'image/jpg',\r\n        width: 160,\r\n        height: 120,\r\n        size: 18423 } },\r\n     ...\r\n  ]\r\n  ```\r\n* `news(query, [options], callback)` \"News\" only search. `query` is the search query. `options` is a dictionary with permissible values below -- it can be ommitted. `callback` takes an error and a results object.\r\n\r\n  The following options can be provided:\r\n  * `top` default is 15\r\n  * `skip` default is 0\r\n  * `market`\r\n\r\n  Format of results to callback:\r\n  ```javascript\r\n  [ { id: '...',\r\n      title: '...',\r\n      source: '...',\r\n      url: 'http://...',\r\n      description: '...',\r\n      date: [Date Object] },\r\n     ...\r\n  ]\r\n  ```\r\n* `related(query, [options], callback)` \"RelatedSearch\" only search. `query` is the search query. `options` is a dictionary with permissible values below -- it can be ommitted. `callback` takes an error and a results object.\r\n\r\n  The following options can be provided:\r\n  * `top` default is 150\r\n  * `skip` default is 0\r\n  * `market`\r\n\r\n  Format of results to callback:\r\n  ```javascript\r\n  [ { query: '...',\r\n      url: 'http://...' },\r\n     ...\r\n  ]\r\n  ```\r\n\r\n* `spelling(query, [options], callback)` \"SpellingSuggestions\" only search. `query` is the search query. `options` is a dictionary with permissible values below -- it can be ommitted. `callback` takes an error and a results object.\r\n\r\n  The following options can be provided:\r\n  * `top` default is 150\r\n  * `skip` default is 0\r\n  * `market`\r\n\r\n  `callback`'s result is a list of alternate query spellings as strings.\r\n\r\n* `composite(query, [options], callback)` \"Composite\" searches all of the provided sources. `query` is the search query. `options` is a dictionary with permissible values below -- it can be ommitted. `callback` takes an error and a results object.\r\n\r\n  The following options can be provided:\r\n  * `top` default is 150\r\n  * `skip` default is 0\r\n  * `sources` defaults to all sources\r\n  * `market`\r\n\r\n  Format of results to callback:\r\n  ```javascript\r\n  { web: [ ... ],\r\n    images: [ ... ],\r\n    videos: [ ... ],\r\n    news: [ ... ],\r\n    spelling: [ ... ],\r\n    related: [ ... ]\r\n  }\r\n  ```\r\n\r\n###\r\n\r\n\r\n\r\n\r\n\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryptix720%2Fbing-ai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcryptix720%2Fbing-ai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcryptix720%2Fbing-ai/lists"}