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

# Batch Get Protocol Product timeseries

> Revenue in USD for one product (version) of a protocol on one blockchain. Each series is one product on one chain, keyed by protocol, product and chain. Shows which deployments generate a protocol's revenue.



## OpenAPI

````yaml api-reference/data-api/openapi.json GET /query/timeseries/protocol-revenue-by-product/{granularity}
openapi: 3.0.0
info:
  description: >-
    The Blockworks Data API is a unified, read-only REST interface to
    Blockworks' warehouse-modeled crypto dataset, powered by Messari's research
    and data infrastructure. It serves two kinds of models: tabular models,
    which return current, filterable, sortable rows for entities such as assets,
    networks, protocols, exchanges, stablecoins, and ETFs; and timeseries
    models, which return historical metric series at a chosen granularity for
    one or many entities. Every endpoint shares the same query grammar (column
    projection, per-column filters, sorting, and pagination) and returns the
    standard `{ "error": ..., "data": ... }` envelope. Authenticate by sending
    your API key in the `X-Blockworks-API-Key` header.
  title: Blockworks Data API
  version: 0.1.0
servers:
  - description: Blockworks API
    url: https://api.blockworks.com
security:
  - apiKey: []
tags:
  - description: >-
      Models documented under Agentic Payments: Agentic Payments (table),
      Agentic Payments (timeseries).
    name: Agentic Payments
  - description: >-
      Models documented under Assets: Assets (table), Asset Marketcap
      (timeseries), Asset Price (timeseries), Asset Sharpe (timeseries), Asset
      Supply (timeseries), Asset Volatility (timeseries).
    name: Assets
  - description: >-
      Models documented under Blockchains: Blockchains (table), Blockchains
      (timeseries).
    name: Blockchains
  - description: >-
      Models documented under Bridge Protocols: Bridge Protocol Networks
      (table), Bridge Protocols (table), Bridge Protocols (timeseries), Bridge
      Protocols by Network (timeseries).
    name: Bridge Protocols
  - description: >-
      Models documented under Bridged Bitcoin: Bridged Bitcoin Chains (table),
      Bridged Bitcoin Deployments (table), Bridged Bitcoin Issuers (table),
      Bridged Bitcoin Products (table), Bridged Bitcoin by Chain (timeseries),
      Bridged Bitcoin by Deployment (timeseries), Bridged Bitcoin by Issuer
      (timeseries), Bridged Bitcoin by Product (timeseries).
    name: Bridged Bitcoin
  - description: >-
      Models documented under Centralized Finance: CeFi Balances and Flows
      (table), CeFi Balances and Flows (timeseries).
    name: Centralized Finance
  - description: >-
      Models documented under Collateralized Debt Positions (CDPs): CDP Market
      Balances (table), CDP Market Financials (table), CDP Market Interest Rates
      (table), CDP Market Liquidations (table), CDP Market Balances
      (timeseries), CDP Market Financials (timeseries), CDP Market Interest
      Rates (timeseries), CDP Market Liquidations (timeseries).
    name: Collateralized Debt Positions (CDPs)
  - description: >-
      Models documented under DEX Aggregators: DEX Aggregator Volumes (table),
      DEX Aggregator Volumes (timeseries).
    name: DEX Aggregators
  - description: >-
      Models documented under Derivatives: Perpetual Market Funding Rates
      (table), Perpetual Markets (table), Perpetual Market Funding Rates
      (timeseries), Perpetual Markets (timeseries).
    name: Derivatives
  - description: >-
      Models documented under Digital Asset Treasury Companies: DAT Companies
      (table), DAT Company Assets (table), DAT Companies (timeseries), DAT
      Companies by Asset (timeseries).
    name: Digital Asset Treasury Companies
  - description: >-
      Models documented under ETFs: ETF Assets (table), ETF Providers (table),
      ETF Assets (timeseries), ETF Providers (timeseries).
    name: ETFs
  - description: >-
      Models documented under Exchanges: Exchange Country (timeseries), Exchange
      Region (timeseries), Exchange Type (timeseries), Exchanges (timeseries).
    name: Exchanges
  - description: >-
      Models documented under Fundraising: Acquisition Deals (table), Fund
      Managers (table), Funding Round Investors (table), Funding Rounds (table),
      Funds (table), Sector Fundraising (timeseries).
    name: Fundraising
  - description: >-
      Models documented under Institutional Allocators: Institutional Allocator
      Balances (table), Institutional Allocator Financials (table),
      Institutional Allocator Performances (table), Institutional Allocator
      Balances (timeseries), Institutional Allocator Financials (timeseries),
      Institutional Allocator Performances (timeseries).
    name: Institutional Allocators
  - description: >-
      Models documented under Launchpads: Launchpad Chains (table), Launchpads
      (table), Launchpads (timeseries), Launchpads by Chain (timeseries).
    name: Launchpads
  - description: >-
      Models documented under Lending Protocols: Lending Market Balances
      (table), Lending Market Financials (table), Lending Market Flows (table),
      Lending Market Interest Rates (table), Lending Market Liquidations
      (table), Lending Protocol Product Markets (table), Lending Protocol
      Products (table), Lending Protocols (table), Lending Market Balances
      (timeseries), Lending Market Financials (timeseries), Lending Market Flows
      (timeseries), Lending Market Interest Rates (timeseries), Lending Market
      Liquidations (timeseries), Lending Protocols (timeseries), Lending
      Protocols by Product (timeseries), Lending Protocols by Product Market
      (timeseries).
    name: Lending Protocols
  - description: >-
      Models documented under Markets: Markets (table), Market (BQEN)
      (timeseries).
    name: Markets
  - description: >-
      Models documented under Mindshare & Sentiment: Asset Group Sentiment
      (timeseries), Asset Investor Mentions (timeseries), Asset Mindshare
      (timeseries), Asset Sentiment (timeseries), Project Mindshare
      (timeseries), Sector Asset Mindshare (timeseries), Sector Asset Sentiment
      (timeseries), Sector Investor Mentions (timeseries), Sub-Sector Asset
      Mindshare (timeseries), Sub-Sector Asset Sentiment (timeseries).
    name: Mindshare & Sentiment
  - description: 'Models documented under News: News Feed (table), Topics (timeseries).'
    name: News
  - description: >-
      Models documented under Payment Cards: Payment Card Accounts (table),
      Payment Card Balances (table), Payment Card Spending (table), Payment Card
      Accounts (timeseries), Payment Card Balances (timeseries), Payment Card
      Spending (timeseries).
    name: Payment Cards
  - description: >-
      Models documented under Peg Stability: Peg Stability Backings (table), Peg
      Stability Facilities (table), Peg Stability Backings (timeseries), Peg
      Stability Facilities (timeseries).
    name: Peg Stability
  - description: >-
      Models documented under Perp DEX Protocols: Perp DEX Protocols (table),
      Perp DEX Protocols (timeseries).
    name: Perp DEX Protocols
  - description: >-
      Models documented under Privacy: Privacy Flows and Balances (table),
      Privacy Flows and Balances (timeseries).
    name: Privacy
  - description: >-
      Models documented under Project Financials: Project Expenses (table),
      Project Income Statements (table), Project Revenue (table), Project
      Tokenholder Distributions (table), Project Expenses (timeseries), Project
      Income Statements (timeseries), Project Revenue (timeseries), Project
      Tokenholder Distributions (timeseries), Protocol Revenue (timeseries),
      Protocol Revenue by Product (timeseries).
    name: Project Financials
  - description: >-
      Models documented under Projects: Project Tokens (table), Project Users
      (table), Project Tokens (timeseries), Project Users (timeseries), Projects
      (timeseries).
    name: Projects
  - description: >-
      Models documented under Real World Assets: RWA Categories (table), RWA
      Chains (table), RWA Deployments (table), RWA Issuers (table), RWA Products
      (table), RWA Spot DEX Segments (table), RWA by Category (timeseries), RWA
      by Chain (timeseries), RWA by Deployment (timeseries), RWA by Issuer
      (timeseries), RWA by Product (timeseries), RWA Spot DEX Activity
      (timeseries).
    name: Real World Assets
  - description: >-
      Models documented under Research Reports (Tabular): Research Reports
      (table).
    name: Research Reports (Tabular)
  - description: >-
      Models documented under Savings: Savings Balances (table), Savings
      Financials (table), Savings Performances (table), Savings Balances
      (timeseries), Savings Financials (timeseries), Savings Performances
      (timeseries).
    name: Savings
  - description: >-
      Models documented under Sector Market Data: Sector Marketdata
      (timeseries), Sub-Sector Marketdata (timeseries).
    name: Sector Market Data
  - description: >-
      Models documented under Spot DEX Protocols: Spot DEX Liquidity Balances
      (table), Spot DEX Protocol Chains (table), Spot DEX Protocols (table),
      Spot DEX Liquidity Balances (timeseries), Spot DEX Protocols (timeseries),
      Spot DEX Protocols by Chain (timeseries).
    name: Spot DEX Protocols
  - description: >-
      Models documented under Stablecoins: Stablecoin Chains (table), Stablecoin
      Currencies (table), Stablecoin Deployments (table), Stablecoin FX Pairs
      (table), Stablecoin Issuers (table), Stablecoin Products (table),
      Stablecoin Reserve Entities (table), Stablecoin FX (timeseries),
      Stablecoin Reserves (timeseries), Stablecoins by Chain (timeseries),
      Stablecoins by Currency (timeseries), Stablecoins by Deployment
      (timeseries), Stablecoins by Issuer (timeseries), Stablecoins by Product
      (timeseries).
    name: Stablecoins
  - description: >-
      Models documented under TCG Platforms: TCG Platform Chains (table), TCG
      Platforms by Chain (timeseries), TCG Platforms by Deployment (timeseries).
    name: TCG Platforms
  - description: >-
      Discovery of the tabular models: one row per entity, with per-column
      filters, sorting and pagination.
    name: Tabular
  - description: >-
      Discovery of the timeseries models: one series per entity, as points at
      the granularities each model declares.
    name: Timeseries
  - description: 'Models documented under Real-time Buybacks: Asset Buybacks (timeseries).'
    name: Real-time Buybacks
  - description: >-
      Models documented under Token Transparency: Token Transparency Filing
      Questions (table), Token Transparency Filing Schemas (table), Token
      Transparency Filings (table), Token Transparency Projects (table).
    name: Token Transparency
  - description: 'Models documented under Token Unlocks: Token Unlocks (timeseries).'
    name: Token Unlocks
  - description: >-
      Models documented under Tokenized Commodities: Tokenized Commodities
      (table), Tokenized Commodity Chains (table), Tokenized Commodity Issuers
      (table), Tokenized Commodity Products (table), Tokenized Commodities by
      Chain (timeseries), Tokenized Commodities by Commodity (timeseries),
      Tokenized Commodities by Issuer (timeseries), Tokenized Commodities by
      Product (timeseries).
    name: Tokenized Commodities
  - description: >-
      Models documented under Tokenized Equities: Tokenized Equities (table),
      Tokenized Equity Chains (table), Tokenized Equity Issuers (table),
      Tokenized Equity Products (table), Tokenized Equities by Chain
      (timeseries), Tokenized Equities by Equity (timeseries), Tokenized
      Equities by Issuer (timeseries), Tokenized Equities by Product
      (timeseries).
    name: Tokenized Equities
  - description: >-
      Models documented under Tokens: Token Labels (table), Token Metrics
      (table), Token Metrics (timeseries).
    name: Tokens
  - description: >-
      Models documented under Vaults: Vault Balances (table), Vault Chains
      (table), Vault Curators (table), Vault Financials (table), Vault Flows
      (table), Vault Performances (table), Vault Protocols (table), Vault
      Balances (timeseries), Vault Curators (timeseries), Vault Financials
      (timeseries), Vault Flows (timeseries), Vault Performances (timeseries),
      Vault Protocols (timeseries), Vaults by Chain (timeseries).
    name: Vaults
  - description: >-
      Models documented under Wholesale Credit: Wholesale Credit Balances
      (table), Wholesale Credit Financials (table), Wholesale Credit Interest
      Rates (table), Wholesale Credit Balances (timeseries), Wholesale Credit
      Financials (timeseries), Wholesale Credit Interest Rates (timeseries).
    name: Wholesale Credit
