Fetch data from the National Stock Exchange, India.

Overview

NSE (National Stock Exchange) is the leading stock exchange of India, located in the city of Mumbai. While users can manually download data from NSE through a browser, importing this data into R becomes cumbersome. The nse2r R package implements the retrieval of data from NSE and aims to reduce the pre-processing steps needed in analyzing such data.

nse2r is inspired by and a port of the Python package nsetools. The authors and contributors for this R package are not affiliated with NSE and NSE does not offer support for this R package.

With nse2r, you can fetch the following data related to:

  • stocks
    • quote for a given stock
    • stock description
    • validate stock symbol/ticker
    • most actively traded stocks in a month
    • 52 week high/low
    • top gainers/losers for the last trading session
  • index
    • list of NSE indices
    • validate index symbol/ticker
    • quote for a given index
  • futures & options
    • top gainers/losers for the last trading session
  • pre open market data
    • nifty
    • nifty bank
  • indices advances & declines

Installation

You can install the development version of nse2r from GitHub with:

Usage

nse2r uses consistent prefix nse_ for easy tab completion.

  • nse_index_ for index
  • nse_stock_ for stocks
  • nse_fo_ for futures and options
  • nse_preopen_ for preopen data

Preprocessing

nse2r does basic data preprocessing which are listed below:

  • modify column data types from character to numeric and Date
  • modify column names
    • make them more descriptive
    • to snake_case from camelCase

Users can retain the names and format as returned by NSE using the clean_names argument and setting it to FALSE.

Stock

Top gainers for the last trading session.
nse_stock_top_gainers()
#> # A tibble: 10 x 12
#>    symbol series last_corp_annou~ last_corp_annou~ open_price high_price
#>    <chr>  <chr>  <date>           <chr>                 <dbl>      <dbl>
#>  1 ADANI~ EQ     2019-07-26       Annual General ~       368        379.
#>  2 POWER~ EQ     2019-08-19       Annual General ~       191.       194 
#>  3 NTPC   EQ     2019-08-13       Dividend - Rs 2~       119.       121.
#>  4 VEDL   EQ     2019-07-04       Annual General ~       153.       155.
#>  5 M&M    EQ     2019-07-18       Annual General ~       533.       538.
#>  6 WIPRO  EQ     2019-06-20       Buyback                246.       249.
#>  7 ASIAN~ EQ     2019-10-30       Interim Dividen~      1790.      1803.
#>  8 LT     EQ     2019-07-24       Annual General ~      1308.      1319.
#>  9 INFRA~ EQ     2019-12-19       Interim Dividen~       254        258.
#> 10 HDFC   EQ     2019-07-19       Annual General ~      2418       2434.
#> # ... with 6 more variables: low_price <dbl>, last_traded_price <dbl>,
#> #   prev_close_price <dbl>, percent_change <dbl>, traded_quantity <dbl>,
#> #   turnover_in_lakhs <dbl>

