For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
DashboardGet API Key
GuidesAPI ReferenceCommon Patterns
  • Common Patterns
    • Pagination
    • Async Jobs
    • Rate Limiting
    • Error Handling
    • Batch Operations
DashboardGet API Key
On this page
  • Pagination
  • Offset-Based Pagination
  • Looping Pattern
  • Endpoints Using Offset Pagination
  • Cursor-Based Pagination
  • Cursor Looping Pattern
  • Endpoints Using Cursor Pagination
  • LinkedIn Search Limits
  • Recommended Pacing Between Pages
  • Related
Common Patterns

Pagination

Was this page helpful?

Async Jobs

Next
Built with

Pagination

Voyager uses two pagination styles depending on the endpoint: offset-based (most endpoints) and cursor-based (conversations).

Offset-Based Pagination

Most list endpoints accept start (offset) and count (page size) parameters.

$# First page
$curl "$BASE/api/search/people?keywords=CTO&start=0&count=10" \
> -H "Authorization: Bearer $KEY" -H "X-User-Id: $USER"
$
$# Second page
$curl "$BASE/api/search/people?keywords=CTO&start=10&count=10" \
> -H "Authorization: Bearer $KEY" -H "X-User-Id: $USER"
$
$# Third page
$curl "$BASE/api/search/people?keywords=CTO&start=20&count=10" \
> -H "Authorization: Bearer $KEY" -H "X-User-Id: $USER"

Looping Pattern

$START=0
$COUNT=10
$while true; do
$ RESP=$(curl -s "$BASE/api/search/people?keywords=CTO&start=$START&count=$COUNT" \
> -H "Authorization: Bearer $KEY" -H "X-User-Id: $USER")
$ RESULTS=$(echo "$RESP" | jq '.data.results | length')
$ [ "$RESULTS" -eq 0 ] && break
$ echo "$RESP" | jq '.data.results'
$ START=$((START + COUNT))
$ sleep 3 # Respect rate limits
$done

Endpoints Using Offset Pagination

EndpointDefault CountMax Count
GET /api/search/people1049
GET /api/search/companies1025
GET /api/search/content1025
GET /api/search/jobs2549
GET /api/search/groups1025
GET /api/feed2050
GET /api/salesnav/alerts25LinkedIn-enforced
GET /api/salesnav/inbox25LinkedIn-enforced
GET /api/salesnav/viewers25LinkedIn-enforced

Cursor-Based Pagination

Conversations use cursor-based pagination. The response includes a nextCursor value that you pass in the next request.

$# First page
$RESP=$(curl -s "$BASE/api/conversations?limit=20" \
> -H "Authorization: Bearer $KEY" -H "X-User-Id: $USER")
$
$# Extract cursor
$CURSOR=$(echo "$RESP" | jq -r '.data.nextCursor // empty')
$
$# Next page
$if [ -n "$CURSOR" ]; then
$ RESP=$(curl -s "$BASE/api/conversations?limit=20&nextCursor=$CURSOR" \
> -H "Authorization: Bearer $KEY" -H "X-User-Id: $USER")
$fi

Cursor Looping Pattern

$CURSOR=""
$while true; do
$ URL="$BASE/api/conversations?limit=20"
$ [ -n "$CURSOR" ] && URL="$URL&nextCursor=$CURSOR"
$ RESP=$(curl -s "$URL" \
> -H "Authorization: Bearer $KEY" -H "X-User-Id: $USER")
$ echo "$RESP" | jq '.conversations'
$ CURSOR=$(echo "$RESP" | jq -r '.data.nextCursor // empty')
$ [ -z "$CURSOR" ] && break
$ sleep 1
$done

Endpoints Using Cursor Pagination

EndpointParameterDefault Limit
GET /api/conversationsnextCursor20

LinkedIn Search Limits

LinkedIn returns a maximum of approximately 1,000 results for any search query, regardless of the total number of matches. Use specific keywords and filters to narrow your results rather than trying to paginate through everything.

Recommended Pacing Between Pages

Endpoint TypeDelay Between Pages
Search (people, companies, content)3-5 seconds
Conversations1-2 seconds
Feed2-3 seconds
SalesNav3-5 seconds

Adding delays between pagination requests reduces the risk of LinkedIn rate limiting.

Related

  • Search — Search endpoint parameters
  • Messaging — Conversation listing
  • Rate Limiting — Pacing recommendations