paths:
  /query/timeseries/protocol-revenue-by-product/{granularity}:
    get:
      tags:
        - Project Financials
      summary: Batch Get Protocol Product timeseries
      description: >-
        Revenue in USD for one product (version) of a protocol on one
        blockchain. Each series is one product on one chain, keyed by protocol,
        product and chain. Shows which deployments generate a protocol's
        revenue.
      operationId: getTimeseries_protocol_revenue_by_product
      parameters:
        - description: Data granularity.
          in: path
          name: granularity
          required: true
          schema:
            enum:
              - 1d
            type: string
        - description: >-
            Comma-separated Protocol Product Chain ID values naming the series
            to return (up to 10). Required: this model has too many series to
            return at once.
          in: query
          name: series
          required: true
          schema:
            type: string
        - description: >-
            Time window, one of: to-date (ytd, qtd, mtd, dtd, htd); relative,
            <n> followed by m, h, d or w (30d, 12h, 4w; 1y and 1M are not
            accepted, use 365d, 52w, ytd or a calendar year); a calendar day
            (YYYY-MM-DD), month (YYYY-MM) or year (YYYY); or an RFC3339 instant,
            which runs from then to now. Mutually exclusive with start/end.
            Optional: with no window at all the query runs from the beginning of
            the data to now, which is only served where it fits the cap of 9000
            points of the requested granularity, so a window is in practice
            required at fine granularities.
          in: query
          name: timeframe
          schema:
            type: string
        - description: >-
            Window start, inclusive (RFC3339, unix seconds, or YYYY-MM-DD).
            Optional; defaults to the beginning of the data.
          in: query
          name: start
          schema:
            type: string
        - description: >-
            Window end, exclusive (RFC3339, unix seconds, or YYYY-MM-DD).
            Optional; defaults to now.
          in: query
          name: end
          schema:
            type: string
        - description: >-
            If true, return only the first and last point of the resolved time
            window instead of every point in it. A bounds request is exempt from
            the 9000-point maximum, since it returns at most two points per
            series however wide the window is.
          in: query
          name: bounds
          schema:
            type: boolean
        - description: >-
            Comma-separated metric fields to return; defaults to every metric. A
            point always leads with its timestamp, and the values that follow
            are described by point_schema in catalog order regardless of the
            order requested here.
          in: query
          name: selections
          schema:
            items:
              enum:
                - revenue-usd
              type: string
            type: array
        - description: >-
            Response format, overriding the Accept header: json (default), csv,
            or jsonl (NDJSON). csv and jsonl return the rows as a downloadable
            file.
          in: query
          name: acceptFormat
          schema:
            default: json
            enum:
              - json
              - csv
              - jsonl
            type: string
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                  point_schema:
                    - description: Timestamp of the data point.
                      field: time
                      name: Time
                      time: true
                      type: time
                    - description: >-
                        Daily revenue in USD for this product on a chain. Covers
                        apps and networks. App rows contain modeled app revenue.
                        Network rows may contain Real Economic Value
                        (transaction fees plus MEV tips before costs or revenue
                        sharing) or another measure, such as THORChain's
                        swap-fee revenue.
                      field: revenue-usd
                      name: Revenue (USD)
                      time: false
                      type: float64
                  series:
                    - entity:
                        name: <name>
                        protocolName: <protocolName>
                        protocolSlug: <protocolSlug>
                        slug: <slug>
                      key: <Protocol Product Chain ID>
                      points:
                        - - 1704067200
                          - 123.45
                error: null
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/ProtocolRevenueByProductData'
                  error:
                    nullable: true
                    type: string
                required:
                  - data
                type: object
            application/x-ndjson:
              schema:
                description: JSON Lines (NDJSON); one JSON object per line.
                type: string
            text/csv:
              schema:
                description: CSV with a header row; one row per record.
                type: string
          description: Timeseries points for each series.
        '400':
          content:
            application/json:
              example:
                data: null
                error: 'too many series requested: 11 exceeds the maximum of 10'
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            The request is malformed: no time window (timeframe, or start with
            an optional end -- an end alone does not bound one), a time window
            spanning more than 9000 points of the requested granularity, an
            empty, duplicated or too long series list (at most 10 keys), an
            unknown query parameter, an unrecognized timeframe (1y and 1M are
            not accepted; use 365d, 52w, ytd or a calendar year), timeframe
            combined with start or end, an unknown selections field, or an
            invalid bounds or acceptFormat value.
        '401':
          content:
            application/json:
              example:
                data: null
                error: this model requires authentication
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: No API key was sent and the model requires one.
        '402':
          content:
            application/json:
              example:
                data: null
                error: >-
                  You are out of credits (balance 0). Do not retry this request.
                  Visit https://app.blockworks.com/account/api to see balance
                  and get more credits.
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            The caller's credit balance cannot cover this request. Not worth
            retrying until they hold more credits. The message distinguishes a
            spent balance from an account that never claimed its grant, and is
            written for an MCP client to relay to a model.
        '403':
          content:
            application/json:
              example:
                data: null
                error: >-
                  this model requires the "protocol-revenue-dataset" permission;
                  see https://app.blockworks.com/account/api for the public API
                  permissions you hold
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            The API key is not valid, or does not hold the
            "protocol-revenue-dataset" permission.
        '404':
          content:
            application/json:
              example:
                data: null
                error: >-
                  the all-series endpoint is not available for model
                  "protocol-revenue-by-product"; request specific series via
                  ?series or a series-key path
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            The series parameter was omitted: this model does not return every
            series at once, so name the ones you want. Also returned when the
            path names a model that does not exist or a granularity the model is
            not available at.
        '503':
          content:
            application/json:
              example:
                data: null
                error: >-
                  the credit service is temporarily unavailable and this request
                  was refused without charge; retry in a moment
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: >-
            The credit service could not be reached, so the request was refused
            without charge. Retry in a moment.
