# pyGrowwAPI
π **Unofficial Python client for Groww Stock Market Data (NSE).**
Easily fetch **live quotes** and **historical OHLCV candles** for Indian stocks using Groww's web APIs.
---
## π Installation
```bash
pip install pyGrowwAPI
```
---
## π Quick Start
```python
from pyGrowwAPI.client import GrowwClient
# Initialize client
client = GrowwClient()
# Get live stock quotes
quotes = client.get_quotes("SBIN")
print(quotes)
# Get historical OHLCV data
candles = client.history_price("SBIN", "30day", "1day")
for c in candles[:5]:
print(c.timestamp, c.open, c.close)
```
---
## πΉ API Documentation
### `GrowwClient`
Main client to interact with Groww's API.
---
#### `get_quotes(symbol: str) -> dict`
Fetch the latest OHLC (Open, High, Low, Close) and other market data for a stock.
- **symbol** (`str`): Stock symbol, e.g., `"SBIN"`, `"TCS"`.
- **returns**: `dict` JSON response with latest prices.
---
#### `history_price(symbol: str, range_period: str, interval: str) -> list[Candle]`
Fetch historical candlestick (OHLCV) data for a stock.
- **symbol** (`str`): Stock symbol, e.g., `"SBIN"`, `"INFY"`.
- **range_period** (`str`): Time span of data.
- Format β `"<number><unit>"`
- Units: `day`, `week`, `month`, `year`
- Examples: `"30day"`, `"2week"`, `"6month"`, `"5year"`
- **interval** (`str`): Candlestick interval.
- Format β `"<number><unit>"`
- Units: `min`, `hour`, `day`, `week`, `month`, `year`
- Examples: `"1min"`, `"15min"`, `"1hour"`, `"1day"`
- **returns**: `list[Candle]`
---
### `Candle` Model
Represents a single OHLCV (Open, High, Low, Close, Volume) candle.
| Attribute | Type | Description |
|------------|-----------|-----------------------------|
| timestamp | datetime | Candle start time (IST) |
| open | float | Opening price |
| high | float | Highest price |
| low | float | Lowest price |
| close | float | Closing price |
| volume | int | Traded volume |
---
## β
Examples
### Fetching 5 years of daily candles
```python
candles = client.history_price("TCS", "5year", "1day")
print(len(candles)) # number of daily candles
```
### Fetching intraday 15-minute candles
```python
candles = client.history_price("INFY", "7day", "15min")
for c in candles[:10]:
print(c.timestamp, c.close)
```
---
## β οΈ Disclaimer
- This package uses **Growwβs public endpoints**, which are **undocumented**.
- Groww may change or restrict these APIs at any time.
- Use this package for **educational / personal projects** only.
---
## π License
MIT License Β© 2025 Your Name
Raw data
{
"_id": null,
"home_page": null,
"name": "pyGrowwAPI",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "api, groww, investing, sdk, trading",
"author": null,
"author_email": "Kavin R <kamalkavin68@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/2c/9f/1b953208aa08ac486cc2a2479dcb19237fc03c04cdad405f7cd09cac01e4/pygrowwapi-0.3.1.tar.gz",
"platform": null,
"description": "# pyGrowwAPI\n\n\ud83d\udcc8 **Unofficial Python client for Groww Stock Market Data (NSE).**\n\nEasily fetch **live quotes** and **historical OHLCV candles** for Indian stocks using Groww's web APIs.\n\n---\n\n## \ud83d\ude80 Installation\n\n```bash\npip install pyGrowwAPI\n```\n\n---\n\n## \ud83d\udccc Quick Start\n\n```python\nfrom pyGrowwAPI.client import GrowwClient\n\n# Initialize client\nclient = GrowwClient()\n\n# Get live stock quotes\nquotes = client.get_quotes(\"SBIN\")\nprint(quotes)\n\n# Get historical OHLCV data\ncandles = client.history_price(\"SBIN\", \"30day\", \"1day\")\nfor c in candles[:5]:\n print(c.timestamp, c.open, c.close)\n```\n\n---\n\n## \ud83d\udd39 API Documentation\n\n### `GrowwClient`\n\nMain client to interact with Groww's API.\n\n---\n\n#### `get_quotes(symbol: str) -> dict`\n\nFetch the latest OHLC (Open, High, Low, Close) and other market data for a stock.\n\n- **symbol** (`str`): Stock symbol, e.g., `\"SBIN\"`, `\"TCS\"`. \n- **returns**: `dict` JSON response with latest prices.\n\n---\n\n#### `history_price(symbol: str, range_period: str, interval: str) -> list[Candle]`\n\nFetch historical candlestick (OHLCV) data for a stock.\n\n- **symbol** (`str`): Stock symbol, e.g., `\"SBIN\"`, `\"INFY\"`. \n- **range_period** (`str`): Time span of data. \n - Format \u2192 `\"<number><unit>\"` \n - Units: `day`, `week`, `month`, `year` \n - Examples: `\"30day\"`, `\"2week\"`, `\"6month\"`, `\"5year\"` \n- **interval** (`str`): Candlestick interval. \n - Format \u2192 `\"<number><unit>\"` \n - Units: `min`, `hour`, `day`, `week`, `month`, `year` \n - Examples: `\"1min\"`, `\"15min\"`, `\"1hour\"`, `\"1day\"` \n- **returns**: `list[Candle]`\n\n---\n\n### `Candle` Model\n\nRepresents a single OHLCV (Open, High, Low, Close, Volume) candle.\n\n| Attribute | Type | Description |\n|------------|-----------|-----------------------------|\n| timestamp | datetime | Candle start time (IST) |\n| open | float | Opening price |\n| high | float | Highest price |\n| low | float | Lowest price |\n| close | float | Closing price |\n| volume | int | Traded volume |\n\n---\n\n## \u2705 Examples\n\n### Fetching 5 years of daily candles\n\n```python\ncandles = client.history_price(\"TCS\", \"5year\", \"1day\")\nprint(len(candles)) # number of daily candles\n```\n\n### Fetching intraday 15-minute candles\n\n```python\ncandles = client.history_price(\"INFY\", \"7day\", \"15min\")\nfor c in candles[:10]:\n print(c.timestamp, c.close)\n```\n\n---\n\n## \u26a0\ufe0f Disclaimer\n\n- This package uses **Groww\u2019s public endpoints**, which are **undocumented**. \n- Groww may change or restrict these APIs at any time. \n- Use this package for **educational / personal projects** only. \n\n---\n\n## \ud83d\udcdc License\n\nMIT License \u00a9 2025 Your Name\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Unofficial Python SDK for Groww APIs (sync + async), with typed models.",
"version": "0.3.1",
"project_urls": {
"Homepage": "https://github.com/kamalkavin68/pyGrowwAPI",
"Issues": "https://github.com/kamalkavin68/pyGrowwAPI/issues"
},
"split_keywords": [
"api",
" groww",
" investing",
" sdk",
" trading"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "493d9da23e0dddf06c08748b95023182e9ff8ffc43e4cf5145347b14fb7c7987",
"md5": "df658921794c05eab67c84c86263b8c3",
"sha256": "78a20ae012f436cd20d1bd11d5007f5b688c4a079105c2a8b44e6468ab6fecd5"
},
"downloads": -1,
"filename": "pygrowwapi-0.3.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "df658921794c05eab67c84c86263b8c3",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 5958,
"upload_time": "2025-09-04T05:30:36",
"upload_time_iso_8601": "2025-09-04T05:30:36.953514Z",
"url": "https://files.pythonhosted.org/packages/49/3d/9da23e0dddf06c08748b95023182e9ff8ffc43e4cf5145347b14fb7c7987/pygrowwapi-0.3.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2c9f1b953208aa08ac486cc2a2479dcb19237fc03c04cdad405f7cd09cac01e4",
"md5": "40009f857f8cfb340c7b34b2892e39d1",
"sha256": "87712e3732271a6a1b986c3b1219eab3bc3c83874b8b9cbc886d5f573732faba"
},
"downloads": -1,
"filename": "pygrowwapi-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "40009f857f8cfb340c7b34b2892e39d1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 7077,
"upload_time": "2025-09-04T05:30:38",
"upload_time_iso_8601": "2025-09-04T05:30:38.304721Z",
"url": "https://files.pythonhosted.org/packages/2c/9f/1b953208aa08ac486cc2a2479dcb19237fc03c04cdad405f7cd09cac01e4/pygrowwapi-0.3.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-04 05:30:38",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "kamalkavin68",
"github_project": "pyGrowwAPI",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "annotated-types",
"specs": [
[
"==",
"0.7.0"
]
]
},
{
"name": "certifi",
"specs": [
[
"==",
"2025.8.3"
]
]
},
{
"name": "charset-normalizer",
"specs": [
[
"==",
"3.4.3"
]
]
},
{
"name": "colorama",
"specs": [
[
"==",
"0.4.6"
]
]
},
{
"name": "idna",
"specs": [
[
"==",
"3.10"
]
]
},
{
"name": "iniconfig",
"specs": [
[
"==",
"2.1.0"
]
]
},
{
"name": "packaging",
"specs": [
[
"==",
"25.0"
]
]
},
{
"name": "pluggy",
"specs": [
[
"==",
"1.6.0"
]
]
},
{
"name": "pydantic",
"specs": [
[
"==",
"2.11.7"
]
]
},
{
"name": "pydantic_core",
"specs": [
[
"==",
"2.33.2"
]
]
},
{
"name": "Pygments",
"specs": [
[
"==",
"2.19.2"
]
]
},
{
"name": "pytest",
"specs": [
[
"==",
"8.4.1"
]
]
},
{
"name": "PyYAML",
"specs": [
[
"==",
"6.0.2"
]
]
},
{
"name": "requests",
"specs": [
[
"==",
"2.32.5"
]
]
},
{
"name": "responses",
"specs": [
[
"==",
"0.25.8"
]
]
},
{
"name": "typing-inspection",
"specs": [
[
"==",
"0.4.1"
]
]
},
{
"name": "typing_extensions",
"specs": [
[
"==",
"4.15.0"
]
]
},
{
"name": "urllib3",
"specs": [
[
"==",
"2.5.0"
]
]
}
],
"lcname": "pygrowwapi"
}