https://github.com/riennevaplus/wikifolio
📊 Wikifolio (unofficial) API
https://github.com/riennevaplus/wikifolio
api-client nodejs stock-market typescript wikifolio wikifolio-api wikifolio-certificates
Last synced: about 1 year ago
JSON representation
📊 Wikifolio (unofficial) API
- Host: GitHub
- URL: https://github.com/riennevaplus/wikifolio
- Owner: RienNeVaPlus
- Created: 2020-06-26T02:53:12.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-02-04T02:00:18.000Z (over 3 years ago)
- Last Synced: 2025-03-26T01:51:07.310Z (over 1 year ago)
- Topics: api-client, nodejs, stock-market, typescript, wikifolio, wikifolio-api, wikifolio-certificates
- Language: TypeScript
- Homepage:
- Size: 145 KB
- Stars: 18
- Watchers: 3
- Forks: 6
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
📊 Wikifolio API
This is an unofficial Node.js API client for Wikifolio's platform.
⚠️ Wikifolio could change their API at any moment. ⚠️
If anything is broken, please open an issue.

### ⭐ Features
- **Session management**
- **Search wikifolios**
- Fetch wikifolio **details** / **analysis** / **price**
- Fetch **portfolio positions**
- Fetch wikifolio **trades**
- Fetch **watchlist entries**
- **Watch** / **unwatch** wikifolios
- Fetch **users** & their **wikifolios**
- **Trading**: place & modify **buy** & **sell orders**

🌞 **Contributors wanted**

### 🛫 Install
```bash
# using npm
npm i wikifolio
# using yarn
yarn add wikifolio
```

### 📝 Examples
The examples assume the following setup:
```ts
import Api from 'wikifolio'
const api = new Api({
email: 'email@example.org',
password: 'plaintext-password'
})
```
☝️ Use encrypted environment variables or command line [prompts](https://github.com/terkelg/prompts), **never store your passwords in plain text**.

#### 1. Fetch details of a wikifolio
```ts
const wikifolio = api.wikifolio('wfobserver')
console.log( await wikifolio.details() )
```

#### 2. Fetch wikifolio price
```ts
const wikifolio = api.wikifolio('wfobserver')
console.log( await wikifolio.price() )
```

#### 3. Fetch wikifolio trades
```ts
const wikifolio = api.wikifolio('wfobserver')
console.log( await wikifolio.trades({pageSize: 100, page: 1}) )
```

#### 4. Fetch wikifolio index history (chart)
```ts
const wikifolio = api.wikifolio('wfobserver')
console.log( await wikifolio.history() )
```

#### 5. Fetch portfolio items of a wikifolio
```ts
const wikifolio = api.wikifolio('wfobserver')
console.log( await wikifolio.portfolio() )
```

#### 6. Search wikifolios
```ts
const wikifolios = await api.search({query: 'Supervisor'})
console.log( wikifolios )
```

#### 7. Unwatch all wikifolios on the watchlist
```ts
const watchlist = await api.watchlist()
for(const wikifolio of watchlist){
await wikifolio.watchlist(false)
}
```

#### 8. Get trader info
```ts
const user = api.user('riennevaplus')
console.log( await user.details() )
```

#### 9. Get wikifolios of a trader
```ts
const user = api.user('riennevaplus')
console.log( await user.wikifolios() )
```

#### 10. Place a limit order
There's a similar `sell()` method.
```ts
const wikifolio = api.wikifolio('wfobserver')
const order = await wikifolio.buy({
amount: 1,
limitPrice: 220,
orderType: "limit",
underlyingIsin: "DE000LS9NMQ9",
expiresAt: "2020-07-29T00:00:00.000Z"
})
```
Note: When `orderType` is set to `quote` the first returned quote will be accepted.

#### 11. Update an order
```ts
const wikifolio = api.wikifolio('wfobserver')
const order = wikifolio.order('8b4da005-6750-4b4c-9dff-0364d3e07be0')
console.log( await order.submit({limitPrice: 100}) )
```

#### 12. List & remove wikifolio orders
```ts
const wikifolio = api.wikifolio('wfobserver')
const orders = await wikifolio.orders({pageSize: 25, page: 0})
for(const order of orders){
console.log( await order.remove() )
}
```

### 👷 Todos
- Improve documentation
- Implement wikifolio sustainability

### 🌻 Contributors
* [RienNeVaPlus](https://github.com/riennevaplus)
* [jekru](https://github.com/jekru)
* You?