A modern, elegant, and comprehensive dashboard as well as open api for tracking live stock prices from the Nepal Stock Exchange (NEPSE). Features real-time market data, sector filtering, IPO tracking, broker directory, and automated data updates via GitHub Actions.
- Live Market Data: Real-time stock prices, changes, and volumes
- Sector Filtering: Filter stocks by sectors (Hydro, Banking, Insurance, etc.)
- Instant Search: Search by stock symbol or company name
- Market Indices: Live NEPSE indices with animated marquee
- Top Movers: Real-time top gainers and losers
- Stock Detail Modal: Click any stock for detailed information
- Upcoming IPOs: Track open, upcoming, and closed IPOs
- Nepali Date Support: Automatic BS to AD date conversion
- Status Badges: Visual indicators for Open/Upcoming/Closed IPOs
- Reserved Shares: Special indicators for NRN/reserved share issues
- Broker Directory: Complete broker listings with filters
- Membership Types: Filter by broker membership category
- District/Province Filters: Geographic broker search
- TMS Links: Direct access to broker trading platforms
- Market History: Historical market summary data
All data is available as static JSON endpoints for developers. See JSON Docs for complete API reference. The OpenAPI spec is available at openapi.yaml.
Visit the dashboard at: https://shubhamnpk.github.io/nepse-scaper/ or
- Frontend: HTML5, Vanilla CSS (Glassmorphism Design), Vanilla JavaScript
- Styling: CSS Variables, Gradient Backgrounds, Backdrop Filters
- Fonts: Google Fonts (Inter, Outfit)
- Icons: Font Awesome 6.4.0
- Backend/Scraper: Python 3.9 (NEPSE API + BeautifulSoup fallback)
- Automation: GitHub Actions (Scheduled Cron Jobs)
- Data Sources:
- Nepal Stock Exchange (NEPSE) Official API
- Merolagani
- ShareSansar
nepse-scraper/
βββ index.html # Main market dashboard
βββ data.html # Brokers & datasets page
βββ docs.html # JSON API documentation
βββ script.js # Main dashboard logic
βββ data.js # Data hub logic
βββ style.css # All styling (glassmorphism)
βββ start_server.bat # Windows local server starter
βββ favicon.png # Site favicon
βββ data/ # JSON data files
β βββ nepse_data.json # Stock prices
β βββ indices.json # Market indices
β βββ sector_indices.json # Sector indices
β βββ top_stocks.json # Top gainers/losers
β βββ market_summary.json # Current market summary
β βββ market_summary_history.json
β βββ market_status.json # Market open/closed status
β βββ notices.json # Exchange notices
β βββ disclosures.json # Company disclosures
β βββ exchange_messages.json # Exchange announcements
β βββ brokers.json # Broker directory
β βββ all_securities.json # Securities metadata
β βββ supply_demand.json # Supply/demand data
β βββ upcoming_ipo.json # Upcoming IPOs
β βββ oldipo.json # IPO archive
β βββ proposed_dividend/ # Proposed dividend datasets
β β βββ latest_1y.json # Latest proposed dividends (rolling 1 year)
β β βββ history_all_years.json # Append-only all-years proposed dividend history
β β βββ meta.json # Proposed dividend scraper metadata
β βββ nepse_sector_wise_codes.json
βββ scripts/nepse-scraper/
β βββ official_scraper.py # Main NEPSE API scraper
β βββ upcoming_ipo_scraper.py # IPO scraper
β βββ proposed_dividend_scraper.py # Proposed dividend scraper
β βββ scraper.py # Backup web scraper
β βββ requirements.txt # Python dependencies
β βββ official_api/ # NEPSE API client
β βββ __init__.py
β βββ auth.py # Authentication
β βββ client.py # API client
β βββ core.py # Core functionality
β βββ endpoints.py # API endpoints
β βββ exceptions.py # Custom exceptions
β βββ nepse.wasm # WebAssembly for auth
βββ .github/workflows/
βββ scrape.yml # Market data automation
βββ scrape_ipo.yml # IPO data automation
- Fork this repository
- Enable GitHub Actions in the 'Actions' tab
- Enable GitHub Pages from Settings > Pages (Deploy from
mainbranch) - Your dashboard will be live at
https://shubhamnpk.github.io/nepse-scaper/
start_server.batpython -m http.server 8000Then open http://localhost:8000 in your browser.
To force a data update locally:
cd scripts/nepse-scraper
pip install -r requirements.txt
# Update all market data
python official_scraper.py
# Update broker and securities (run once per 60 days)
python official_scraper.py --brokers --securities
# Update IPO data
python upcoming_ipo_scraper.py
# Update proposed dividend data (daily mode)
python proposed_dividend_scraper.py --mode latest
# Optional full all-years backfill
python proposed_dividend_scraper.py --mode backfillMarket Data Scraper (.github/workflows/scrape.yml)
- Schedule: Every 30 minutes
- Time: 10:00 AM - 4:00 PM NPT (Sunday - Friday)
- Data: Stock prices, indices, market summary, top stocks, notices, disclosures, exchange messages, supply/demand
- Files: Updates all JSON files in
data/folder
IPO Scraper (.github/workflows/scrape_ipo.yml)
- Schedule: Daily at 4:00 AM UTC (9:45 AM NPT)
- Data: Upcoming IPO announcements + proposed dividend refresh
- Files:
data/upcoming_ipo.json,data/oldipo.json,data/proposed_dividend/latest_1y.json,data/proposed_dividend/history_all_years.json,data/proposed_dividend/meta.json - Features: Auto-archives IPOs older than 10 days and updates proposed dividend datasets
All data is accessible as static JSON endpoints:
| Endpoint | Type | Description |
|---|---|---|
/data/nepse_data.json |
Array | Stock prices (symbol, LTP, change, volume) |
/data/indices.json |
Array | Main NEPSE indices |
/data/sector_indices.json |
Array | Sector-wise indices |
/data/top_stocks.json |
Object | Top gainers, losers, turnover |
/data/market_summary.json |
Object | Current day market summary |
/data/market_summary_history.json |
Array | Historical market data |
/data/market_status.json |
Object | Market open/closed status |
/data/disclosures.json |
Array | Company disclosures |
/data/exchange_messages.json |
Array | Exchange announcements |
/data/brokers.json |
Array | Complete broker directory |
/data/all_securities.json |
Array | Master list of securities metadata |
/data/supply_demand.json |
Object | Supply/demand snapshots |
/data/upcoming_ipo.json |
Array | Upcoming IPO listings |
/data/oldipo.json |
Array | Historical IPO archive |
/data/notices.json |
Object | Exchange & company notices |
/data/proposed_dividend/latest_1y.json |
Array | Latest proposed dividends (rolling 1 year) |
/data/proposed_dividend/history_all_years.json |
Array | Append-only all-years proposed dividend history |
/data/proposed_dividend/meta.json |
Object | Proposed dividend scraper run metadata |
/data/nepse_sector_wise_codes.json |
Object | Sector mapping for stocks |
See docs.html for complete documentation.
- Glassmorphism Design: Translucent cards with backdrop blur
- Dark Theme: Optimized for extended viewing
- Responsive Layout: Mobile-friendly design
- Gradient Accents: Purple-to-pink gradient highlights
- Smooth Animations: Hover effects and transitions
- Custom Scrollbar: Styled for dark theme
- Accessibility: ARIA labels, keyboard navigation support
- Python 3.9+
- Modern web browser
- (Optional) Local server for testing
index.html- Main dashboard with stock cards, search, filtersdata.html- Broker directory with tables and filtersdocs.html- API documentationscript.js- Dashboard logic, IPO date parsing, Nepali date conversiondata.js- Broker filtering, dataset renderingstyle.css- Complete styling (1685 lines)
official_scraper.py- Main scraper using NEPSE APIupcoming_ipo_scraper.py- IPO data from Merolaganiproposed_dividend_scraper.py- Proposed dividend data from ShareSansarofficial_api/- NEPSE API Python client with WASM auth
- NEPSE Official API: Primary source for market data
- Merolagani: IPO announcements and company news
- ShareSansar: Backup data source
Data is scraped for educational purposes. All data credits belong to the respective owners.
- Developers: My Wallet Team & Yoguru Team & @Shubhamnpk
- Data Sources: Nepal Stock Exchange (NEPSE), Merolagani, ShareSansar
- Not affiliated with: NEPSE, Merolagani, or ShareSansar
This project is open-source and available under the MIT License.
For issues, feature requests, or contributions, please open an issue on GitHub.
Built with β€οΈ for the Nepali investment community