# retain original column names as returned by NSE
nse_stock_top_gainers(clean_names = FALSE)
#> # A tibble: 10 x 12
#>    symbol series lastCorpAnnounc~ lastCorpAnnounc~ openPrice highPrice
#>    <chr>  <chr>  <date>           <chr>                <dbl>     <dbl>
#>  1 ADANI~ EQ     2019-07-26       Annual General ~      368       379.
#>  2 POWER~ EQ     2019-08-19       Annual General ~      191.      194 
#>  3 NTPC   EQ     2019-08-13       Dividend - Rs 2~      119.      121.
#>  4 VEDL   EQ     2019-07-04       Annual General ~      153.      155.
#>  5 M&M    EQ     2019-07-18       Annual General ~      533.      538.
#>  6 WIPRO  EQ     2019-06-20       Buyback               246.      249.
#>  7 ASIAN~ EQ     2019-10-30       Interim Dividen~     1790.     1803.
#>  8 LT     EQ     2019-07-24       Annual General ~     1308.     1319.
#>  9 INFRA~ EQ     2019-12-19       Interim Dividen~      254       258.
#> 10 HDFC   EQ     2019-07-19       Annual General ~     2418      2434.
#> # ... with 6 more variables: lowPrice <dbl>, ltp <dbl>,
#> #   previousPrice <dbl>, netPrice <dbl>, tradedQuantity <dbl>,
#> #   turnoverInLakhs <dbl>
Stocks that have touched their 52 week highs during the day
nse_stock_year_high()
#> # A tibble: 35 x 10
#>    symbol symbol_desc date       new_high   year last_traded_pri~ prev_high
#>    <chr>  <chr>       <date>        <dbl>  <dbl>            <dbl>     <dbl>
#>  1 ADANI~ Adani Gree~ 2019-12-31    175.   175.             174.      166. 
#>  2 AKASH  Akash Infr~ 2019-12-23     71.5   71.5             63.5      70.2
#>  3 ALEMB~ Alembic Li~ 2019-12-31     63.6   63.6             61.7      60.9
#>  4 ALKYL~ Alkyl Amin~ 2019-11-27   1135.  1135.            1114.     1107. 
#>  5 APEX   Apex Froze~ 2018-12-31    407    407              399.      383. 
#>  6 APLAP~ APL Apollo~ 2019-12-31   1939   1939             1931.     1893. 
#>  7 ASTER~ Aster DM H~ 2019-01-17    171.   171.             164.      168  
#>  8 AVANT~ Avanti Fee~ 2019-12-24    612.   612.             607.      599  
#>  9 BALRA~ Balrampur ~ 2019-12-30    188.   188.             187.      187  
#> 10 BANSW~ Banswara S~ 2019-12-31    112.   112.             112.      106. 
#> # ... with 25 more rows, and 3 more variables: prev_close <dbl>,
#> #   change <dbl>, percent_change <dbl>

# retain original column names as returned by NSE
nse_stock_year_high(clean_names = FALSE)
#> # A tibble: 35 x 10
#>    symbol symbolDesc dt          value   year    ltp value_old   prev
#>    <chr>  <chr>      <date>      <dbl>  <dbl>  <dbl>     <dbl>  <dbl>
#>  1 ADANI~ Adani Gre~ 2019-12-31  175.   175.   174.      166.   166. 
#>  2 AKASH  Akash Inf~ 2019-12-23   71.5   71.5   63.5      70.2   65  
#>  3 ALEMB~ Alembic L~ 2019-12-31   63.6   63.6   61.7      60.9   59.6
#>  4 ALKYL~ Alkyl Ami~ 2019-11-27 1135.  1135.  1114.     1107.  1085  
#>  5 APEX   Apex Froz~ 2018-12-31  407    407    399.      383.   345. 
#>  6 APLAP~ APL Apoll~ 2019-12-31 1939   1939   1931.     1893.  1878. 
#>  7 ASTER~ Aster DM ~ 2019-01-17  171.   171.   164.      168    161. 
#>  8 AVANT~ Avanti Fe~ 2019-12-24  612.   612.   607.      599    584  
#>  9 BALRA~ Balrampur~ 2019-12-30  188.   188.   187.      187    183. 
#> 10 BANSW~ Banswara ~ 2019-12-31  112.   112.   112.      106.   106. 
#> # ... with 25 more rows, and 2 more variables: change <dbl>, pChange <dbl>
Most actively traded stocks in a month
nse_stock_most_traded()
#> # A tibble: 12 x 6
#>    security share_turnover traded_quantity no_of_trades avg_daily_turno~
#>    <chr>             <dbl>           <dbl>        <dbl>            <dbl>
#>  1 Yes Ban~           4.38           57140     11058530            1423.
#>  2 Relianc~           3.93            1715      3803882            1276.
#>  3 Indiabu~           3.91            9077      8060572            1271.
#>  4 State B~           3.43            7114      4624946            1114.
#>  5 Tata Co~           2.69             866      2891204             875.
#>  6 ICICI B~           2.51            3204      2969145             814.
#>  7 HDFC Li~           2.33             670      2510572             756.
#>  8 Tata St~           2.26            3541      3008166             733.
#>  9 HDFC Ba~           2.18            1170      2969084             707.
#> 10 Tata Mo~           2.07            8128      3536571             671.
#> 11 TOTAL o~          29.7            92625     45432672            9640.
#> 12 TOTAL            100             391115    223723721           32475.
#> # ... with 1 more variable: turnover <dbl>

