Skip to main content

A lightweight utility to scrape and retrieve financial index constituents, including S&P 500 and Nasdaq-100.

Project description

Indexes: A Lightweight S&P 500 & Nasdaq-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 and Nasdaq-100 for financial analysis and algorithmic trading.

License PyPI version Python versions Financial Data Extraction

Why use Indexes?

For financial analysts and Python developers, keeping up-to-date lists of S&P 500 and Nasdaq-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 and Nasdaq-100 constituents in seconds.
  • Flexible Data Formats: Retrieve results as a Python list or a dict keyed 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
  • requests
  • beautifulsoup4

Quick Start & Usage

from indexes import get_sp500, get_nasdaq100

# Get a simple list of all S&P 500 ticker symbols
sp500_symbols = get_sp500()

# 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.

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.

Development and Contributions

We welcome contributions from the community! Whether it's adding new indexes (Nasdaq 100, Dow Jones) or improving the scraper's robustness, feel free to submit a Pull Request.

Local Setup

  1. Clone the repository:
    git clone https://github.com/fzunigam/indexes.git
    cd indexes
    
  2. 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

indexes-0.1.2.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

indexes-0.1.2-py3-none-any.whl (5.3 kB view details)

Uploaded Python 3

File details

Details for the file indexes-0.1.2.tar.gz.

File metadata

  • Download URL: indexes-0.1.2.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for indexes-0.1.2.tar.gz
Algorithm Hash digest
SHA256 7ba45dce1a9b4ee3c0c1b3a7f321f476270a9c6c5e5e464e2e8aa4d634f74626
MD5 fd6993da3faea9d1e66def4944898668
BLAKE2b-256 9a883a1ecf1052a51e9cc4fbdc73bb3f003556c5f11594818cc7b74847066e7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for indexes-0.1.2.tar.gz:

Publisher: publish.yml on fzunigam/indexes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file indexes-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: indexes-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 5.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for indexes-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 51811cd174ca9c8a087213ad61bf93c13397b1eddc67325d54e9603bf82f018d
MD5 28f4e75978af1660e73542ae3199a4ca
BLAKE2b-256 6bf222db49e0ec94b4d023a1d88ba8e04faca0df3f0c1bf476e41935ac57be18

See more details on using hashes here.

Provenance

The following attestation bundles were made for indexes-0.1.2-py3-none-any.whl:

Publisher: publish.yml on fzunigam/indexes

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page