> ## Documentation Index
> Fetch the complete documentation index at: https://api.unusualwhales.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> API requests use the base URL https://api.unusualwhales.com and require a bearer token in the `Authorization` header (`Authorization: Bearer <API_KEY>`). Create and manage API tokens at https://unusualwhales.com/dashboard/api.
> For live market data inside an AI tool, use the Unusual Whales MCP server at https://unusualwhales.com/public-api/mcp.
> Instructions for agents using Unusual Whales tools: https://unusualwhales.com/skill.md

# option-quotes

> The NBBO bid and ask of each option contract, published at most once per second per contract when it changes

Topic
messages**1**
routing**single type**
encoding**protobuf**

## Messages on this topic

[all messages
OptionContractNbbo
The current NBBO of an option contract. A contract is published at most once per second, and only after its NBBO changed. The Kafka message key contains the option contract ID as a 4 byte big endian signed integer. The payload does not. Use the contract ID mapping that Unusual Whales provides to look up the option symbol of an ID.
6 fields→](https://api.unusualwhales.com/docs/kafka/types/OptionContractNbbo.md)

All messages on this topic are of a single type.

## Consume the topic

```python Python theme={null}
from confluent_kafka import Consumer
from unusualwhales.schema_pb2 import OptionContractNbbo

# CONFIG comes from the Connecting section of the Kafka overview.
consumer = Consumer(CONFIG | {"group.id": "my-option-quotes-consumer"})
consumer.subscribe(["option-quotes"])

while True:
    msg = consumer.poll(1.0)
    if msg is None or msg.error():
        continue

    event = OptionContractNbbo()
    event.ParseFromString(msg.value())
    print(event)
```