# retain original column names as returned by NSE
nse_stock_most_traded(clean_names = FALSE)
#> # A tibble: 12 x 6
#>    security              sharetotal trdQty nooftrades avgdailyturn turnover
#>    <chr>                      <dbl>  <dbl>      <dbl>        <dbl>    <dbl>
#>  1 Yes Bank Limited            4.38  57140   11058530        1423.   29880.
#>  2 Reliance Industries ~       3.93   1715    3803882        1276.   26799.
#>  3 Indiabulls Hsg Fin L~       3.91   9077    8060572        1271.   26683.
#>  4 State Bank of India         3.43   7114    4624946        1114.   23391.
#>  5 Tata Consultancy Ser~       2.69    866    2891204         875.   18367.
#>  6 ICICI Bank Limited          2.51   3204    2969145         814.   17098.
#>  7 HDFC Limited                2.33    670    2510572         756.   15868.
#>  8 Tata Steel Limited          2.26   3541    3008166         733.   15396.
#>  9 HDFC Bank Limited           2.18   1170    2969084         707.   14848.
#> 10 Tata Motors Limited         2.07   8128    3536571         671.   14100.
#> 11 TOTAL of Top Ten sec~      29.7   92625   45432672        9640.  202431.
#> 12 TOTAL                     100    391115  223723721       32475.  681983.

Futures & Options

Top futures and options gainers for the last trading session.
nse_fo_top_gainers()
#> # A tibble: 10 x 12
#>    symbol series last_corp_annou~ last_corp_annou~ open_price high_price
#>    <chr>  <chr>  <date>           <chr>                 <dbl>      <dbl>
#>  1 ADANI~ EQ     2019-07-26       Annual General ~      368        379. 
#>  2 M&MFIN EQ     2019-07-15       Annual General ~      324.       331. 
#>  3 ADANI~ EQ     2019-07-30       Annual General ~       61.8       63.8
#>  4 POWER~ EQ     2019-08-19       Annual General ~      191.       194  
#>  5 NTPC   EQ     2019-08-13       Dividend - Rs 2~      119.       121. 
#>  6 MINDT~ EQ     2019-10-24       Interim Dividen~      801        814  
#>  7 TATAP~ EQ     2019-06-04       Annual General ~       56.8       57.6
#>  8 PIDIL~ EQ     2019-07-29       Annual General ~     1388.      1412  
#>  9 IDFCF~ EQ     2018-07-23       Dividend Re 0.7~       45.4       45.8
#> 10 MFSL   EQ     2019-09-16       Annual General ~      537        546. 
#> # ... with 6 more variables: low_price <dbl>, last_traded_price <dbl>,
#> #   prev_close_price <dbl>, percent_change <dbl>, traded_quantity <dbl>,
#> #   turnover_in_lakhs <dbl>

# retain original column names as returned by NSE
nse_fo_top_gainers(clean_names = FALSE)
#> # A tibble: 10 x 12
#>    symbol series lastCorpAnnounc~ lastCorpAnnounc~ openPrice highPrice
#>    <chr>  <chr>  <date>           <chr>                <dbl>     <dbl>
#>  1 ADANI~ EQ     2019-07-26       Annual General ~     368       379. 
#>  2 M&MFIN EQ     2019-07-15       Annual General ~     324.      331. 
#>  3 ADANI~ EQ     2019-07-30       Annual General ~      61.8      63.8
#>  4 POWER~ EQ     2019-08-19       Annual General ~     191.      194  
#>  5 NTPC   EQ     2019-08-13       Dividend - Rs 2~     119.      121. 
#>  6 MINDT~ EQ     2019-10-24       Interim Dividen~     801       814  
#>  7 TATAP~ EQ     2019-06-04       Annual General ~      56.8      57.6
#>  8 PIDIL~ EQ     2019-07-29       Annual General ~    1388.     1412  
#>  9 IDFCF~ EQ     2018-07-23       Dividend Re 0.7~      45.4      45.8
#> 10 MFSL   EQ     2019-09-16       Annual General ~     537       546. 
#> # ... with 6 more variables: lowPrice <dbl>, ltp <dbl>,
#> #   previousPrice <dbl>, netPrice <dbl>, tradedQuantity <dbl>,
#> #   turnoverInLakhs <dbl>

