Skip to main content
List endpoints in the Arbitrage API return results in pages rather than all at once. You control the page size and position using two query parameters — limit and offset — and every paginated response includes a meta object that tells you exactly where you are and how many total results exist. This makes it straightforward to build efficient polling loops, bulk exports, and infinite-scroll interfaces.

Query parameters

Add limit and offset directly to your request URL as query parameters. Both parameters are optional. Omitting them returns the first 50 results.

The meta object

Every paginated response wraps results in a data array and includes a meta object:
Use total to calculate how many pages remain. Use count to detect the last page — when count is less than limit, you’ve reached the end.
The arbitrage endpoints do not always return a total count. On those endpoints, rely on meta.count to detect the end of results: when count is less than limit, there are no more pages.

Fetching a page with curl

To fetch the second page of 25 results, set offset=25 and limit=25:
curl
To fetch the maximum page size, use limit=200:
curl

Iterating through all pages in Python

The function below fetches all results from a paginated endpoint by incrementing offset until all items have been retrieved. It uses limit=200 to minimize the number of requests:
python
Use limit=200 for bulk data fetching. It’s the maximum allowed and reduces the number of round trips — especially useful for one-time exports or building a local snapshot of all canonical questions.

The meta.source field on arbitrage endpoints

Arbitrage responses include an additional meta.source field that indicates where the data was served from: You can use meta.source to understand data freshness when timing is critical. If you need the most current opportunity data, check that meta.source is database or confirm that freshness.is_stale is false on individual opportunities.
Serving from cache is normal and expected under high load. Stale cache entries are typically only a few seconds old. If freshness is critical to your strategy, also check the detected_at and last_seen_at fields on individual opportunities.