The “300 results” you are getting come from:
followers = tweepy.Cursor(client.followers, id=screenName)
this calls /followers/list 15 times(the rate limit), each retrieving 20 users (the default number of results per page) - giving you 300 results.
Use this instead:
followers = tweepy.Cursor(client.followers, id=screenName, count=200)
This will return 200 followers per call, which means you can retrieve 3000 followers per 15 minute window (15 calls each retrieving 200 users)
Alternatively - using Application Authentication, you can call this endpoint 30 times every 15 min. See https://dev.twitter.com/rest/public/rate-limits
If this is still too slow, combining /followers/ids with /users/lookup might be better, for example: Imagine you want to retrieve all of andypiper’s 10.6K followers:
First, use /followers/ids with count=5000 parameter - (This uses up 3 of 15 calls in a rate limit window)
Now you have ~10600 user ids, use /users/lookup retrieving info for 100 users per call (~106 calls from 180 limit)