import time
import requests
API_KEY = "YOUR_API_KEY"
def paginate_with_retries(username, max_retries=3):
all_users = []
cursor = None
while True:
params = {"username": username}
if cursor:
params["next_cursor"] = cursor
for attempt in range(max_retries):
response = requests.get(
"https://api.sorsa.io/v3/followers",
params=params,
headers={"ApiKey": API_KEY},
timeout=30,
)
if response.status_code == 200:
break
elif response.status_code == 429:
time.sleep(1)
continue
elif response.status_code >= 500:
time.sleep(2)
continue
else:
raise Exception(f"Error {response.status_code}: {response.text}")
else:
raise Exception("Max retries exceeded")
data = response.json()
all_users.extend(data.get("users", []))
cursor = data.get("next_cursor")
if not cursor:
break
time.sleep(0.05)
return all_users