Fetch live and historical stock prices for Indian and American exchanges.
Project description
jyapystock
A Python library to fetch live and historical prices for Indian and American stocks.
Status Badges
Features
- Live price and historical price support with timestamp and % change data
- Indian (NSE) and American (NYSE/NASDAQ) stocks
- Multiple data sources: yfinance, NASDAQ, NSE (for India), Alpha Vantage (optional API key)
- Auto-fallback: tries available sources in order based on country and API key availability
- Country support:
IndiaandUSAwith automatic symbol variant detection (e.g.,.NS,.BOfor Indian stocks)
Installation
pip install jyapystock
Installation for Development
To install locally for development:
# Install editable for development
pip install -e .
# Or install for local use
pip install .
For development and CI reproducibility, install pinned dev dependencies:
pip install -r requirements-dev.txt
Usage
Basic Usage - USA Stocks
from jyapystock import StockPriceProvider
# Using yfinance (default)
provider = StockPriceProvider(country="USA")
result = provider.get_live_price("AAPL")
# Returns: {'timestamp': '2025-12-24T00:00:00-05:00', 'price': 273.81, 'change_percent': 0.53}
Indian Stocks with NSE
from jyapystock import StockPriceProvider
# Using NSE (National Stock Exchange)
provider = StockPriceProvider(country="India", source="nse")
result = provider.get_live_price("SBIN")
# Returns: {'timestamp': '24-Dec-2025 16:00:00', 'price': 968.85, 'change_percent': -0.31}
# Using yfinance for India (auto-tries .NS and .BO variants)
provider = StockPriceProvider(country="India")
result = provider.get_live_price("RELIANCE")
Historical Data
# Get historical prices
hist = provider.get_historical_price("AAPL", "2023-01-01", "2023-01-31")
# Returns list of records with date/open/high/low/close/volume
Using NASDAQ Provider
provider = StockPriceProvider(country="USA", source="nasdaq")
result = provider.get_live_price("AAPL")
Using Alpha Vantage (requires API key)
provider = StockPriceProvider(
country="USA",
source="alphavantage",
alpha_vantage_api_key="YOUR_API_KEY"
)
result = provider.get_live_price("AAPL")
Multiple Providers with Fallback
You can specify multiple sources as a list. The provider will try them in order until one returns data:
# Try NSE first, then fall back to yfinance for Indian stocks
provider = StockPriceProvider(country="India", source=["nse", "yfinance"])
result = provider.get_live_price("RELIANCE")
# Try NASDAQ first, then NASDAQ, then yfinance for USA stocks
provider = StockPriceProvider(country="USA", source=["nasdaq", "yfinance"])
result = provider.get_live_price("AAPL")
# Try BSE for historical data, fall back to yfinance
provider = StockPriceProvider(country="India", source=["bse", "yfinance"])
hist = provider.get_historical_price("NSDL", "2025-12-01", "2025-12-31")
You can also pass a single provider as a string:
# Equivalent to source=["bse"]
provider = StockPriceProvider(country="India", source="bse")
result = provider.get_live_price("NSDL")
Supported Sources
- yfinance: Free, supports most global stocks (USA & India)
- NASDAQ: Free, USA stocks only
- NYSE: Free, USA stocks only
- NSE: Free, Indian stocks only (via National Stock Exchange)
- BSE: Free, Indian stocks only (via Bombay Stock Exchange)
- Alpha Vantage: Free tier with limits, requires API key, supports global stocks
Testing
Install library in editable mode
pip install -e .
Run tests
python -m unittest discover tests
# Run provider-specific tests
PROVIDER=yfinance python -m unittest discover tests
PROVIDER=nse python -m unittest discover tests
PROVIDER=bse python -m unittest discover tests
PROVIDER=nasdaq python -m unittest discover tests
PROVIDER=alphavantage python -m unittest discover tests
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jyapystock-0.4.2.tar.gz.
File metadata
- Download URL: jyapystock-0.4.2.tar.gz
- Upload date:
- Size: 16.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fe6e57dbaf6996939af71ac0c554470da79f23809970f5ab778b5663536e9400
|
|
| MD5 |
f9437a26ee7897bce9ded44cb44f30d6
|
|
| BLAKE2b-256 |
be8f4f08458a37d2dcc2b0b67bfc66158ee8f06d2c831411e56a649fdc67c430
|
File details
Details for the file jyapystock-0.4.2-py3-none-any.whl.
File metadata
- Download URL: jyapystock-0.4.2-py3-none-any.whl
- Upload date:
- Size: 17.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
efe00e14520b4f589c698533009278dfccb9e72c5775167682cb2b8aad8874c0
|
|
| MD5 |
a3d7b02738659a22ba2818e8f73cfa18
|
|
| BLAKE2b-256 |
2e1a9d07ba76ec28bc71984e18d9cdfeda68f55b4e61e7b754e5b533144410df
|