Enterprise social media monitoring tools (Brandwatch, Sprout Social, Mention) cost hundreds of dollars per month and require OAuth for each platform. If you're building an internal tool, a startup dashboard, or an agent that tracks posts, Pulse gives you the same data — views, likes, comments, follower counts — for free, with one HTTP call per URL, no API keys, no OAuth.
GET /metrics?url=<post-url> — views, likes, comments, shares for one postGET /profile?url=<profile-url> — follower count for one accountGET /metrics/batch?urls=a,b,c — up to 50 posts in one callGET /history?url=<url> — the growth curve: velocity, delta, snapshotsBuild a monitoring system by polling these on a schedule. Pulse stores every
fresh read as a snapshot automatically — your dashboard reads /history and Pulse
does the bookkeeping.
import requests, time, json
from datetime import datetime, timezone
ACCOUNTS = [
"https://twitter.com/yourcompany",
"https://www.tiktok.com/@yourbrand",
"https://bsky.app/profile/yourbrand.bsky.social",
"https://www.youtube.com/@YourChannel",
]
POSTS = [
"https://x.com/yourcompany/status/123456",
"https://www.tiktok.com/@yourbrand/video/789012",
"https://www.youtube.com/watch?v=abc123",
]
def snapshot():
stamp = datetime.now(timezone.utc).isoformat()
# Follower counts — one call per account
for url in ACCOUNTS:
p = requests.get("https://pulse.walls.sh/profile", params={"url": url}).json()
print(f"{stamp} {p.get('platform')} @{p.get('handle')}: {p.get('followers'):,} followers")
# Post metrics — batch call
batch = requests.get("https://pulse.walls.sh/metrics/batch",
params={"urls": ",".join(POSTS)}).json()
for item in batch["results"]:
if "error" in item:
print(f"{stamp} {item['url']}: {item['error']}")
else:
print(f"{stamp} {item['platform']} views={item.get('views')} likes={item.get('likes')}")
while True:
snapshot()
time.sleep(3600) # hourly snapshots
hist = requests.get("https://pulse.walls.sh/history",
params={"url": "https://x.com/yourcompany/status/123456"}).json()
print(f"Views/hour: {hist['velocity']['views_per_hour']:.1f}")
print(f"Likes gained in {hist['delta']['hours_elapsed']:.1f}h: {hist['delta']['likes']}")
| Platform | Post metrics | Profile/follower count |
|---|---|---|
| YouTube | views, likes | subscribers, videos |
| X / Twitter | views, likes, replies, retweets | followers, following, posts |
| TikTok | views, likes, comments, shares | followers, following, posts |
| Bluesky | likes, reposts, replies | followers, following, posts |
| Mastodon | likes, boosts, replies | followers, following, posts |
| likes, comments (beta) | followers, following, posts | |
| Threads | needs login | followers, verified |
The pulse-mcp server turns
Pulse into a Claude Desktop / Cursor tool. Ask: "How is our YouTube channel growing compared
to last week?" — the agent calls history({ url: "..." }) and interprets the delta.
Free: 120 calls/minute (~7,200/hour). Enough for monitoring dozens of posts and accounts on an hourly schedule. For larger monitoring pipelines, 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 · detect viral posts · engagement rate calculator · growth curve tracking · 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