npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

firstock

v1.1.0

Published

Node js package for using firstock developer apis

Downloads

85

Readme

The Firstock Developer API Nodejs client -

To communicate with the Firstock Developer API using Nodejs, you can use the official Nodejs client library provided by Firstock. Licensed under the MIT License.

Version - 1.0.9

Documentation

  • Nodejs client documentation

Installing the client

Use the package manager npm to install thefirstock.

npm install firstock

API usage

const Firstock = require("firstock");

const firstock = new Firstock();

// Login
firstock.login({
  userId: "",
  password: "",
  TOTP: "",
  DOBnPAN: "",
  vendorCode: "",
  apiKey: ""
}, (err, result) => {
  console.log("login Error, ", err);
  console.log("login Result: ", result);
});

// Place an Order
firstock.placeOrder({
  userId: "",
  exchange: "",
  tradingSymbol: "",
  quantity: "",
  price: "",
  product: "",
  transactionType: "",
  priceType: "",
  retention: "",
  triggerPrice: "",
  remarks: "",
}, (err, result) => {
  console.log("placeOrder Error, ", err);
  console.log("placeOrder Result: ", result);
});

// Modify an Order
firstock.modifyOrder({
  userId: "",
  orderNumber: "",
  price: "",
  quantity: "",
  triggerPrice: "",
  tradingSymbol: "",
  exchange: "",
  priceType: "",
  product: "",
  retention: ""
}, (err, result) => {
  console.log("modifyOrder Error, ", err);
  console.log("modifyOrder Result: ", result);
});

// Cancel an Order
firstock.cancelOrder({
  userId: "",
  orderNumber: ""
}, (err, result) => {
  console.log("cancelOrder Error, ", err);
  console.log("cancelOrder Result: ", result);
});

// Single Order History
firstock.singleOrderHistory({
  userId: "",
  orderNumber: ""
}, (err, result) => {
  console.log("singleOrderHistory Error, ", err);
  console.log("singleOrderHistory Result: ", result);
});

// Order Book
firstock.orderBook({ userId: "" }, (err, result) => {
  console.log("orderBook Error, ", err);
  console.log("orderBook Result: ", result);
});

// Trade Book
firstock.tradeBook({ userId: "" }, (err, result) => {
  console.log("tradeBook Error, ", err);
  console.log("tradeBook Result: ", result);
});

// Position Book
firstock.positionBook({ userId: "" }, (err, result) => {
  console.log("positionBook Error, ", err);
  console.log("positionBook Result: ", result);
});

// Holdings
firstock.holdings({ userId: "" }, (err, result) => {
  console.log("holdings Error, ", err);
  console.log("holdings Result: ", result);
});

// Limits
firstock.limit({ userId: "" }, (err, result) => {
  console.log("limit Error, ", err);
  console.log("limit Result: ", result);
});

// Order Margin
firstock.orderMargin({
  userId: "",
  exchange: "",
  tradingSymbol: "",
  quantity: "",
  price: "",
  product: "",
  transactionType: "",
  priceType: ""
}, (err, result) => {
  console.log("orderMargin Error, ", err);
  console.log("orderMargin Result: ", result);
});

// Basket Margin
firstock.basketMargin({
  userId: "",
  exchange: "",
  transactionType: "",
  product: "",
  tradingSymbol: "",
  quantity: "",
  priceType: "",
  price: "",
  BasketList_Params: [ /* array of order objects */ ]
}, (err, result) => {
  console.log("basketMargin Error, ", err);
  console.log("basketMargin Result: ", result);
});

// Product Conversion
firstock.productConversion({
  userId: "",
  exchange: "",
  tradingSymbol: "",
  quantity: "",
  product: "",
  previousProduct: ""
}, (err, result) => {
  console.log("productConversion Error, ", err);
  console.log("productConversion Result: ", result);
});

// Brokerage Calculator
firstock.brokerageCalculator({
  userId: "",
  exchange: "",
  tradingSymbol: "",
  transactionType: "",
  Product: "",
  quantity: "",
  price: "",
  strike_price: "",
  inst_name: "",
  lot_size: ""
}, (err, result) => {
  console.log("brokerageCalculator Error, ", err);
  console.log("brokerageCalculator Result: ", result);
});

// Get Quote
firstock.getQuote({
  userId: "",
  exchange: "",
  tradingSymbol: ""
}, (err, result) => {
  console.log("getQuote Error, ", err);
  console.log("getQuote Result: ", result);
});

// Get LTP
firstock.getQuoteltp({
  userId: "",
  exchange: "",
  tradingSymbol: ""
}, (err, result) => {
  console.log("getQuoteltp Error, ", err);
  console.log("getQuoteltp Result: ", result);
});

// Get Multi Quotes
firstock.getMultiQuotes({
  userId: "",
  data: [
    { exchange: "", tradingSymbol: "" },
    // more symbols
  ]
}, (err, result) => {
  console.log("getMultiQuotes Error, ", err);
  console.log("getMultiQuotes Result: ", result);
});

