Getting started

Pagination

List endpoints return a pagination object in the common envelope. Some endpoints return total: null — use hasMore and nextOffset, plus cursor where documented, instead of assuming a known total.

  • 7Fields on the object
  • hasMoreThe loop condition
  • nullTotal, when it is unknown

The pagination object

List responses

It sits beside data in the same envelope every endpoint returns, and is null on responses that are not lists.

Paginated response · syntheticjson
{  "success": true,  "data": {    "items": [      {        "id": "synthetic-item-01",        "label": "Synthetic result"      }    ],    "count": 1,    "total": null  },  "pagination": {    "offset": 0,    "limit": 10,    "returned": 1,    "total": null,    "hasMore": true,    "nextOffset": 10,    "cursor": null  },  "meta": {    "operation": "search_v2_companies",    "input": {      "keywords": "business software",      "offset": 0,      "limit": 10    }  }}

Fields

From the spec

Derived from the V2Pagination schema in openapi.json.

offset
integer | nullOffset used for this response page. First-page responses usually use 0.
limit
integer | nullRequested page size for this response. LinkedIn may return fewer items.
returned
integerNumber of items returned in this response.
total
integer | nullTotal visible items when LinkedIn exposes it. Search totals can be capped.
hasMore
booleanWhether another page is likely available. Use `nextOffset` or `cursor` with the same endpoint and filters to request it.
nextOffset
integer | nullOffset for the next page when offset pagination is available. Pass it back as the `offset` query parameter.
cursor
string | nullCursor/token for the next page when cursor pagination is available. Pass this exact value back as the `cursor` query parameter.

Rules

Client loop
  • Start with offset=0 or omit offset for the first page when supported.
  • When pagination.hasMore is true, request the next page with pagination.nextOffset when it is present.
  • If pagination.cursor is returned, pass that exact cursor value back with the same endpoint and filters — offset and cursor values are not interchangeable.
  • Use a bounded page or item limit for demos and background jobs.

Code samples

TypeScript
Offset loopts
let offset = 0;const limit = 10;let hasMore = true;while (hasMore) {  const url = new URL("https://api.envoapi.com/api/v2/search/companies");  url.search = new URLSearchParams({    keywords: "revenue operations",    limit: String(limit),    offset: String(offset),  });  const res = await fetch(url, {    headers: { "X-API-Key": process.env.ENVO_API_KEY ?? "" },  });  const body = await res.json();  hasMore = Boolean(body.pagination?.hasMore);  offset = body.pagination?.nextOffset ?? offset + limit;  if (offset > 100) break; // Use a bounded page or item limit.}
Cursor requestts
const url = new URL("https://api.envoapi.com/api/v2/profiles/avery-chen-synthetic/posts");url.search = new URLSearchParams({  limit: "10",  cursor: "cursor_synthetic_next_page",});const res = await fetch(url, {  headers: { "X-API-Key": process.env.ENVO_API_KEY ?? "" },});const body = await res.json();

Endpoints with paginated responses

33 endpoints

Generated from every response schema that allows the V2Pagination object.

/api/v2/profiles/{public_identifier}/postsSign-in required
ProfileOffset · Cursor
/api/v2/profiles/{public_identifier}/commentsSign-in required
ProfileOffset · Cursor
/api/v2/profiles/{public_identifier}/reactionsSign-in required
ProfileOffset · Cursor
/api/v2/companies/{universal_name}/postsSign-in required
CompanyOffset · Cursor
/api/v2/companies/{universal_name}/employeesSign-in required
CompanyOffset
/api/v2/companies/{universal_name}/jobsSign-in required
Company
/api/v2/companies/{universal_name}/productsSign-in required
CompanyOffset
/api/v2/search/companiesSign-in required
SearchOffset
/api/v2/search/peopleSign-in required
SearchOffset
/api/v2/search/postsSign-in required
SearchOffset
/api/v2/search/hashtags/{hashtag}Sign-in required
SearchOffset
/api/v2/search/allSign-in required
SearchOffset
/api/v2/search/filtersSign-in required
Search
/api/v2/search/typeaheadSign-in required
Search
/api/v2/search/locationsSign-in required
Search
/api/v2/posts/commentsSign-in required
PostOffset · Cursor
/api/v2/posts/reactionsSign-in required
PostCursor

Try it with your own records

Sign up for an API key — 100 free credits, no credit card — and the same key works on every documented endpoint.

Get API key

Keep reading