Skip to main content

a library to retrieve data from tsetmc.com website

Project description

A Python library to fetch data from http://tsetmc.com.

Note: The API is provisional and may change without deprecation.

Installation

Requires Python 3.9+.

pip install tsetmc

Overview

The Instrument class provides methods for getting information about an instrument. The following code block tries to demonstrate its capabilities.

Please review the abbreviations described at https://cdn.tsetmc.com/Site.aspx?ParTree=151713 . Many of the parameters/keys/column-names/etc are chosen from those abbreviations. If you can’t figure out the meaning of any of them, please open an issue.

>>> from tsetmc import Instrument
>>> inst = Instrument.from_l18('فملی')
>>> # getting the static data available in the main page of the symbol
>>> inst.get_page_data(general=True, trade_history=True, related_companies=True)
{'bvol': 9803922,
 'cisin': 'IRO1MSMI0000',
 'cs': 27,
 'eps': 1339,
 'sps': 2452.07,
 'flow': 1,
 'free_float': 33,
 'group_code': 'N1',
 'isin': 'IRO1MSMI0001',
 'l18': 'فملی',
 'l30': 'ملی\u200c صنایع\u200c مس\u200c ایران\u200c',
 'flow_name': 'بازار اول (تابلوی اصلی) بورس',
 'month_average_volume': 80515596,
 'sector_name': 'فلزات اساسی',
 'sector_pe': 8.9,
 'tmax': 12650.0,
 'tmin': 11450.0,
 'week_max': 12380.0,
 'week_min': 11770.0,
 'year_max': 39810.0,
 'year_min': 0.0,
 'z': 200000000000,
 'trade_history':                  pc       py     pmin     pmax    tno       tvol          tval
 date
 2021-07-04  12050.0  12040.0  11770.0  12190.0  10504   60085175  7.239613e+11
 2021-07-03  12040.0  12240.0  11800.0  12380.0  14905   88571671  1.066283e+12
 2021-06-30  12240.0  12240.0  12180.0  12370.0  11639   61924440  7.580286e+11
 2021-06-29  12240.0  12140.0  12110.0  12410.0  13153   80738158  9.886263e+11
 2021-06-28  12140.0  12220.0  11990.0  12290.0  12556   69479692  8.434176e+11
 2021-06-27  12220.0  12420.0  12040.0  12440.0  18830   93937722  1.148373e+12
 2021-06-26  12420.0  12310.0  12120.0  12600.0  25260  155751582  1.934123e+12
 2021-06-23  12310.0  11830.0  12020.0  12420.0  23635  204263514  2.514120e+12
 2021-06-22  11830.0  11540.0  11530.0  12110.0  24234  170353210  2.014437e+12,
 'related_companies': [[46348559193224090, 'فولاد', 'فولاد مبارکه اصفهان'],
  [35425587644337450, 'فملی', 'ملی\u200c صنایع\u200c مس\u200c ایران\u200c'],
  [9211775239375291, 'ذوب', 'سهامی ذوب آهن  اصفهان'],
  [55373808401388162, 'فتوسا', 'تولید و توسعه سرب روی ایرانیان'],
  [66701874099226162, 'فاسمین', 'کالسیمین\u200c'],
  [43716452378323683, 'فزرین', 'زرین معدن آسیا'],
  [41302553376174581, 'فجر', 'فولاد امیرکبیرکاشان'],
  [28864540805361867, 'فخوز', 'فولاد  خوزستان'],
  [29974853866926823, 'فروی', 'ذوب روی اصفهان'],
  [54277068923045214, 'فسرب', 'ملی\u200c سرب\u200cوروی\u200c ایران\u200c'],
  [43545527030854340, 'کویر', 'تولیدی فولاد سپید فراب کویر'],
  [60350996279289099, 'کاوه', 'فولاد کاوه جنوب کیش'],
  [66514709341259550, 'فوکا', 'فولاد کاویان'],
  [408934423224097, 'فرآور', 'فرآوری\u200cموادمعدنی\u200cایران\u200c'],
  [8977441217024425, 'فسپا', 'گروه\u200cصنعتی\u200cسپاهان\u200c'],
  [18004480270695404, 'فمراد', 'آلومراد'],
  [66772024744156373, 'فباهنر', 'مس\u200c شهیدباهنر'],
  [27814844870305607, 'کیمیا', 'معدنی کیمیای زنجان گستران'],
  [70498485598181604, 'هرمز', 'فولاد هرمزگان جنوب'],
  [48623320733330408, 'فلوله', 'لوله\u200cوماشین\u200cسازی\u200cایران\u200c'],
  [24018878640527909, 'میدکو', 'هلدینگ صنایع  معدنی خاورمیانه'],
  [12874072841236826, 'فسازان', 'غلتک سازان سپاهان'],
  [47232550823972469, 'وتوکا', 'سرمایه\u200cگذاری\u200cتوکافولاد(هلدینگ'],
  [14800142337291217, 'فولای', 'صنایع فولاد آلیاژی یزد'],
  [59266699437480384, 'ارفع', 'شرکت آهن و فولاد ارفع'],
  [4733285133017464, 'فخاس', 'فولاد خراسان'],
  [67170215467608124, 'زنگان', 'صنعت روی زنگان'],
  [65004959184388996, 'فایرا', 'آلومینیوم\u200cایران\u200c'],
  [57875847776839336, 'فنوال', 'نورد آلومینیوم\u200c'],
  [54419429862704331, 'فروس', 'فروسیلیس\u200c ایران\u200c'],
  [40808043719554948, 'فولاژ', 'فولاد آلیاژی ایران'],
  [44296315953738727, 'فاهواز', 'نورد و لوله اهواز'],
  [68488673556087148, 'فپنتا', 'سپنتا'],
  [8725363201030474, 'فگستر', 'گسترش صنایع روی ایرانیان'],
  [19367527798307032, 'فالوم', 'آلومتک\u200c'],
  [41713045190742691, 'وسدید', 'گروه \u200cصنعتی\u200cسدید'],
  [56324206651661881, 'فنورد', 'نوردوقطعات\u200c فولادی\u200c'],
  [35445515321658835, 'فماک', 'ماداکتو استیل کرد'],
  [59342912854668427, 'فنفت', 'صنایع تجهیزات نفت'],
  [20966291817819448, 'فسدید', 'لوله\u200cوتجهیزات\u200c سدید - ورشکسته'],
  [66021783818850713, 'فافزا', 'فولاد افزا سپاهان'],
  [26881786652328215, 'زرند', 'فولاد زرند'],
  [41867071915439180, 'آلومینیوم جنوب', 'مجتمع آلومینیوم جنوب'],
  [58903026391426893, 'سیرجان', 'فولاد سیرجان'],
  [42171673792069321, 'زیسکو', 'فولاد زرند ایرانیان'],
  [48175603054578540, 'اسفراین', 'مجتمع صنعتی اسفراین'],
  [67535111875054076, 'پارس متال ', 'پارس متال'],
  [40012411719639360, 'سیسکو', 'فولاد سیرجان ایرانیان'],
  [357086043812735, 'فولاد تربت', 'فولاد تربت حیدریه'],
  [37284308569715577, 'فسبزوار', 'پارس فولاد سبزوار'],
  [68604686987554533, 'فماکح', 'ح . ماداکتو استیل کرد'],
  [45507655586782998, 'فجهان', 'مجتمع جهان فولاد سیرجان'],
  [44846320603450383, 'فروسیل', 'فروسیلیسیم خمین']]}