components:
  schemas:
    ProtocolRevenueByProductData:
      properties:
        point_schema:
          items:
            properties:
              description:
                type: string
              field:
                type: string
              name:
                type: string
              time:
                type: boolean
              type:
                type: string
              unit:
                description: What the value is denominated in. Absent for a plain number.
                enum:
                  - usd
                  - btc
                  - sats
                  - eth
                  - gwei
                  - native-token
                  - percent
                  - count
                  - ratio
                type: string
            type: object
          type: array
        series:
          items:
            properties:
              entity:
                description: >-
                  Information about what the series key identifies, from the
                  "protocol-revenue-products" model.
                properties:
                  name:
                    description: >-
                      The display name of the product (bwr product name when
                      present).
                    nullable: true
                    type: string
                  protocolName:
                    description: The Directus protocol name mapped to the product.
                    nullable: true
                    type: string
                  protocolSlug:
                    description: The Directus protocol slug mapped to the product.
                    nullable: true
                    type: string
                  slug:
                    description: The Directus project slug of the parent protocol.
                    nullable: true
                    type: string
                type: object
              key:
                type: string
              points:
                items:
                  description: >-
                    A unix timestamp (seconds) followed by the metric values, in
                    point_schema order.
                  items:
                    nullable: true
                    type: number
                  type: array
                type: array
            type: object
          type: array
        unknown_series:
          description: >-
            Requested series keys that returned no points and match no entity,
            so are likely mistyped or guessed. A key that matches an entity but
            has no points is missing data and is not listed. Omitted when there
            are none.
          items:
            properties:
              key:
                type: string
              suggestions:
                description: >-
                  Up to 3 series keys whose key or "protocol-revenue-products"
                  fields contain the requested key, best match first. Empty when
                  nothing matches.
                items:
                  properties:
                    entity:
                      description: >-
                        Information about what the series key identifies, from
                        the "protocol-revenue-products" model.
                      properties:
                        name:
                          description: >-
                            The display name of the product (bwr product name
                            when present).
                          nullable: true
                          type: string
                        protocolName:
                          description: The Directus protocol name mapped to the product.
                          nullable: true
                          type: string
                        protocolSlug:
                          description: The Directus protocol slug mapped to the product.
                          nullable: true
                          type: string
                        slug:
                          description: The Directus project slug of the parent protocol.
                          nullable: true
                          type: string
                      type: object
                    key:
                      type: string
                  required:
                    - key
                  type: object
                type: array
            required:
              - key
              - suggestions
            type: object
          type: array
      required:
        - point_schema
        - series
      type: object
    ErrorResponse:
      properties:
        data:
          description: Always null on an error.
          nullable: true
          type: object
        error:
          description: What went wrong, in one sentence.
          type: string
      required:
        - error
        - data
      type: object
  securitySchemes:
    apiKey:
      description: >-
        API key sent in the `X-Blockworks-API-Key` header; `x-messari-api-key`
        is accepted for existing integrations. The catalog endpoints and models
        open to everyone need no key.
      in: header
      name: X-Blockworks-API-Key
      type: apiKey

````

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