# bing-scraper
Scrape results from Microsoft Bing.

Partially based on [@n0rmancodes/bing-scraper](https://github.com/normanlol/bing-scraper).

## install
```npm i @tacohitbox/bing-scraper```

## sample code
```js
// Logs results or error.

var bing = require('@tacohitbox/bing-scraper');
bing.search({
  q: 'test',
  pageCount: 2
}, function(err, resp) {
  if (err) {
    console.log(err);
  } else {
    console.log(resp);
  }
});
```

### usage

#### ``bing.search(query, cb)``

##### ``query`` setting
``query`` can be either a ``string`` or ``object``.

You can set ``userAgent``, ``referer``, ``cookies`` (must be from a response), ``lang`` to request Bing with as well.

You can also set how many pages to grab with ``pageCount``,as well as forcing a language to search (set by ``lang``, by default ``"en-US"``) by setting ``enforceLanguage`` to ``true``.

###### example (with object)
```js
{
  "q": "test",
  "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:87.0) Gecko/20100101 Firefox/87.0",
  "lang": "en-US",
  "referer": "https://www.bing.com/",
  "enforceLanguage": false
  "pageCount": 1,
  "cookies": [
    {
      name: 'MUID',
      value: '1127A942078D62811E16B9C0065963C3',
      domain: '.bing.com',
      expires: 2022-08-22T08:03:58.000Z,
      path: '/',
      secure: true,
      sameSite: 'None'
    }
  ]
}
```

Cookies are generated by the ``set-cookie-parser`` package to keep track of cookies given off by Bing. 

You can skip using an object by simply typing the query as a string like ``bing.search("test")``.

##### ``cb`` setting

``cb`` **must** be a function with an error and response variable, like this:

```js
bing.search("test", function(err, res) {
  // Function here.
})
```

#### ``bing.searchImages(query, callback)``

This is nearly identical to how ``query`` and ``callback`` are set.

The exception for this is ``enforceLanguage`` in ``query`` does nothing.