@JHCornford -
Using 3 API pagination is likely due to the 90-day window, data is paged by the maxResults parameter, or 30 day (really 31 day) windows, whichever comes first. Unless your search result contained over 1500 results within those 3 months, you will always only have 3 request pages.
This is in our docs here: https://developer.twitter.com/en/docs/tweets/search/api-reference/premium-search
Request/response behavior
Using the fromDate and toDate parameters, you can request any time period that the API supports. The 30-day endpoint provides Tweets from the most recent 31 days (even though referred to as the ‘30-day’ endpoint, it makes 31 days available to enable users to make complete-month requests). The Full-archive endpoint provides Tweets back to the very first tweet (March 21, 2006).
Each Tweet data request contains a ‘maxResults’ parameter (range 10-500, with a default of 100. Sandbox environments have a maximum of 100) that specifies the maximum number of Tweets to return in the response. When the amount of data exceeds the ‘maxResults’ setting (and it usually will), the response will include a ‘next’ token and pagination will be required to receive all the data associated with your query (see the HERE section for more information).
For example, say your query matches 6,000 Tweets over the past 30 days (if you do not include date parameters in your request, the API will default to the full 30-day period). The API will respond with the first ‘page’ of results with either the first ‘maxResults’ of Tweets or all Tweets from the first 30 days if there are less than that for that time period. That response will contain a ‘next’ token and you’ll make another call with that ‘next’ token added to the request. To retrieve all of the 6,000 Tweets, approximately 12 requests will be necessary.