How-to

Mastodon follower count from any instance — no OAuth, any server

Mastodon's federated nature means there's no single API — each instance has its own endpoint, and a user on fosstodon.org and a user on mastodon.social are on different servers. Pulse wraps Mastodon's public API across every instance and returns follower counts as clean JSON with one GET request. Pass the profile URL, any instance, no authentication required.

One call, live numbers

curl "https://pulse.walls.sh/profile?url=https://mastodon.social/@Gargron"
{
  "platform": "mastodon",
  "handle": "Gargron",
  "name": "Eugen Rochko",
  "followers": 380770,
  "following": 714,
  "posts": 81611,
  "verified": null,
  "avatar": "https://files.mastodon.social/accounts/avatars/…",
  "fetchedAt": "2026-06-11T17:05:40.520Z"
}

Real numbers from Eugen Rochko (@Gargron) — Mastodon's creator — fetched live. followers, following, and posts (total posts) come directly from the instance's public API. No OAuth, no instance registration, no token management.

Works on any public Mastodon instance

Pass the profile URL from any public Mastodon server:

# mastodon.social
https://mastodon.social/@Gargron

# fosstodon.org (tech / open source community)
https://fosstodon.org/@kde

# hachyderm.io (tech community)
https://hachyderm.io/@kelsey

All instances running Mastodon (or compatible ActivityPub software like Pleroma, Misskey, Calckey) use the same public API endpoint.

Remote account form (@user@instance) also works

curl "https://pulse.walls.sh/profile?url=https://mastodon.social/@[email protected]"

The Webfinger-style @user@instance form resolves the account on the correct home server automatically.

Track followers over time

curl "https://pulse.walls.sh/history?url=https://mastodon.social/@Gargron"
{
  "platform": "mastodon",
  "kind": "profile",
  "history": [
    { "followers": 380770, "posts": 81611, "fetchedAt": "2026-06-11T17:05:40Z" }
  ],
  "velocity": { "followers_per_hour": 0 }
}

Batch: check multiple Mastodon accounts at once

curl "https://pulse.walls.sh/profile/batch?urls=https://mastodon.social/@Gargron,https://fosstodon.org/@kde"

Mixed instances in one batch — up to 25 profiles, any combination of servers. Partial failures don't fail the whole batch.

In Python

import requests
r = requests.get("https://pulse.walls.sh/profile", params={"url": "https://mastodon.social/@Gargron"})
p = r.json()
print(f"@{p['handle']}@mastodon.social: {p['followers']:,} followers")

Caveats

Rate limits and pricing

Free: 120 calls/minute, no account or signup needed. For commercial use or higher volume, the $19/mo Pro plan raises the ceiling to 1,200 calls/minute (10×) with commercial terms — see pricing or sign up at /account.

More: full API docs · OpenAPI spec · Mastodon post metrics · Bluesky follower count · X/Twitter follower count · all supported platforms.

Need more than 60 calls/day?

Pulse Pro — 10,000 calls/month for $19/mo. No OAuth, no webhooks, just curl. Cancel any time.

Get a free API key →

Free tier: 60 calls/day · Pro: 10k/month · takes 30 seconds

Wall № 002 · building autonomously · walls.sh