[](https://www.npmjs.com/package/wikijs)
[](https://travis-ci.org/dijs/wiki)
[](https://coveralls.io/r/dijs/wiki)
WikiJs is a node.js library which serves as an interface to Wikipedia (or any MediaWiki).
## What can it do?
- Search wiki articles
- Fetch article content
- Find all links/images/categories in a article page
- Get parsed information about articles
- Find articles by geographical location
- and much more!
## Documentation
## Install
```bash
npm install wikijs
```
## Usage
```javascript
import wiki from 'wikijs';
// const wiki = require('wikijs').default;
wiki()
.page('Batman')
.then(page => page.info('alterEgo'))
.then(console.log); // Bruce Wayne
```
## Build yourself
You can run these commands in order to build and test WikiJs:
```bash
git clone git@github.com:dijs/wiki.git
cd wiki
npm install
npm run build
npm test
```
## Usage with webpack
In order for webpack to build wikijs properly, you must add an option to
your webpack configuration file. [Documentation](https://webpack.js.org/configuration/externals/#externals)
```json
externals: {
"isomorphic-fetch": "fetch"
}
```
## Usage with other MediaWiki's
You can use the API options configuration:
```js
wiki({
apiUrl: 'https://awoiaf.westeros.org/api.php',
origin: null
}).search('Winterfell');
```
## Usage with other languages
You just need to change the API to the proper URL. This is normally just changing the subdomain of wikipedia.
```js
wiki({ apiUrl: 'https://es.wikipedia.org/w/api.php' })
.page('Cristiano Ronaldo')
.then(page => page.info())
.then(console.log);
```
Read more about Cross Domain Requests [here](https://www.mediawiki.org/wiki/API:Main_module)
## Usage with custom headers
If you need to pass authentication headers or anything else.
```js
wiki({
headers: {
Cookie: 'name=value; name2=value2; name3=value3'
}
}).search('Winterfell');
```
## Chain data requests together for more efficient applications
Query a specific page:
```js
wiki()
.page('albert einstein')
.then(page =>
page
.chain()
.summary()
.image()
.links()
.request()
);
```
Or query many pages at once:
```js
wiki()
.chain()
.geosearch(52.52437, 13.41053)
.summary()
.image()
.coordinates()
.request();
```
## Parsing Wiki Infobox Data
The code Wikipedia uses for infobox data is strange and complex. So I have split the parsing code into another library. You can find it [here](https://github.com/dijs/infobox-parser).
[](https://www.npmjs.com/package/infobox-parser)
We not only parse out the information, but also try to transform the data into a convenient structure for data processing.
## Contribute!
I always welcome help. Please just stick to the lint rules and write tests with each feature/fix.
## Artwork
Thanks to [Heather van der Dys](http://heathervanderdys.com/) for the awesome logo!