Skip to main content
This tutorial turns your tracked creators into a ranked leaderboard. You’ll pull the top creators for a period, enrich each with its analytics, sort by the metric you care about, and print a table you can drop into a dashboard or report.
Response fields vary by endpoint, so fetch the live shape and read from it rather than assuming field names. The API reference covers the shared conventions, and you’ll need a key from the API keys page.
1

Confirm your key

GET /v2/whoami verifies the key and returns the organization it belongs to. If this fails, fix auth before going further — see API setup.
curl "https://api.creatoraudit.com/v2/whoami" \
  -H "Authorization: Bearer YOUR_API_KEY"
2

Pull the top creators for a period

GET /v2/creators/top ranks your creators over a period of 7d, 30d, or 90d. This is your candidate set for the leaderboard.
GET /v2/creators/top caps limit at 25. To rank a larger roster, page through GET /v2/creators (up to 200 per page) and enrich those instead — see the last step.
curl "https://api.creatoraudit.com/v2/creators/top?period=30d&limit=25" \
  -H "Authorization: Bearer YOUR_API_KEY"
3

Enrich each creator with analytics

For every creator in the candidate set, call GET /v2/creators/{id}/analytics to get its metrics. Read the fields you need from the live response — views, likes, comments, shares, followers — and compute engagement rate as (likes + comments + shares) / views when you want to rank by engagement.
# Repeat per creator id from the previous step
curl "https://api.creatoraudit.com/v2/creators/CREATOR_ID/analytics?start_date=2026-05-16&end_date=2026-06-15" \
  -H "Authorization: Bearer YOUR_API_KEY"
4

Rank and render the table

Sort by whichever metric matters — raw views for reach, or engagement rate for quality — then print a table. Keep the sort key configurable so the same code powers a “most viewed” and a “most engaging” board.
def sort_value(row: dict, key: str) -> float:
    m = row["metrics"]
    if key == "engagement":
        return engagement_rate(m)
    return float(m.get(key, 0) or 0)

ranked = sorted(rows, key=lambda r: sort_value(r, "views"), reverse=True)

print(f"{'#':>3}  {'creator':<24} {'views':>12} {'eng. rate':>10}")
for i, row in enumerate(ranked, start=1):
    name = row["creator"].get("name") or row["creator"]["id"]
    views = int(row["metrics"].get("views", 0) or 0)
    rate = engagement_rate(row["metrics"])
    print(f"{i:>3}  {name:<24} {views:>12,} {rate:>9.2%}")

client.close()
A creator added recently may have last_scrape_time: null and little or no history until its first refresh lands, so it can sort low through no fault of its own. See Data freshness for the timing.

Widen coverage beyond 25

GET /v2/creators/top is bounded at 25 results. To leaderboard your whole roster, page through GET /v2/creators (cursor pagination, limit up to 200) to collect every creator id, then run the same enrich-and-sort loop over the full list. Read pagination.has_next and pass the previous pagination.next_cursor back as cursor until has_next is false.

Pagination

The cursor contract for walking /v2/creators past the first page.

Python client

A typed client with a ready-made pagination helper.

Creators dashboard

The same rankings, rendered in the app.