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
It sits beside data in the same envelope every endpoint returns, and is null on responses that are not lists.
{ "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
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
- Start with
offset=0or omit offset for the first page when supported. - When
pagination.hasMoreis true, request the next page withpagination.nextOffsetwhen it is present. - If
pagination.cursoris 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
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.}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
Generated from every response schema that allows the V2Pagination object.
- /api/v2/profiles/{public_identifier}/sectionsSign-in required
- Profile
- /api/v2/profiles/{public_identifier}/positionsSign-in required
- Profile
- /api/v2/profiles/{public_identifier}/educationSign-in required
- Profile
- /api/v2/profiles/{public_identifier}/skillsSign-in required
- Profile
- /api/v2/profiles/{public_identifier}/certificationsSign-in required
- Profile
- /api/v2/profiles/{public_identifier}/organizationsSign-in required
- Profile
- /api/v2/profiles/{public_identifier}/languagesSign-in required
- Profile
- /api/v2/profiles/{public_identifier}/coursesSign-in required
- Profile
- /api/v2/profiles/{public_identifier}/volunteer-experienceSign-in required
- Profile
- /api/v2/profiles/{public_identifier}/honorsSign-in required
- Profile
- /api/v2/profiles/{public_identifier}/interests/companiesSign-in required
- Profile
- /api/v2/profiles/{public_identifier}/related/follow-recommendationsSign-in required
- Profile
- /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/by-domain
- CompanyOffset
- /api/v2/companies/{universal_name}/postsSign-in required
- CompanyOffset · Cursor
- /api/v2/companies/{universal_name}/employeesSign-in required
- CompanyOffset
- /api/v2/companies/{universal_name}/employee-filtersSign-in required
- Company
- /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/jobs/search
- JobOffset
- /api/v2/posts/commentsSign-in required
- PostOffset · Cursor
- /api/v2/posts/reactionsSign-in required
- PostCursor