> For the complete documentation index, see [llms.txt](https://market-quant.gitbook.io/home/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://market-quant.gitbook.io/home/api-reference/data-providers/charles-schwab-api.md).

# Charles Schwab API

Documentation for the Schwab API

The Schwab client provides access to Schwab's API for accounts, trading, and market data operations. This client allows you to initialize a connection with Schwab, perform account-related actions, manage orders, and retrieve market data such as quotes, price history, and option chains.

Make sure you have a Schwab and Schwab developer account:

1. Set up your Schwab developer account [here](https://beta-developer.schwab.com/).
   * Create a new Schwab individual developer app with callback URL "[https://127.0.0.1](https://127.0.0.1/)" (case sensitive)
   * Wait until the status is "Ready for use", note that "Approved - Pending" will not work.
   * Enable TOS (Thinkorswim) for your Schwab account, it is needed for orders and other API calls.

***

### Schwab Client Import Statement

```python
pfrom marketquant.data_provider import schwab
```

***

### Usage Overview

To use the Schwab API client, you must initialize the client by loading environment variables that contain your Schwab API credentials (`app_key`, `app_secret`, `callback_url`). Once initialized, you can perform various actions related to accounts, orders, and market data.

***

### Class: `SchwabInitializer`

The `SchwabInitializer` class sets up the Schwab API client, loading the required credentials from environment variables.

#### Method: `get_client`

The `get_client` method returns the initialized Schwab API client to be used for further API calls.

```python
SchwabInitializer.get_client()
```

**Returns:**

* An initialized Schwab API client with the required credentials.

#### Method: `schwab`

The `schwab` function is a utility method to instantiate and return the Schwab API client using the `SchwabInitializer`.

```python
schwab()
```

**Example Usage:**

```python
from marketquant.data_provider import schwab

# Initialize the Schwab API client
schwab_api = schwab()
```

***

### Example Usage

Here’s an example of how to use the Schwab client to fetch account details and quotes:

```python
from marketquant.data_provider import schwab

# Initialize the Schwab API client
schwab_api = schwab()

# Get linked accounts
accounts = schwab_api.account_linked()

# Fetch account details for a specific account
account_hash = accounts.json()['linkedAccounts'][0]['accountHash']
account_details = schwab_api.account_details(accountHash=account_hash)

# Fetch price history for Apple stock
price_history = schwab_api.price_history(symbol="AAPL", periodType="day", period=5, frequencyType="minute", frequency=1)
```
