A professional application for downloading NSE and BSE market data with advanced processing capabilities.
- NSE: Equity (EQ), Futures & Options (FO), SME, Index data
- BSE: Equity (EQ), Index data
- Parallel downloads for maximum efficiency
- Smart Append Operations: Automatically combine related datasets
- Memory Optimization: Efficient handling of large datasets
- Data Validation: Ensures data integrity and consistency
- Modern GUI: Built with PyQt6 for professional appearance
- Real-time Progress: Live download progress and status updates
- Customizable Settings: User preferences saved automatically
- Error Handling: Comprehensive error reporting and recovery
- Automatic Updates: Built-in update checking and notification
- Concurrent Downloads: Async processing for faster downloads
- Weekend Support: Optional weekend download attempts
- Timeout Configuration: Adjustable network timeout settings
- Python 3.8 or higher
- Internet connection for downloads
# Clone the repository
git clone https://github.com/pparesh25/NSE_BSE_Downloader.git
cd NSE_BSE_Downloader
# Install dependencies
pip install -r requirements.txt
# Run the application
python main.py
PyQt6>=6.4.0
aiohttp>=3.8.0
pandas>=1.5.0
numpy>=1.21.0
pyyaml>=6.0
python main.py
- ✅ Check desired exchanges (NSE EQ, NSE INDEX, BSE EQ, etc.)
- ⚙️ Configure append options if needed
- 📅 Set date range (optional)
- 🚀 Click "Start Download"
- 📊 Monitor progress in real-time
- ✅ Data saved to
~/NSE_BSE_Data/
~/NSE_BSE_Data/
├── NSE/
│ ├── EQ/ # NSE Equity data
│ ├── FO/ # NSE Futures & Options
│ ├── SME/ # NSE SME data
│ └── INDEX/ # NSE Index data
└── BSE/
├── EQ/ # BSE Equity data
└── INDEX/ # BSE Index data
- Stored in
~/.nse_bse_downloader/user_preferences.json
- Automatically saved on changes
- Includes window size, download options, and append settings
- Main configuration in
config.yaml
- Exchange URLs and file patterns
- Default download options
- NSE SME → NSE EQ: Combine SME data with equity data
- NSE INDEX → NSE EQ: Add index data to equity files
- BSE INDEX → BSE EQ: Merge BSE index with equity data
- Smart Suffix Handling: Optional
_SME
suffix for SME symbols
- Efficient DataFrame processing
- Automatic memory cleanup
- Large dataset handling
- Automatic retry on network failures
- Graceful handling of missing data
- Comprehensive error logging
Run the test suite to verify functionality:
# Install test dependencies
pip install pytest pytest-asyncio
# Run all tests
pytest tests/
# Run specific test
pytest tests/unit/test_config.py -v
We welcome contributions! Please see our contributing guidelines:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Submit a pull request
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.
- PyQt6 Installation: Use
pip install PyQt6
or conda equivalent - Network Timeouts: Increase timeout in settings
- Permission Errors: Ensure write access to data directory
- 📧 Create an issue on GitHub
- 📖 Check the documentation
- 🔍 Search existing issues
- NSE and BSE for providing public data access
- PyQt6 team for the excellent GUI framework
- Python community for amazing libraries
- Initial production release
- Multi-exchange support (NSE & BSE)
- Advanced data append operations
- Professional GUI interface
- Comprehensive error handling
- Automatic update checking
- Memory optimization
- Async download processing
Built with ❤️ for the trading and financial analysis community
© 2025 Paresh Patel. All rights reserved.