# Batch Quotes

`GET` `/v1/quotes`

Retrieve latest quotes for up to 200 tickers in one request. Pass a comma-separated tickers query parameter (e.g. AAPL,MSFT,NVDA). Each result matches the single-quote schema. This is the efficient choice for watchlists, portfolio views and screeners that need many prices at once without issuing hundreds of parallel requests.

## Use cases

- Watchlist and portfolio mark-to-market
- Batch quote refresh for screeners or heatmaps
- Reducing API calls when displaying many tickers together
- End-of-day or intraday batch analytics pipelines

## Input parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `tickers` | string | Yes | Comma-separated tickers, e.g. AAPL,MSFT,NVDA. |

## Output parameters

| Name | Type | Description |
| --- | --- | --- |
| `results` | array | Quote objects for each requested ticker. |
| `results[].ticker` | string | Ticker. |
| `results[].price` | float | Last price. |
| `results[].change` | float | Dollar change vs previous close. |
| `results[].change_percentage` | float | Percent change vs previous close. |
| `results[].volume` | integer | Session volume. |
| `results[].shares` | integer | Shares outstanding when available. |
| `count` | integer | Number of quotes returned. |

## Example response

```json
{
  "results": [
    {
      "ticker": "AAPL",
      "price": 296.13,
      "change": -19.07,
      "change_percentage": -6.05,
      "volume": 102120.14,
      "day_low": null,
      "day_high": null,
      "open": null,
      "previous_close": 315.2,
      "market_cap": 4356284921340,
      "shares": 14687356000,
      "updated_at": "2026-06-16T09:53:14.094641+00:00"
    },
    {
      "ticker": "MSFT",
      "price": 399.45,
      "change": -41.86,
      "change_percentage": -9.49,
      "volume": 116435.45,
      "day_low": null,
      "day_high": null,
      "open": null,
      "previous_close": 441.31,
      "market_cap": 2966315700000,
      "shares": null,
      "updated_at": "2026-06-16T09:54:34.095974+00:00"
    }
  ],
  "count": 3
}
```

## Examples

### cURL

```bash
curl "https://api.vantafin.com/v1/quotes?tickers=AAPL,MSFT,NVDA&apiKey=$VANTAFIN_API_KEY"
```

### Python

```python
from vantafin import RESTClient

client = RESTClient("vf-live-your_api_key")

result = client.get_quotes(["AAPL", "MSFT", "NVDA"])

print(result)
```

### JavaScript

```javascript
import { RestClient } from "vantafin";

const client = new RestClient("vf-live-your_api_key");

const result = await client.getQuotes(["AAPL", "MSFT", "NVDA"]);

console.log(result);
```

### Go

```go
package main

import (
	"fmt"
	"log"

	"github.com/vantafin/vantafin-go"
)

func main() {
	client := vantafin.NewClient("vf-live-your_api_key")

	result, err := client.GetQuotes([]string{"AAPL", "MSFT", "NVDA"})
	if err != nil {
		log.Fatal(err)
	}

	fmt.Println(result)
}
```

### Java

```java
import com.vantafin.RestClient;
import java.util.List;

public class Example {
    public static void main(String[] args) throws Exception {
        RestClient client = new RestClient("vf-live-your_api_key");

        Object result = client.getQuotes(List.of("AAPL", "MSFT", "NVDA"));

        System.out.println(result);
    }
}
```

### Ruby

```ruby
require "vantafin"

client = Vantafin::RestClient.new("vf-live-your_api_key")

result = client.get_quotes(["AAPL", "MSFT", "NVDA"])

pp result
```
