Skip to main content

jyapystock

A Python library to fetch live and historical prices for Indian, American, and European stocks.

Status Badges

CI

yfinance tests Alpha Vantage tests NASDAQ tests NYSE tests NSE tests BSE tests Europe tests

Features

  • Live price and historical price support with timestamp and % change data
  • Indian (NSE/BSE), American (NYSE/NASDAQ), and European (Xetra/Euronext) 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: India, USA, and Europe with automatic symbol variant detection (e.g., .NS/.BO for Indian stocks, .DE/.PA/.AS/.BR/.LS for European stocks)

Installation

pip install jyapystock

Installation for Development

Dependencies are locked with Poetry (poetry.lock) for CI reproducibility:

pip install poetry
poetry install --extras dev

This installs the package in editable mode along with dev tools (pytest, pytest-cov, flake8). Run commands inside the managed environment with poetry run, e.g. poetry run pytest.

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")

European Stocks with Xetra/Euronext

from jyapystock import StockPriceProvider

# Using yfinance for a specific exchange
provider = StockPriceProvider(country="europe", exchange="xetr")
result = provider.get_live_price("SAP")
# Resolves to SAP.DE

provider = StockPriceProvider(country="europe", exchange="xpar")
result = provider.get_live_price("MC")
# Resolves to MC.PA

# No exchange given -- tries every suffix (.DE, .PA, .AS, .BR, .LS) until one resolves
provider = StockPriceProvider(country="europe")
result = provider.get_live_price("SAP")

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 & Europe)
  • 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 dependencies (see Installation for Development)

poetry install --extras dev

Run tests

poetry run python -m unittest discover tests

# Run provider-specific tests
PROVIDER=yfinance poetry run python -m unittest discover tests
PROVIDER=nse poetry run python -m unittest discover tests
PROVIDER=bse poetry run python -m unittest discover tests
PROVIDER=nasdaq poetry run python -m unittest discover tests
PROVIDER=alphavantage poetry run python -m unittest discover tests

License

MIT

Metadata

Release files for jyapystock 0.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jyapystock 0.5.1
File Size Uploaded
jyapystock-0.5.1.tar.gz 17.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jyapystock 0.5.1
File Interpreter ABI Platform
jyapystock-0.5.1-py3-none-any.whl Python 3 none any Details

Total release size: 35.9 kB

Release files / jyapystock-0.5.1.tar.gz

Download URL jyapystock-0.5.1.tar.gz
Size 17.8 kB
Tags Source
SHA-256 checksum
How to use checksums
84f5537e40dae0537ac2e493aed4dce50f69cf3d84131925a30bd6d57e3e02c2
BLAKE2b-256 checksum
How to use checksums
898d3c797faa2903029832d1ab11ffec29cc9dedfdc2854ab383d6787295b8e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.4

Release files / jyapystock-0.5.1-py3-none-any.whl

Download URL jyapystock-0.5.1-py3-none-any.whl
Size 18.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e5ec6b79decdd13df8c0c22daa649573e84836ca29bf63d8220c029468ad0283
BLAKE2b-256 checksum
How to use checksums
1f54cb5060eadf066ae0b31e36d75c55e5098bc39b5dfea94760bd0a3a1fe407
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.4

Release history Release notifications | RSS feed

This release

0.5.1 This release

2 release files

0.5.0

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page