>>> # getting the latest price information
>>> inst.get_info()
{'timestamp': '12:30:00',
 'status': 'A ',
 'last_info_datetime': datetime.datetime(2021, 7, 5, 12, 30),
 'pl': 12250,
 'pc': 12210,
 'pf': 12140,
 'py': 12050,
 'pmin': 12340,
 'pmax': 12100,
 'tno': 10904,
 'tvol': 57477120,
 'tval': 701852286450}
>>> # getting the daily trade history for the last n days (as a DataFrame)
>>> inst.get_trade_history(top=2)
               pmax     pmin       pc  ...          tval      tvol    tno
date                                   ...
2021-07-18  12880.0  12530.0  12650.0  ...  1.114773e+12  88106162  14485
2021-07-17  12960.0  12550.0  12750.0  ...  8.740106e+11  68542961  14327
[2 rows x 9 columns]
>>> # getting adjusted daily prices
>>> inst.get_price_history(adjusted=True)
             pmax   pmin     pf     pl       tvol     pc
date
2007-02-04     45     41     45     42  172898994     42
2007-02-05     43     43     43     43   10826496     43
2007-02-06     44     44     44     44   26850133     44
2007-02-07     45     45     45     45   31086849     45
2007-02-10     45     45     45     45   40645528     45
           ...    ...    ...    ...        ...    ...
2021-07-12  13340  12840  13110  12860  106208763  13020
2021-07-13  13010  12640  12840  12680   66812306  12770
2021-07-14  12830  12450  12540  12690   70277940  12670
2021-07-17  12960  12550  12800  12640   68542961  12750
2021-07-18  12880  12530  12600  12630   88106162  12650
[3192 rows x 6 columns]
>>> # getting legal/natural client types (the result is a DataFrame)
>>> inst.get_client_type()
            n_buy_count  l_buy_count  ...  n_sell_value  l_sell_value
