import requests
import time
from collections import Counter
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.sorsa.io/v3"
HEADERS = {"ApiKey": API_KEY}
def get_followers(username, max_pages=10):
followers, cursor = [], None
for _ in range(max_pages):
params = {"username": username}
if cursor:
params["next_cursor"] = cursor
resp = requests.get(f"{BASE_URL}/followers", headers=HEADERS, params=params, timeout=30)
resp.raise_for_status()
data = resp.json()
followers.extend(data.get("users", []))
cursor = data.get("next_cursor")
if not cursor:
break
time.sleep(0.1)
return followers
def get_country(user_id):
resp = requests.get(
f"{BASE_URL}/about",
headers=HEADERS,
params={"user_id": user_id},
timeout=15,
)
if resp.status_code == 200:
return resp.json().get("country") or "Unknown"
return "Unknown"
def audience_geography(username, max_follower_pages=5):
followers = get_followers(username, max_pages=max_follower_pages)
countries = Counter()
for user in followers:
countries[get_country(user["id"])] += 1
time.sleep(0.05) # stay within 20 req/s
return countries, len(followers)