Skip to main content

Overview

OathNet uses cursor-based pagination for efficient retrieval of large datasets. This approach provides:
  • Consistent results - No duplicates or missed records when data changes
  • Better performance - Faster than offset-based pagination for large datasets
  • Stable ordering - Results maintain consistent order across pages
For new integrations, prefer the v2 search endpoints. Some older /service/* routes return nextCursorMark, while v2 endpoints return next_cursor.

How It Works

  1. Make your initial request
  2. Check for nextCursorMark (or next_cursor) in the response
  3. Pass the cursor as the cursor parameter in your next request
  4. Repeat until the cursor is null

Basic Example

Response Structure

V2 Search Response

V2 Endpoints (Stealer, Victims)

Controlling Page Size

Use page_size to control results per page:

Pagination with Filters

Cursors work with all filter parameters:
Don’t change filters between pages. The cursor is specific to the original query. Changing filters will cause unexpected results.

Best Practices

For large datasets, process results as you fetch them instead of loading everything into memory:
Add delays between pagination requests to avoid rate limits:
For long-running jobs, save cursors to resume if interrupted:
Set a maximum number of results to fetch:

Common Issues

Cursor Expired

Cursors may expire after a period of inactivity:
Solution: Start pagination from the beginning.

Results Changed

If data is updated between pagination requests, you may see slightly different totals. This is normal and doesn’t affect result consistency.

Next Steps

Rate Limiting

Understand quotas when paginating large datasets