date                                  ...
2021-07-04         4447           14  ...  586457311950  137504028420
2021-07-03         5890           23  ...  994298662870   71984465160
2021-06-30         5032           19  ...  637609524840  120419036770
2021-06-29         5851           12  ...  562034366100  426591980560
2021-06-28         5349           17  ...  767532788130   75884839930
                 ...          ...  ...           ...           ...
2008-12-02            0            1  ...         53664             0
2008-12-01            0            1  ...             0        212750
2008-11-30            2            1  ...       2565810             0
2008-11-29            1            0  ...       4521000             0
2008-11-26            1            1  ...       1487409         46600
[2715 rows x 12 columns]
>>> # getting the data in identification (شناسه) tab of the symbol
>>> inst.get_identification()  # the result is a DataFrame
                                               1
0
کد 12 رقمی نماد                     IRO1MSMI0001
کد 5 رقمی نماد                             MSMI1
نام لاتین شرکت                   S*I. N. C. Ind.
کد 4 رقمی شرکت                              MSMI
نام شرکت                 ملی صنایع مس ایران‌‌
نماد فارسی                                  فملی
نماد 30 رقمی فارسی        ملی صنایع مس ایران
کد 12 رقمی شرکت                     IRO1MSMI0000
بازار               بازار اول (تابلوی اصلی) بورس
>>> # getting the share/unit holders
>>> inst.get_holders()
                                    سهامدار/دارنده  ...            id_cisin
