Skip to main content

msci-data

Download MSCI index levels as pandas DataFrames. No API key required.

Pulls end-of-day index levels from MSCI's public levels API — the same one that powers charts on msci.com/indexes.


Install

pip install msci-data

Quick Start

from mscidata import msci

# MSCI World — Net Total Return, date range
df = msci.get_levels("990100", "2026-01-01", "2026-07-01")
print(df)
#    INDEX_CODE VARIANT       RETURN_TYPE CURRENCY        DATE          LEVEL
# 0      990100    NETR  Net Total Return      USD  2026-01-02  14821.123456
# ...

# MSCI India — Price Return
df = msci.get_levels("106220", "2026-01-01", "2026-07-01", variant="price")

# MSCI Emerging Markets — Gross Total Return
df = msci.get_levels("664185", "2026-01-01", "2026-07-01", variant="gross")

# Multiple indices — concatenated into one DataFrame
df = msci.get_levels(["990100", "664185", "106220"], "2026-01-01", "2026-07-01")

# Single date
df = msci.get_levels("990100", "2026-07-03")

# List supported return variants
msci.list_variants()

API Reference

msci.get_levels(index_codes, from_date, to_date=None, variant="NETR")

Param Type Description
index_codes str or list[str] MSCI numeric index code(s)
from_date str Start date — "YYYY-MM-DD" or "YYYYMMDD"
to_date str End date (defaults to from_date for single day)
variant str Return variant — see table below

Returns: DataFrame with columns: INDEX_CODE, VARIANT, RETURN_TYPE, CURRENCY, DATE, LEVEL

Return Variants

Code Aliases Description
STRD price, pr Price Return
NETR net, ntr Net Total Return (default)
GRTR gross, tr, gtr Gross Total Return

msci.download(index_codes, from_date, to_date=None, variant="NETR", output_dir=".", s3_bucket=None, s3_prefix="msci-data/")

Download to local CSV or S3.

# Local file
path = msci.download("990100", "2026-01-01", "2026-07-01")
# → MSCI_990100_NETR_20260101_20260701.csv

# S3 (Lambda with IAM role)
uri = msci.download(["990100", "664185"], "2026-01-01", "2026-07-01",
                     s3_bucket="my-bucket", s3_prefix="raw/msci/")
# → s3://my-bucket/raw/msci/MSCI_990100_664185_NETR_20260101_20260701.csv

Common MSCI Index Codes

Code Index
990100 MSCI World (Developed Markets)
891800 MSCI ACWI (All Country World)
664185 MSCI Emerging Markets
106220 MSCI India
929887 MSCI USA
990300 MSCI EAFE (Europe, Australasia, Far East)

Index codes are the numeric identifiers from MSCI's URL structure on msci.com/indexes.


CLI

# Date range — MSCI World net return
msci-data levels --codes 990100 --from 2026-01-01 --to 2026-07-01

# Multiple indices, price variant
msci-data levels --codes 990100 664185 --from 2026-01-01 --to 2026-07-01 --variant price

# Save to S3
msci-data levels --codes 990100 --from 2026-01-01 --to 2026-07-01 \
                 --s3-bucket my-bucket --s3-prefix raw/msci/

# List variants
msci-data variants

Notes

  • Data goes back to 2000-01-01 (MSCI API floor date)
  • Currency is fixed to USD
  • Data frequency is daily (trading days only)
  • No authentication required — uses MSCI's public chart data API

Metadata

Release files for msci-data 1.0.0

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

Source distribution (sdist)

Source distribution for msci-data 1.0.0
File Size Uploaded Provenance Actions
msci_data-1.0.0.tar.gz 9.0 kB With provenance Details for msci_data-1.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for msci-data 1.0.0
File Interpreter ABI Platform Actions
msci_data-1.0.0-py3-none-any.whl Python 3 none any Details for msci_data-1.0.0-py3-none-any.whl

Total release size: 19.7 kB

Release files / msci_data-1.0.0.tar.gz

Download URL msci_data-1.0.0.tar.gz
Size 9.0 kB
Tags Source
SHA-256 checksum
How to use checksums
83d3d30a8b9befbc20cf88160367a6c94af5b2c1369b174a149dcd0eeb526253
BLAKE2b-256 checksum
How to use checksums
bae06b271b902fe5c1b18dee06cc86a36e6e7236724096bcdf962828ae8ce701
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 Jul 13, 2026.

Transparency log

Release files / msci_data-1.0.0-py3-none-any.whl

Download URL msci_data-1.0.0-py3-none-any.whl
Size 10.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
625fa65b9cdf71c0a8de9408d66f333f5a3d059a6a354acb9b020a745403ed14
BLAKE2b-256 checksum
How to use checksums
68aaf891dd7a7d329a4eca580abb572bca2afa5e05a3a0b73dd49ee470f1d9d5
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 Jul 13, 2026.

Transparency log

Security for msci-data 1.0.0

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.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for msci_data-1.0.0.tar.gz

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 Jul 13, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files Full provenance

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