Pre Open Market Data

Fetch data of pre open session of Nifty Bank.
nse_preopen_nifty_bank()
#> # A tibble: 12 x 17
#>    symbol series corp_action_date corp_action  price change percent_change
#>    <chr>  <chr>  <date>           <chr>        <dbl>  <dbl>          <dbl>
#>  1 IDFCF~ EQ     NA               <NA>          45.4   0.2            0.44
#>  2 BANKB~ EQ     NA               <NA>         102.    0.35           0.34
#>  3 FEDER~ EQ     NA               <NA>          88.2   0.3            0.34
#>  4 RBLBA~ EQ     NA               <NA>         346     1.15           0.33
#>  5 HDFCB~ EQ     NA               <NA>        1276.    4              0.31
#>  6 KOTAK~ EQ     NA               <NA>        1689     4.65           0.28
#>  7 SBIN   EQ     NA               <NA>         335.    0.95           0.28
#>  8 PNB    EQ     NA               <NA>          64.5   0.15           0.23
#>  9 ICICI~ EQ     NA               <NA>         540.    1              0.19
#> 10 INDUS~ EQ     NA               <NA>        1512     2              0.13
#> 11 AXISB~ EQ     NA               <NA>         755.    0.8            0.11
#> 12 YESBA~ EQ     NA               <NA>          47.0   0              0   
#> # ... with 10 more variables: prev_close <dbl>, quantity <dbl>,
#> #   value <dbl>, mkt_cap <dbl>, year_high <dbl>, year_low <dbl>,
#> #   sum_val <dbl>, sum_quantity <dbl>, fin_quantity <dbl>,
#> #   sum_fin_quantity <dbl>

# retain original column names as returned by NSE
nse_preopen_nifty(clean_names = FALSE)
#> # A tibble: 50 x 17
#>    symbol series xDt        caAct   iep   chn perChn  pCls trdQnty  iVal
#>    <chr>  <chr>  <date>     <chr> <dbl> <dbl>  <dbl> <dbl>   <dbl> <dbl>
#>  1 BAJAJ~ EQ     NA         <NA>  3183  -2     -0.06 3185      840 26.7 
#>  2 ONGC   EQ     NA         <NA>   129. -0.05  -0.04  129.    5623  7.24
#>  3 LT     EQ     NA         <NA>  1308. 10.2    0.79 1298.    5444 71.2 
#>  4 ZEEL   EQ     NA         <NA>   294   1.8    0.62  292.   17926 52.7 
#>  5 CIPLA  EQ     NA         <NA>   481   2.8    0.59  478.    2629 12.6 
#>  6 INFRA~ EQ     2019-12-19 INTE~  254   1.5    0.59  252.    8799 22.4 
#>  7 BRITA~ EQ     NA         <NA>  3045. 16.9    0.56 3028.     126  3.84
#>  8 TITAN  EQ     NA         <NA>  1194.  6.5    0.55 1188.    1196 14.3 
#>  9 ADANI~ EQ     NA         <NA>   368   2      0.55  366    13113 48.3 
#> 10 INFY   EQ     2019-10-23 INTE~  735   3.85   0.53  731.    5174 38.0 
#> # ... with 40 more rows, and 7 more variables: mktCap <dbl>, yHigh <dbl>,
#> #   yLow <dbl>, sumVal <dbl>, sumQnty <dbl>, finQnty <dbl>,
#> #   sumfinQnty <dbl>