Bing Search API for NodeJS
Features
- Support all Bing Search API verticals
- Web
- Image
- Video
- News
- Related search
- Spelling suggestions
- Composite
- Accurate counts for each vertical. Web being the most problematic.
- Abstracted pagination for large results.
- Concurrent requests for results sets larger than 50 results.
- Normalized JSON results.
- Automatically uses
gzip
Getting Started
- Sign-up for an account the Bing Search API via the Azure Market Place.
- Use the Azure Data Explorer for the Bing Search API to see the results you can expect returned via the API.
- Grab the account key from the Data Explorer.
Install
$ npm install bing.search --save
Usage
Basic example:
var Search = ;var util = ; search = 'account_key_123'; search;
Output:
id: 'e66c09f5-3317-4227-aee7-bc5dec3aec43' title: 'Tutta Bella Neapolitan Pizzeria' description: 'Neapolitan pizzeria located...' displayUrl: 'tuttabellapizza.com' url: 'http://tuttabellapizza.com/' id: '94b5a08a-6148-4832-9077-98245f3e1b42' title: 'Tutta Bella Neapolitan Pizzeria - Columbia City' description: 'Tutta Bella Columbia City...' displayUrl: 'www.tuttabella.com/tuttabellacc/index.php' url: 'http://www.tuttabella.com/tuttabellacc/index.php' id: '11bf839d-ce9e-4215-9b55-d663bdd17b98' title: 'Tutta Bella Menu - Tutta Bella Neapolitan Pizzeria' description: 'Tutta Bella Neapolitan Pizzeria - Columbia City...' displayUrl: 'www.tuttabella.com/menu' url: 'http://www.tuttabella.com/menu/' id: 'da706086-5566-414b-b70f-2648e762cdf6' title: 'Tutta Bella Neapolitan Pizzeria - Crossroads' description: 'Ciao! Come visit us in our newest Tutta Bella location...' displayUrl: 'tuttabella.com/tuttabellacr/index.php' url: 'http://tuttabella.com/tuttabellacr/index.php' id: '4d4d0961-bdd1-406f-aa80-39d067318c49' title: 'Tutta Bella Neapolitan Pizzeria - Westlake' description: 'Parking. Tutta Bella validates guest parking...' displayUrl: 'www.tuttabella.com/TuttaBellaWL' url: 'http://www.tuttabella.com/TuttaBellaWL/'
new Search(accountKey, [parallelLimit], [useGzip])
The accountKey
is Bing Search API account key provided by the Azure market
place. parallelLimit
is the number of search results pages fetched in
parallel for a given query. The default is 10
. useGzip
defaults to true.
Available methods:
-
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.The following options can be provided:
market
sources
defaults to all sources.
Format of results to callback:
web: 334image: 20400video: 33400news: 1460 -
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.The following options can be provided:
top
default is 50skip
default is 0market
Format of results to callback:
id: '...'title: '...'description: '...'url: '...'... -
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.The following options can be provided:
top
default is 50skip
default is 0market
Format of results to callback:
id: '...'title: '...'url: 'http://...'sourceUrl: 'http://...'displayUrl: '...'width: 1025height: 1600size: 136701type: 'image/jpeg'thumbnail:url: 'http://...'type: 'image/jpg'width: 192height: 300size: 6946... -
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.The following options can be provided:
top
default is 50skip
default is 0market
Format of results to callback:
id: '...'title: '...'url: 'https://...'displayUrl: 'http://...'runtime: 62000thumbnail:url: 'http://...'type: 'image/jpg'width: 160height: 120size: 18423... -
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.The following options can be provided:
top
default is 15skip
default is 0market
Format of results to callback:
id: '...'title: '...'source: '...'url: 'http://...'description: '...'date: Date Object... -
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.The following options can be provided:
top
default is 50skip
default is 0market
Format of results to callback:
query: '...'url: 'http://...'... -
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.The following options can be provided:
top
default is 50skip
default is 0market
callback
's result is a list of alternate query spellings as strings. -
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.The following options can be provided:
top
default is 50skip
default is 0sources
defaults to all sourcesmarket
Format of results to callback:
web: ...images: ...videos: ...news: ...spelling: ...related: ...Each of the sources with in the composite result follows is the same format returned by each of the individual source searches.
Debugging
TODOs
- Better API error messages
- Support WebSearchOptions
- Support Adult params
- Support Latitude and Longitude
- Support WebFileType
- Support ImageFilters
- Support VideoFilters and VideoSortBy
- Support NewsCategory, NewsLocation, NewsSortBy
- Adjust https max sockets based on concurrent level
- Support smaller pagination for news
Changes
- 1.0
- Initial support for all Bing Search API sources