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

# Batch Market Trades

> The tape of up to 200 markets in a single call, since a timestamp - grouped per market, with a per-market row cap. One request replaces a full polling fan-out. Cross-chain; billed per market.

`POST /v1/pools/trades` · **1 per market credit**

The tape of up to 200 markets in a single call, since a timestamp - the response groups trades per market and caps rows per market. One request replaces a whole polling fan-out. Rows are the exact [`/v1/pool/trades`](/endpoints/market-trades) shape. This is a polling endpoint (`from` is bounded to 24h back); page the per-market tape for deep history.

<Note>Results come back in input order, one entry per requested market (`{chain, address, trades}`); a market with no trades in the window returns an empty `trades`. Solana trades are valued at the SOL price at the time of each trade, EVM trades at the current native price: `meta.usdBasis` is `trade` when every requested market is on Solana, `spot` otherwise. Billed per market served: a market that comes back with an `error` costs nothing.</Note>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST 'https://api.serialized.xyz/v1/pools/trades' \
    -H 'Authorization: YOUR_API_KEY' -H 'Content-Type: application/json' \
    -d '{"markets": [{"chain": "evm:8453", "address": "0x0ca6485b7e9cf814a3fd09d81672b07323535b64"}], "from": 1786718000000, "perMarketLimit": 200}'
  ```
</RequestExample>

<ResponseExample>
  ```json Response theme={null}
  {
    "data": [
      {
        "chain": "evm:8453",
        "address": "0x0ca6485b7e9cf814a3fd09d81672b07323535b64",
        "trades": [
          {
            "id": "0x9d6dd98095ebcb254576b23b2269edf8fa984b581404209aa2a5fe3a14431bdf:289",
            "at": 1786718835000,
            "maker": "0x95d955179a7cd45aeef394ed39f6a8d8b1bd1e09",
            "isBuy": true,
            "amountToken": 77.05662024406023,
            "amountQuote": 0.000042612402192036,
            "quoteToken": { "address": "0x4200000000000000000000000000000000000006", "symbol": "WETH", "name": "Wrapped Ether", "decimals": 18 },
            "priceNative": 5.4747124708872e-7,
            "priceUsd": 0.00103052429,
            "volumeNative": 0.000042612402192036,
            "volumeUsd": 0.08021081608014609,
            "feesNative": 0.0000021,
            "isProTrader": false,
            "isSniper": false,
            "isWash": null,
            "preconfirmed": false,
            "txHash": "0x9d6dd98095ebcb254576b23b2269edf8fa984b581404209aa2a5fe3a14431bdf",
            "block": 49964744,
            "logIndex": 289,
            "poolAddress": "0x0ca6485b7e9cf814a3fd09d81672b07323535b64"
          }
        ]
      }
    ],
    "meta": {
      "asOf": 1786718900120,
      "usdBasis": "spot"
    }
  }
  ```
</ResponseExample>


## OpenAPI

````yaml openapi.json POST /v1/pools/trades
openapi: 3.1.0
info:
  title: Serialized Data API
  description: >-
    On-chain data for trading apps - tokens, candles, token filters. Built on
    our own indexers. 18 EVM chains + Solana, live.
  version: 0.1.0
servers:
  - url: https://demo.serialized.xyz
    description: 'Demo: no key needed, read endpoints, rate-limited per IP'
  - url: https://api.serialized.xyz
    description: 'Production: your API key in the Authorization header'
security:
  - apiKey: []
  - {}
paths:
  /v1/pools/trades:
    post:
      summary: Batch Market Trades
      description: >-
        The tape of up to 200 markets in a single call, since a timestamp -
        grouped per market, per-market row cap. One request replaces a full
        polling fan-out.
      operationId: batch-market-trades
      requestBody:
        required: true
        content:
          application/json:
            schema:
              additionalProperties: false
              type: object
              required:
                - markets
                - from
              properties:
                markets:
                  minItems: 1
                  maxItems: 200
                  type: array
                  items:
                    additionalProperties: false
                    type: object
                    required:
                      - chain
                      - address
                    properties:
                      chain:
                        type: string
                      address:
                        type: string
                  description: List of `{chain, address}` pools (up to 200 per call).
                  example:
                    - chain: evm:8453
                      address: 0x...
                  x-default:
                    - chain: evm:8453
                      address: 0x...
                from:
                  minimum: 0
                  description: >-
                    Only trades at/after this time (unix MILLISECONDS, at most
                    24h back; a value in seconds is rejected with 400). Page the
                    per-market tape for history.
                  type: integer
                  example: 1755000000000
                  x-default: 1755000000000
                perMarketLimit:
                  minimum: 1
                  maximum: 500
                  default: 100
                  type: integer
                  description: Rows per market (default 100, max 500).
                  example: 200
                  x-default: 200
      responses:
        '200':
          description: Standard `{ data, meta }` envelope.
components:
  securitySchemes:
    apiKey:
      type: apiKey
      name: Authorization
      in: header
      description: Your raw API key (not needed on the demo server).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.