This module aims to utilize and expose Trading212's RESTFul API and WebSocket APIs to allow users to easily interact with the API to create for instance a custom UI, automated trading, Discord bot, or what ever
- About
- Example UI App
- Disclaimer
- Installing
- Usage/Features
- Missing features
- Discord
- Donate
- Trading212 referral
For an example app which uses this API, check out my other project Trading212 UI
This code is work in progress. I am in no way affiliated with trading212 and trading212 does not endorse this project.
Use this code at your own risk. I afford no guarantee that the code is stable or error free.
You must first have NodeJS and NPM installed
npm install trading212
alternatively
download the project source from this repo and then create a trading212 folder within your node_modules folder
//Setup
//Get these values from your browser cookie at live.trading212.com (F12 -> Application -> Storage -> Cookies)
const CUSTOMER_SESSION = "ab01-cde3-f45g-6789-hijkl1337";
const TRADING212_SESSION_LIVE = "ab01-cde3-f45g-6789-hijkl1337";
//Create handle and client
const trading212Handler = require('trading212');
const trading212 = new trading212Handler('live', CUSTOMER_SESSION, TRADING212_SESSION_LIVE);
Get all data (name, description, ticker, company history, etc) for equities available
let result = trading212.getAvailableEquities();
Get Bid Ask Prices
let result = trading212.getCurrentPrice(["GME_US_EQ", "AMC_US_EQ"]);
//REST api
//Get current price
trading212.getCurrentPrice(["GME_US_EQ"]);
//Listen for response
trading212.on('price', (data) => {
//data.ticker // GME_US_EQ
//data.bid // Bid price
//data.ask // Ask price
});
Place BUY order
//Place limit buy of 5 $GME @ $50
let ticker = "GME_US_EQ";
let orderType = "LIMIT";
let stopPrice = null;
let limitPrice = "50";
let quantity = 5;
let timeValidity = "DAY";
trading212.placeOrder(ticker, orderType, stopPrice, limitPrice, quantity, timeValidity);
//If order fails
trading212.on('order-failture', (data) => {
//Axios error
});
//If order succeeds
trading212.on('account', (data) => {
//data.orders
//data.positions
//console.log(data);
});
Place SELL order
//Place limit sell of 5 $GME @ $50
let ticker = "GME_US_EQ";
let orderType = "LIMIT";
let stopPrice = null;
let limitPrice = "50";
let quantity = -5;
let timeValidity = "DAY";
trading212.placeOrder(ticker, orderType, stopPrice, limitPrice, quantity, timeValidity);
//If order fails
trading212.on('order-failture', (data) {
//Axios error
});
//If order succeeds
trading212.on('account', (data) => {
//data.orders
//data.positions
//console.log(data);
});
Delete an order using the REST API
let order = account.orders[0];//Find order
let orderId = order.orderId;
trading212.deleteOrder(orderId);
//success
trading212.on('account', (data) => {
//account data, containing positions, orders
console.log(data);
})
trading212.on('order-failure', (err) {
//error object
//console.log(err);
})
Get rising (falling to come) stocks
let range = 'hourly';
//let range = 'daily';
let delta = 1;//1 hour, see https://www.trading212.com/en/hotlist
trading212.getHotlist(range, delta);
trading212.on('hotlist', (period, delta, data) => {
//do stuff
});
//WebSocket
trading212.on('platform-subscribed', () => {//Trading212 WebSocket established
//Logic for when connection is established
});
Listen for account events. This data contains your available cash, invested cash, open positions, orders, etc
trading212.on('account', (data) => {
console.log(data);
})
//Todo: document data structure
Subscribe to one (or more) symbols
let subscribeSymbols = [
"GME_US_EQ",
"AMC_US_EQ",
]
trading212.bulkSubscribe(subscribeSymbols);//Subscribe to price feeds for this ticker
Listen for price events
//Listen for price events from trading212 websocket (must subscribe to ticker by using #bulkSubscribe
trading212.on('price', (data) => {
console.log(data.ticker);//Symbol/Ticker for equity
console.log(data.ask);//Asking price
console.log(data.bid);//Bidding price
});
Subscribe to websocket routes
trading212.subscribeRoute('WEBPLATFORM');//This route is subscribed automatically when the websocket is opened. Gives data such as orders complete and watchlists
trading212.subscribeRoute('ACCOUNT');//This route is subscribed automatically when the websocket is opened. Gives data for the account such as available cash, invested, positions, orders. Listen with trading212.on('account', (data) => {})
//Document more routes
Missing features
- Market orders
- Charting
- Caching
- Better internal functions (get equity/price data from cache)
- Much more
Join the discord to make suggestions, offer help or report bugs
https://discord.gg/sgr43Yv3ue
Donate Bitcoin to help this project bc1q03vpdg8e7xq7uh9myh7dx6atfx2me94v69rah6
If don't have a Trading212 account already, you can use my referral link and we'll both get a share