0    سازمان توسعه ونوسازی معادن وصنایع معدنی ایران  ...    104,IRO1MSMI0000
1    موسسه صندوق بازنشستگی شرکت ملی صنایع مس ایران  ...    770,IRO1MSMI0000
2           شرکت سرمایه گذاری صدرتاءمین-سهامی عام-  ...    492,IRO1MSMI0000
3   شرکت سرمایه گذاری توسعه معادن وفلزات-سهامی عام  ...    460,IRO1MSMI0000
4                          شرکت صبامیهن-سهامی خاص-  ...  48312,IRO1MSMI0000
5                     شرکت س اتهران س.خ-م ک م ف ع-  ...   1064,IRO1MSMI0000
6               شرکت س اخراسان رضوی س.خ-م ک م ف ع-  ...   1065,IRO1MSMI0000
7         شرکت واسط مالی آذرچهارم-بامسئولیت محدود-  ...  60545,IRO1MSMI0000
8            شرکت سرمایه گذاری آتیه صبا-سهامی خاص-  ...    788,IRO1MSMI0000
9      موسسه صندوق بازنشستگی،وظیفه،ازکارافتادگی وپ  ...   7638,IRO1MSMI0000
10           شرکت سرمایه گذاری فرهنگیان-سهامی خاص-  ...    515,IRO1MSMI0000
11        شرکت توسعه ومدیریت سرمایه صبا-سهامی خاص-  ...  22650,IRO1MSMI0000
12    شرکت سرمایه گذاری آتیه اندیشان مس-سهامی عام-  ...    413,IRO1MSMI0000
13                     شرکت س افارس س.خ-م ک م ف ع-  ...   2674,IRO1MSMI0000
14                  شرکت س اخوزستان س.خ-م ک م ف ع-  ...   2662,IRO1MSMI0000
15                   شرکت س ااصفهان س.خ-م ک م ف ع-  ...   1063,IRO1MSMI0000
16           شرکت س اآذربایجان شرقی س.خ-م ک م ف ع-  ...   2663,IRO1MSMI0000
17                 شرکت س امازندران س.خ-م ک م ف ع-  ...   2675,IRO1MSMI0000
18                    شرکت س اکرمان س.خ-م ک م ف ع-  ...   2665,IRO1MSMI0000
19       موسسه صندوق بیمه اجتماعی روستائیان وعشایر  ...    771,IRO1MSMI0000
20      شرکت گروه توسعه مالی مهرآیندگان-سهامی عام-  ...  21630,IRO1MSMI0000
[21 rows x 5 columns]
>>> # getting information of a specific share/unit holder
>>> inst.get_holder('21630,IRO1MSMI0000', history=True, other_holdings=True)
(                shares
 date
 2021-02-17  2003857980
 2021-02-18  2003857980
 2021-02-21  2003857980
 2021-02-22  2003857980
 2021-02-23  2003857980
 ...                ...
 2021-06-29  2003857980
 2021-06-30  2003857980
 2021-07-01  2003857980
 2021-07-04  2003857980
 2021-07-05  2003857980

 [90 rows x 1 columns],
                                              name      shares  percent
 ins_code
 778253364357513                          بانک ملت  4161561525     2.00
 26014913469567886       سرمایهگذاریغدیر(هلدینگ  3356161798     4.66
 70270965300262393                      بیمه البرز  2805270000    19.44
 35700344742885862            معدنی و صنعتی گل گهر  2093472351     2.81
 35425587644337450          ملی صنایع مس ایران  2003857980     1.00
 47302318535715632                بانکاقتصادنوین  1242200000     4.08
 45050389997905274                       بانک سینا  1015663732     4.00
 57309221039930244  سرمایه گذاری توسعه صنعت وتجارت   978026662    16.30
 29860265627578401                        بیمه  ما   623740333    15.59
 47996917271187218                 بانک کارآفرین   500000000     1.86
 15521712617204216            سیمان فارس و خوزستان   337500000     6.00
 70289374539527245          قطعات اتومبیل ایران   259990000     4.19
 43622578471330344               گروه دارویی سبحان   183381668     5.65
 3863538898378476              سرمایهگذاری مسکن   182160000     3.31
 25514780181345713   سرمایه گذاری ساختمانایران   157816359    14.47
 15282093177363578      مهندسی و ساختمان صنایع نفت   129290612     5.13
 35669480110084448                   سیمانسپاهان   126674401     5.17
 12387472624849835                 داروسازی اسوه   118276522    15.77
 57944184894703821    سرمایه گذاری البرز(هلدینگ   114588426     2.38
 7711282667602555                   پتروشیمی شازند   101805550     1.26
 60095061789823130  نهادهای مالی بورس اوراق بهادار    87997324     5.60
 6757220448540984                     سیمان شمال    67919940     5.26
 30829203706095076                   سیمان تهران    53400000     3.05
 59607545337891226                   به پرداخت ملت    36391574     1.21
 52220424531578944                      سیمانغرب    32151333     6.43
 33931218652865616        سرمایهگذاری صنعت نفت    30949707     1.87
 39807886630843041          تولید برق عسلویه  مپنا    30270982     4.15
 29747059672582491                  سیمانهرمزگان    29288000     2.70
 26997316501080743                     سیمان شرق    29000000     1.09
 41974758296041288                   سیمان خوزستان    24338461     1.73
 17939384202383793  شرکت سرمایه گذاری مسکن شمالغرب    18333333     1.52
 10919655792568926   نهادهای مالی بورس کالای ایران    18324997     1.88
 28253678449273505              کشتیرانی دریای خزر    15600000     1.44
 11432067920374603                  داروسازی سینا    13930853     1.74
 11964419322927535                    سیمانشاهرود    12400000     1.53
 59598536122397373        صندوق س.سپهرخبرگان نفت-د     8310000     1.66
 8603978909726038        ص.س.جسورانه فناوری آرمانی       50000     8.33
 57585821705408565              ص.ج.فیروزه10%تادیه       30000     6.00)
>>> # getting intraday data
>>> inst.get_intraday(
    date=20210704,
    general=False,
    thresholds=False,
    closings=False,
    candles=False,
    states=True,
    trades=True,
    holders=False,
    yesterday_holders=False,
    client_types=True,
    best_limits=True,
)  # the result is too long and not shown here
>>> # getting the history of price adjustments
>>> inst.get_adjustments()  # the result is a DataFrame
                   date  adj_pc     pc
0   1399-05-01 00:00:00   35720  35970
1   1398-04-26 00:00:00    4269   4419
2   1397-10-02 00:00:00    2880   3744
3   1397-04-20 00:00:00    3121   3271
4   1396-08-08 00:00:00    1977   2173
5   1396-05-01 00:00:00    1534   1884
6   1395-04-29 00:00:00    1344   1397
7   1395-04-22 00:00:00    1397   1597
8   1394-06-30 00:00:00    1298   1378
9   1393-09-11 00:00:00    2321   2639
10  1393-04-24 00:00:00    2377   2777
11  1392-03-20 00:00:00    2872   4774
12  1392-03-19 00:00:00    4774   5794
13  1391-04-06 00:00:00    3959   4659
14  1390-04-14 00:00:00    4911  12991
15  1390-04-14 00:00:00   12991  15241
16  1389-04-12 00:00:00    6494   7694
17  1388-04-24 00:00:00    4827   5627
>>> # try Instrument.search if Instrument.from_l18 fails
>>> # (may happen if the symbol is new and the database is not up-to-date)
>>> Instrument.from_search('لطیف')
Instrument(16422980660132735)

The following functions can be used to fetch all the data available for creating filters on tsetmc.com:

  • get_market_watch_init
  • get_closing_price_all
  • get_client_type_all
  • get_key_stats

The get_price_adjustments function gets all the price adjustments for a specified flow.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for tsetmc, version 0.29.0
Filename, size File type Python version Upload date Hashes
Filename, size tsetmc-0.29.0-py3-none-any.whl (27.3 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size tsetmc-0.29.0.tar.gz (41.3 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page