Skip to main content
fields says which columns to return for each row type. You get only what you select.
  • The keys are singular (log, transaction, block), unlike the plural filter keys (logs, transactions).
  • Names are camelCase in the request and come back snake_case in the response: blockNumber → block_number, gasUsed → gas_used. The TypeScript client returns rows under the camelCase names, and the Python client also accepts snake_case names in queries; see Clients.
  • An unknown field name is a 400 naming it, so a typo can’t silently drop a column.
  • Setting a field to false is the same as leaving it out.
  • If you filter a row type but select none of its fields, that’s a 400 (no fields selected for logs).
The full lists, with types and descriptions, are in the field reference: logs, transactions, blocks.

Fields worth knowing

Select only what you use

You’re billed by the bytes of the rows you receive, so every column you don’t need costs money and time. Some fields are much larger than others:
For a transfer you usually need topic1, topic2 and data. You already know topic0 (you filtered on it) and topic3 is always null for ERC-20 Transfer. Leaving those two out makes each row 64 bytes smaller.

Same fields on every chain

Every field can be selected on every chain. If a chain doesn’t have a field (Arbitrum fields on Ethereum, withdrawals on Robinhood Chain), the column is all null and listed in unavailable_fields. One request shape works across chains. See Fields a chain doesn’t have.