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

# Bloklake

> Historical and live blockchain data over HTTP. Filter logs, transactions and blocks across any block range and get exactly the columns you ask for, as Apache Arrow or JSON.

Bloklake is an API for reading blockchain history fast. You describe **what** you want (logs from
these contracts with these topics, transactions to these addresses, every block in a range) and
**which columns** you want, and Bloklake streams back exactly those rows, in block order, from
the chain's first block up to its head.

It is built for the jobs that are slow and expensive over JSON-RPC:

* **Backfills and indexers**: read every `Transfer` of a token since deployment in minutes, not
  days of `eth_getLogs` pagination.
* **Analytics and data pipelines**: pull columnar data straight into pandas, Polars, DuckDB or
  Spark through Apache Arrow, with no hex parsing.
* **Wallet and contract activity**: every transaction from or to a set of addresses, with their
  logs, over any range.
* **Following the chain**: the same query keeps working at the tip, with finality information
  so you can handle reorgs correctly.

```bash theme={null}
curl https://api.bloklake.com/v1/chains/eth/query/json \
  -H "Authorization: Bearer $BLOKLAKE_API_KEY" \
  -H 'content-type: application/json' \
  -d '{
    "fromBlock": 19426000,
    "toBlock": 19426009,
    "logs": [{"address": ["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],
              "topic0": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]}],
    "fields": {"log": {"blockNumber": true, "transactionHash": true, "topic1": true, "topic2": true, "data": true}}
  }'
```

That is every USDC transfer in ten Ethereum blocks: 72 rows, one request.

> [card] [Quickstart](https://docs.bloklake.com/quickstart.md)
>
> Get a key and make your first query in five minutes.

> [card] [Client libraries](https://docs.bloklake.com/clients.md)
>
> TypeScript, Python and Rust: typed queries, Arrow on the wire, JSON rows out.

> [card] [Core concepts](https://docs.bloklake.com/concepts.md)
>
> Row types, filters, streams, pagination and finality on one page.

> [card] [Arrow or JSON?](https://docs.bloklake.com/responses/arrow-vs-json.md)
>
> Which response format to use, and why Arrow is cheaper.

> [card] [Pricing](https://docs.bloklake.com/billing/pricing.md)
>
> You pay for the data you receive. Nothing else.

## Chains

| Chain | URL | Served from |
| - | - | - |
| Ethereum mainnet | `https://api.bloklake.com/v1/chains/eth` | genesis |
| Robinhood Chain | `https://api.bloklake.com/v1/chains/rh` | genesis |

See [Chains](https://docs.bloklake.com/chains/overview.md) for block times, finality and which fields each chain has. Live
status (latest block, finalized block) is on the
[chain status page](https://dashboard.bloklake.com/chains).

## What Bloklake is not

Bloklake answers one kind of question extremely well: *"give me the rows of this type whose
indexed fields match these values, in this block range"*. It is not a SQL database and not a
JSON-RPC node:

* You can filter logs by `address` and `topic0`–`topic3`, and transactions by `from`, `to`,
  `sighash`, `status` and `type`. Other fields can be returned but not filtered on.
* There is no state (balances, storage, `eth_call`) and no traces.
* There are no aggregations or joins beyond [`joinTransactions`](https://docs.bloklake.com/querying/join-transactions).

If you need those, use Bloklake to get the raw rows quickly and do the rest in your own
database. [Export to Parquet](https://docs.bloklake.com/guides/export-to-parquet.md) shows the pattern.


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