# ETF Directory

Domestic ETF reference data including fund names, managers, custodians, tracked indices, listing status, and fees. Refreshed every Monday.

`GET /v2/etf/basic`

## Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `symbol` | string | No | ETF code, e.g. 510300.SH (omit for full directory) |
| `index_symbol` | string | No | Tracked-index code, e.g. 000300.SH |
| `list_status` | string | No | Listing status: L listed / D delisted / P pending |
| `exchange` | string | No | Exchange code |
| `manager` | string | No | Fund manager name |
| `etf_type` | string | No | ETF type |

## Response Fields

| Field | Type | Description |
| --- | --- | --- |
| `symbol` | string | ETF code |
| `csname` | string | ETF short name |
| `extname` | string | Extended short name |
| `cname` | string | Full fund name |
| `index_symbol` | string | Tracked-index code |
| `index_name` | string | Tracked-index name |
| `setup_date` | string | Fund inception date, YYYYMMDD |
| `list_date` | string | Listing date, YYYYMMDD |
| `list_status` | string | Listing status |
| `exchange` | string | Exchange |
| `mgr_name` | string | Fund manager |
| `custod_name` | string | Fund custodian |
| `mgt_fee` | number | Management fee rate |
| `etf_type` | string | ETF type |

## API Example

cURL

```
curl -H "X-API-Key: YOUR_KEY" \
  "https://asharehub.com/v2/etf/basic?list_status=L"
```

Python SDK

```
from asharehub import AShareHub

client = AShareHub(api_key="YOUR_KEY")
df = client.etf_basic(list_status="L")
print(df.head())
```

## Sample Data

returns a pandas.DataFrame

| symbol | csname | index_symbol | index_name | list_date | list_status | mgr_name | etf_type |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 159919.SZ | 嘉实沪深300ETF | 000300.SH | 沪深300 | 20120528 | L | 嘉实基金 | 纯境内 |
| 510300.SH | 华泰柏瑞沪深300ETF | 000300.SH | 沪深300 | 20120528 | L | 华泰柏瑞基金 | 纯境内 |
| 512880.SH | 国泰中证全指证券公司ETF | 399975.SZ | 中证证券公司 | 20160808 | L | 国泰基金 | 纯境内 |