// Get Multi Quotes LTP
firstock.getMultiQuotesltp({
  userId: "",
  data: [
    { exchange: "", tradingSymbol: "" },
    // more symbols
  ]
}, (err, result) => {
  console.log("getMultiQuotesltp Error, ", err);
  console.log("getMultiQuotesltp Result: ", result);
});

// Get Index List
firstock.indexList({ userId: "", exchange: "" }, (err, result) => {
  console.log("indexList Error, ", err);
  console.log("indexList Result: ", result);
});

// Get Expiry
firstock.getExpiry({
  userId: "",
  exchange: "",
  tradingSymbol: ""
}, (err, result) => {
  console.log("getExpiry Error, ", err);
  console.log("getExpiry Result: ", result);
});

// Option Chain
firstock.optionChain({
  userId: "",
  exchange: "",
  symbol: "",
  expiry: "",
  count: "",
  strikePrice: ""
}, (err, result) => {
  console.log("optionChain Error, ", err);
  console.log("optionChain Result: ", result);
});

// Search Scrips
firstock.searchScrips({ userId: "", stext: "" }, (err, result) => {
  console.log("searchScrips Error, ", err);
  console.log("searchScrips Result: ", result);
});

// Historical Data
firstock.timePriceSeries({
  userId: "",
  exchange: "",
  tradingSymbol: "",
  startTime: "",
  endTime: "",
  interval: ""
}, (err, result) => {
  console.log("timePriceSeries Error, ", err);
  console.log("timePriceSeries Result: ", result);
});
WebSockets

Order Update Feed

const { Firstock, FirstockWebSocket } = require('./websockets');

// Define callback method 
function orderBookData(data) {
    console.log(data);
}

const userId = 'YOUR_USER_ID';

const model = new FirstockWebSocket({
    order_data: orderBookData
});

async function main() {
    const [conn, err] = await Firstock.initializeWebsockets(userId, model);
    console.log("Error:", err);

    await new Promise(resolve => setTimeout(resolve, 25000));

    // Close WebSocket connection
    const closeErr = await Firstock.closeWebsocket(conn);
    console.log("Close Error:", closeErr);
}

main();

Position Update Feed

const { Firstock, FirstockWebSocket } = require('./websockets');

// Define callback method 
function positionBookData(data) {
    console.log(data);
}

const userId = 'YOUR_USER_ID';

const model = new FirstockWebSocket({
    position_data: positionBookData
});

async function main() {
    const [conn, err] = await Firstock.initializeWebsockets(userId, model);
    console.log("Error:", err);

    await new Promise(resolve => setTimeout(resolve, 25000));

    // Close WebSocket connection
    const closeErr = await Firstock.closeWebsocket(conn);
    console.log("Close Error:", closeErr);
}

main();


Subscribe Feed

const { Firstock, FirstockWebSocket } = require('./websockets');

// Define callback method 
function subscribeFeedData(data) {
    console.log(data);
}

const userId = 'YOUR_USER_ID';

const model = new FirstockWebSocket({
    subscribe_feed_data: subscribeFeedData,
    tokens: ["NSE:26000"]
});

async function main() {
    const [conn, err] = await Firstock.initializeWebsockets(userId, model);
    console.log("Error:", err);

    if (conn) {
        const subscribeErr = await Firstock.subscribe(conn, ["BSE:1"]);
        console.log("Subscribe Error:", subscribeErr);
    }

    await new Promise(resolve => setTimeout(resolve, 25000));

    // Unsubscribe
    const unsubErr = await Firstock.unsubscribe(conn, ["NSE:26000", "BSE:1"]);
    console.log("Unsubscribe Error:", unsubErr);

    await new Promise(resolve => setTimeout(resolve, 5000));

    // Close WebSocket connection
    const closeErr = await Firstock.closeWebsocket(conn);
    console.log("Close Error:", closeErr);
}

main();

Subscribe Option Greeks Feed

const { Firstock, FirstockWebSocket } = require('./websockets');

// Define callback method 
function subscribeOptionGreeksData(data) {
    console.log(data);
}

const userId = 'YOUR_USER_ID';

const model = new FirstockWebSocket({
    subscribe_option_greeks_data: subscribeOptionGreeksData,
    option_greeks_tokens: ["NFO:44297"]
});

async function main() {
    const [conn, err] = await Firstock.initializeWebsockets(userId, model);
    console.log("Error:", err);

    if (conn) {
        const subscribeErr = await Firstock.subscribeOptionGreeks(conn, ["NFO:44298"]);
        console.log("Subscribe Error:", subscribeErr);
    }

    await new Promise(resolve => setTimeout(resolve, 25000));

    // Unsubscribe
    const unsubErr = await Firstock.unsubscribeOptionGreeks(conn, ["NFO:44297", "NFO:44298"]);
    console.log("Unsubscribe Error:", unsubErr);

    await new Promise(resolve => setTimeout(resolve, 5000));

    // Close WebSocket connection
    const closeErr = await Firstock.closeWebsocket(conn);
    console.log("Close Error:", closeErr);
}

main();

Refer to the Firstock Connect Documentation for the complete list of supported methods.

Changelog

Check release notes.