Indexes: A Lightweight S&P 500, Nasdaq-100 & S&P 100 Scraper
indexes is a professional Python utility designed to scrape and retrieve financial index constituents, providing developers with a clean, programmatic interface to access real-time market data. It simplifies the process of extracting stock market components from the S&P 500, Nasdaq-100, and S&P 100 for financial analysis and algorithmic trading.
Why use Indexes?
For financial analysts and Python developers, keeping up-to-date lists of S&P 500, Nasdaq-100 and S&P 100 constituents can be tedious. indexes provides a simple, cached interface to fetch this data from reliable public sources (like Wikipedia), returning essential metadata such as Sector, Industry, CIK, and more.
Key Features
- Efficient Scrapers: Get up-to-date S&P 500, Nasdaq-100 and S&P 100 constituents in seconds.
- Flexible Data Formats: Retrieve results as a Python
listor adictkeyed by symbol. - Granular Field Selection: Extract only what you need.
- Smart Caching: Minimizes network requests by caching data within the same execution session.
- Minimalist Design: Zero-config, lightweight, and easy to integrate into larger financial pipelines.
Installation
Install the package via pip:
pip install indexes
Requirements
- Python >= 3.8
requestsbeautifulsoup4
Quick Start & Usage
from indexes import get_sp500, get_nasdaq100, get_sp100
# Get a simple list of all S&P 500 ticker symbols
sp500_symbols = get_sp500()
# Get S&P 100 symbols
sp100_symbols = get_sp100()
# Get Nasdaq-100 details
nasdaq_details = get_nasdaq100(
return_type='dict',
fields=['name', 'industry']
)
# Example: Accessing Apple Inc. metadata (present in both)
print(nasdaq_details['AAPL'])
# Output: {'name': 'Apple Inc.', 'industry': 'Technology'}
# Get a list of dictionaries with custom fields
data = get_sp500(return_type='list', fields=['name', 'sector', 'cik'])
API Documentation
get_sp500(return_type='list', fields=None)
The entry point for fetching the S&P 500 index components.
return_type(str):'list'(default) or'dict'.fields(list, optional): Defaults to['symbol'].- Supported fields:
symbol,name,sector,sub_industry,date_added,cik,founded.
- Supported fields:
get_nasdaq100(return_type='list', fields=None)
The entry point for fetching the Nasdaq-100 index components.
return_type(str):'list'(default) or'dict'.fields(list, optional): Defaults to['symbol'].- Supported fields:
symbol,name,industry,subsector.
- Supported fields:
get_sp100(return_type='list', fields=None)
The entry point for fetching the S&P 100 index components.
return_type(str):'list'(default) or'dict'.fields(list, optional): Defaults to['symbol'].- Supported fields:
symbol,name,sector.
- Supported fields:
Development and Contributions
We welcome contributions from the community! Whether it's adding new indexes, new features or improving the scraper's robustness, feel free to submit a Pull Request.
Local Setup
- Clone the repository:
git clone https://github.com/fzunigam/indexes.git cd indexes
- Install in editable mode:
pip install -e .
Running Tests
Ensure stability by running the test suite:
pytest
Disclaimer
This project was built with the help of AI coding tools.
License
indexes is licensed under the MIT License. See the LICENSE file for more information.
Release files for indexes 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| indexes-0.1.3.tar.gz | 5.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| indexes-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.3 kB
Release files / indexes-0.1.3.tar.gz
| Download URL | indexes-0.1.3.tar.gz |
|---|---|
| Size | 5.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
437d452e4739a0298f11e1b3a76c15ab6844f0d8e53e6937b554d02ea2346e07
|
|
BLAKE2b-256 checksum How to use checksums |
dd24bdb5e5898a9dc5a514cebd62e9f551439f48dfb4fd0fefcac05fd9f10afb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 14, 2026.
Transparency logRelease files / indexes-0.1.3-py3-none-any.whl
| Download URL | indexes-0.1.3-py3-none-any.whl |
|---|---|
| Size | 5.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cd7225dc2c33f767b1858036b98654bb94f4c1f8b77ab1860d7388c96a866af0
|
|
BLAKE2b-256 checksum How to use checksums |
89482975bc6e3a609fc6c23c4134dd6376e041f9a0d982087002123092adf603
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 14, 2026.
Transparency log