Paginate Through Results
Endpoints the venue paginates get a <method>_paged async-iterator sibling beside the
single-request method, on the same router.
Window Pagination
market_data.get_mark_price_history walks a start_timestamp/end_timestamp window
forward by its own width until a page comes back empty:
from datetime import datetime, timezone
from typed_deribit import Deribit
async with Deribit.new(public=True) as client:
async for page in client.http.market_data.get_mark_price_history_paged(
instrument_name='BTC-PERPETUAL',
start_timestamp=datetime(2023, 11, 14, 22, 13, 20, tzinfo=timezone.utc),
end_timestamp=datetime(2023, 11, 14, 23, 13, 20, tzinfo=timezone.utc),
max_pages=5,
):
for mark_price, timestamp in page:
print(timestamp, mark_price)max_pages stops the walk early; omit it to walk the whole range.
Offset Pagination
wallet.deposits.get_deposits pages by count/offset:
from typed_deribit import Deribit
async with Deribit.new(testnet=True) as client:
async for page in client.http.wallet.deposits.get_deposits_paged(
currency='BTC', count=10,
):
for deposit in page['data']:
print(deposit['transaction_id'], deposit['amount'])Both variants yield exactly what the single-request method returns, one page at a time — the single-request method itself is always still there for a one-shot call.
Token Pagination
account.get_transaction_log and seven other endpoints (get_block_rfq_trades,
get_apr_history, get_last_settlements_by_currency/_by_instrument,
list_address_beneficiaries, ...) walk a continuation token until the venue stops sending
one. Their _paged sibling returns a PaginatedResponse rather than a plain async
iterator — usable either as async for (one page's rows at a time, not the whole
response) or as an await, which flattens every page into a single list:
from datetime import datetime, timezone
from typed_deribit import Deribit
async with Deribit.new(testnet=True) as client:
paged = client.http.account.get_transaction_log_paged(
currency='BTC',
start_timestamp=datetime(2025, 8, 8, 20, 15, 12, tzinfo=timezone.utc),
end_timestamp=datetime(2026, 8, 8, 20, 15, 12, tzinfo=timezone.utc),
count=10,
)
# one page (a list of rows) at a time:
async for rows in paged:
for entry in rows:
print(entry['id'], entry['timestamp'], entry.get('cashflow'))
# or flatten every page into one list:
all_entries = await client.http.account.get_transaction_log_paged(
currency='BTC',
start_timestamp=datetime(2025, 8, 8, 20, 15, 12, tzinfo=timezone.utc),
end_timestamp=datetime(2026, 8, 8, 20, 15, 12, tzinfo=timezone.utc),
count=10,
)Unlike Window/Offset pagination, there's no max_pages — the walk stops on its own once
the venue sends no further continuation token.