Every search response includes a next field - a ready-made relative URL for the next page. You never need to build paging parameters yourself.
posts array.next to https://api.webz.io and call it.more_results_available is 0.{
"posts": [ ... ],
"next": "/api/news?q=bitcoin&ts=1751713632000&ni=6bd4f2f1a2...",
"more_results_available": 12353
}next carries your query, cursor, and the highlight, webz_reporter, and allowNewsHistory flags - but not includeSyndicated. Re-append it on every page if you need syndicated copies. If you authenticated with the token query parameter, next already includes it; with Bearer authentication, keep sending the header on every call.
With the default crawled sort, next carries your position forward in time. Keep calling it on a schedule (for example every few minutes) and you receive only posts crawled since your last call - a simple way to consume a continuous stream of matching content.
next encodes the position using ts plus the ni/ns cursor parameters (and from for relevancy-style sorts). Treat them as opaque - copy the URL as-is.
Each page is a new request and consumes credits - see Errors, Rate Limits & Credits.