Pagination (Prisma ORM v7) (/docs/orm/v7/prisma-client/queries/pagination)
For the complete Prisma documentation index, see llms.txt. A markdown version of any docs page is available by appending
.mdto its URL.
Learn how to paginate Prisma Client query results with offset pagination and cursor-based pagination.
Location: ORM > v7 > Prisma Client > Queries > Pagination
Prisma Client supports both offset pagination and cursor-based pagination.
Offset pagination
Section titled “Offset pagination”Use skip and take when you need page numbers or shallow navigation through a result set:
const posts = await prisma.post.findMany({
skip: 20,
take: 10,
});Offset pagination is straightforward, but it becomes more expensive as the offset grows.
Cursor-based pagination
Section titled “Cursor-based pagination”Use cursor and take when you want stable, scalable pagination for feeds, timelines, or large datasets:
const firstPage = await prisma.post.findMany({
take: 10,
orderBy: {
id: "asc",
},
});
const lastPost = firstPage[firstPage.length - 1];
const nextPage = lastPost
? await prisma.post.findMany({
take: 10,
skip: 1,
cursor: {
id: lastPost.id,
},
orderBy: {
id: "asc",
},
})
: [];Which approach to choose
Section titled “Which approach to choose”- Use offset pagination when users need to jump directly to a numbered page.
- Use cursor-based pagination when you care more about performance and consistency as the dataset grows.
Related pages
Section titled “Related pages”Related pages
Section titled “Related pages”Aggregation, grouping, and summarizing: Use Prisma Client to aggregate, group by, count, and select distinct.CRUD: Learn how to perform create, read, update, and delete operationsExcluding fields: Learn how to exclude fields from Prisma Client results with the omit option.Filtering and sorting: Learn how to filter Prisma Client queries with where and sort results with orderBy.Full-text search: Learn how to search text fields with Prisma Client using your database's native full-text search support.