# Transaction Streamer

The `StreamTransactions` method is a gRPC-based stream that returns all transactions on the Solana network in real-time. It supports optional filtering by account addresses.

This method is ideal for users who want access to all observed transactions (or transactions involving specific accounts) for monitoring, analytics, or MEV use cases.

{% hint style="info" %}
The Transaction Streamer can be purchased either as an individual service or part of Elite/Ultra bundle.
{% endhint %}

## Available Endpoints

Select the DNS that corresponds to the region closest to you:

* Amsterdam: `amsterdam.solana-txs.blxrbdn.com:50051`
* Frankfurt: `frankfurt.solana-txs.blxrbdn.com:50051`
* New York: `ny.solana-txs.blxrbdn.com:50051`
* Tokyo: `tokyo.solana-txs.blxrbdn.com:50051`

{% hint style="success" %}
To ensure accurate routing, use a public DNS resolver that supports EDNS Client Subnet (ECS), such as Google DNS (8.8.8.8) or OpenDNS (208.67.222.222 / 208.67.220.220). Resolvers without ECS support (e.g., Cloudflare) may obscure the client ASN, leading to suboptimal routing.
{% endhint %}

## Request

The `StreamTransactions` method is invoked over gRPC using the proto definition available in the [solana-tx-streamer-proto GitHub repository](https://github.com/bloXroute-Labs/solana-tx-streamer-proto).

* **Endpoint:** [select DNS based on region](#available-endpoints)
* **Protocol:** gRPC
* **Encryption:** plaintext
* **Authorization:** Required — pass an `authorization` header

### Parameters

| Name     | Type      | Required | Description                                                                                                                                                                |
| -------- | --------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| accounts | string\[] | No       | Optional list of Solana account addresses (base58). If provided, the stream returns only transactions involving these accounts. If omitted, all transactions are streamed. |

### Headers

<table><thead><tr><th>Header</th><th width="215.654541015625">Value</th><th>Required</th><th>Description</th></tr></thead><tbody><tr><td>authorization</td><td><code>&#x3C;AUTH_HEADER></code></td><td>Yes</td><td>Authorization header</td></tr></tbody></table>

### Example Request, with account filtering

{% tabs %}
{% tab title="grpcurl" %}

```bash
grpcurl \
  -H 'authorization: <AUTH_HEADER>' \
  -proto proto/tx_streamer.proto \
  -d '{
    "accounts": [
      "srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX",
      "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8",
      "5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"
    ]
  }' \
  -plaintext \
  frankfurt.solana-txs.blxrbdn.com:50051 \
  tx_streamer.TxStreamerService/StreamTransactions
```

{% endtab %}
{% endtabs %}

### Example Request, without account filtering (receive all transactions)

```bash
grpcurl \
  -H 'authorization: <AUTH_HEADER>' \
  -proto proto/tx_streamer.proto \
  -plaintext \
  frankfurt.solana-txs.blxrbdn.com:50051 \
  tx_streamer.TxStreamerService/StreamTransactions
```

### Response

| Field Name         | Description                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `signature`        | Transaction signature                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `data`             | Raw transaction bytes in base 64 encoding format                                                                                                                                                                                                                                                                                                                                                                                             |
| `slot`             | Slot number                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `unverified_match` | <p>Boolean flag indicating that the streamer <strong>can</strong> <strong>not precisely confirm</strong> this message matches the provided filter (e.g. <code>accounts</code>).<br>If <code>true</code>, the transaction might still meet the filter condition, but the streamer cannot yet verify it due to incomplete data or timing.<br>If <code>false</code>, the streamer has confirmed the transaction meets the filter condition.</p> |
| `number`           | Index position of this transaction within the block.                                                                                                                                                                                                                                                                                                                                                                                         |

The response is a stream of raw Solana transactions serialized according to the `.proto` schema. These can be parsed using the Solana SDK or other compatible decoding tools. More information about the response message format can be found in the [`tx_streamer.proto`](https://github.com/bloXroute-Labs/solana-tx-streamer-proto/blob/develop/proto/tx_streamer.proto) file.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bloxroute.com/solana/optimized-feed-relay/transaction-streamer.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
