# Pagination All top-level API resources have support for bulk fetches through “list” API methods. For example, you can [list charges](https://docs.stripe.com/api/charges/list.md), [list customers](https://docs.stripe.com/api/customers/list.md), and [list invoices](https://docs.stripe.com/api/invoices/list.md). These list API methods share a common structure and accept, at a minimum, the following three parameters: `limit`, `starting_after`, and `ending_before`. Stripe’s list API methods use cursor-based [pagination](https://docs.stripe.com/pagination.md) through the `starting_after` and `ending_before` parameters. Both parameters accept an existing object ID value (see below) and return objects in reverse chronological order. The `ending_before` parameter returns objects listed before the named object. The `starting_after` parameter returns objects listed after the named object. These parameters are mutually exclusive. You can use either the `starting_after` or `ending_before` parameter, but not both simultaneously. Our client libraries offer [auto-pagination helpers](https://docs.stripe.com/pagination.md#auto-pagination) to traverse all pages of a list. ## Parameters - `limit` (optional, default is 10) This specifies a limit on the number of objects to return, ranging between 1 and 100. - `starting_after` (optional object ID) A cursor to use in pagination. `starting_after` is an object ID that defines your place in the list. For example, if you make a list request and receive 100 objects, ending with `obj_foo`, your subsequent call can include `starting_after=obj_foo` to fetch the next page of the list. - `ending_before` (optional object ID) A cursor to use in pagination. `ending_before` is an object ID that defines your place in the list. For example, if you make a list request and receive 100 objects, starting with `obj_bar`, your subsequent call can include `ending_before=obj_bar` to fetch the previous page of the list. ## List Response Format - `object` (string, value is "list") A string that provides a description of the object type that returns. - `data` (array) An array containing the actual response elements, paginated by any request parameters. - `has_more` (boolean) Whether or not there are more elements available after this set. If `false`, this set comprises the end of the list. - `url` (url) The URL for accessing this list. ## v2 API pagination APIs within the `/v2` namespace contain a different [pagination](https://docs.stripe.com/api-v2-overview.md#list-pagination) interface than the `v1` namespace. ### Response ```json { "object": "list", "url": "/v1/customers", "has_more": false, "data": [ { "id": "cus_4QFJOjw2pOmAGJ", "object": "customer", "address": null, "balance": 0, "created": 1405641735, "currency": "usd", "default_source": "card_14HOpG2eZvKYlo2Cz4u5AJG5", "delinquent": false, "description": "New customer", "discount": null, "email": null, "invoice_prefix": "7D11B54", "invoice_settings": { "custom_fields": null, "default_payment_method": null, "footer": null, "rendering_options": null }, "livemode": false, "metadata": { "order_id": "6735" }, "name": "cus_4QFJOjw2pOmAGJ", "next_invoice_sequence": 25, "phone": null, "preferred_locales": [], "shipping": null, "tax_exempt": "none", "test_clock": null }, ] } ```