# Paging

Every list takes limit and cursor.

```json
"meta": {
  "page": {
    "limit": 100,
    "hasMore": true,
    "nextCursor": "eyJvIjoxMDAs…"
  },
  "next": "/v1/gpu/prices?limit=100&cursor=eyJvIjoxMDAs…"
}
```

```python
url = "/v1/gpu/prices?limit=100"
while url:
    page = get(url)
    rows += page["data"]["rows"]
    url = page["meta"]["next"]
```

- Request `meta.next` until it is null.
- Without `limit`, a route reads its default page size, listed in the reference.
- A cursor belongs to its query. Change a filter and start again; `limit` may change between pages.
- A cursor from another query is a free `400 cursor_invalid`.
- Search and SEC lists stop 5,000 rows deep. Narrow the query to reach older rows.
- Routes that do not page answer `"page": null`.

- [Previous Credits and limits](https://gloom.sh/datasets/docs/credits)
- [Next Errors](https://gloom.sh/datasets/docs/errors)
