Track Medium Follower Growth and Social Graph Snapshots
Follower count is vanity. Useful products measure velocity, who follows whom, and superfans on hit posts.
Tool outcome: A
medium_social_snapshotstable + one SQL query for week-over-week growth.
What to measure
| Metric | Endpoint | Use |
|---|---|---|
| Follower velocity |
/user/{id} + weekly snapshot |
Creator dashboards |
| Following graph | /user/{id}/following |
Discovery (“who do they read?”) |
| Superfans | /article/{id}/fans |
Outreach lists |
Snapshot job (pseudo-ETL)
const API = 'https://api.zenndra.com';
const headers = { Authorization: `Bearer ${process.env.ZENNDRA_API_KEY}` };
async function snapshotUser(userId) {
const profile = await fetch(`${API}/user/${userId}`, { headers }).then((r) => r.json());
const followers = await fetch(`${API}/user/${userId}/followers`, { headers }).then((r) => r.json());
await db.query(
`INSERT INTO medium_social_snapshots (user_id, captured_at, followers_count, following_count, sample_follower_ids)
VALUES ($1, NOW(), $2, $3, $4)`,
[
userId,
profile.followers_count,
profile.following_count,
JSON.stringify((followers.users ?? []).slice(0, 50).map((u) => u.user_id)),
]
);
}
Run weekly—not hourly—to respect rate limits and because trends are slow-moving.
SQL: week-over-week growth
SELECT
user_id,
captured_at::date,
followers_count,
followers_count - LAG(followers_count) OVER (PARTITION BY user_id ORDER BY captured_at) AS delta
FROM medium_social_snapshots
ORDER BY user_id, captured_at DESC;
Join to your product’s users table when Medium writers are also customers.
Alerting
Alert when delta = 0 for four weeks on an account you monetize—often a content cadence problem, not infrastructure.
Keywords
medium follower analytics, medium api followers, creator growth dashboard, medium social graph.
Further reading
- Kimball Group: slowly changing dimensions for snapshot modeling
- Zenndra: Track Medium audience and followers
Top comments (0)