---
title: Pagination
description: Walk long lists with a cursor, or jump to a page.
url: https://anyrow.ai/docs/pagination
canonical_url: https://anyrow.ai/docs/pagination
last_updated: '2026-10-11'
---

# Pagination

Every list endpoint (tables, rows, batches, webhooks, deliveries) pages the same way.

| Query parameter | What it does |
| :-- | :-- |
| `limit` | Items per page. Defaults to 20; each endpoint caps it (100 for rows) |
| `cursor` | Continue after the previous page: pass its `nextCursor` |
| `page` | A 1-based page number, for jumping. Ignored when `cursor` is set |

The response holds the items under the resource's name (`rows`, `tables`, `batches`) and:

| Field | What it holds |
| :-- | :-- |
| `hasMore` | Whether another page follows |
| `nextCursor` | The cursor for the next page, or `null` on the last one |
| `count` | How many items this page holds |
| `limit`, `page` | The page size and number used |

Prefer the cursor: it stays correct while rows are added, where page numbers shift.

## Read every row

```ts title="Node.js"
const rows = []
let cursor: string | undefined
do {
  const { data } = await anyrow.row.list({
    params: { project_id: projectId, table_id: tableId },
    search: { limit: 100, cursor },
  })
  rows.push(...data.rows)
  cursor = data.nextCursor ?? undefined
} while (cursor)
```

```python title="Python"
rows, cursor = [], None
while True:
    page = requests.get(
        f"https://api.anyrow.ai/v1/projects/{project_id}/tables/{table_id}/rows",
        headers=headers,
        params={"limit": 100, **({"cursor": cursor} if cursor else {})},
    ).json()
    rows += page["rows"]
    cursor = page["nextCursor"]
    if not cursor:
        break
```

```bash title="cURL"
curl "https://api.anyrow.ai/v1/projects/$PROJECT_ID/tables/$TABLE_ID/rows?limit=100" \
  -H "Authorization: ApiKey $ANYROW_API_KEY"
# then add &cursor=<nextCursor> from the response
```

> [!TIP]
> To filter, search or sort rows, add the row list's `filter`, `q` and `order` parameters
> (see [List rows](/docs/api/rows/list)), and send the same ones with each cursor.
