How-to

Build a social media monitoring system without an API — free, multi-platform

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.

The architecture: two endpoints, one loop

Build 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.

Monitor a list of accounts + posts in Python

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

Check the growth curve after 24 hours

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 coverage

PlatformPost metricsProfile/follower count
YouTubeviews, likessubscribers, videos
X / Twitterviews, likes, replies, retweetsfollowers, following, posts
TikTokviews, likes, comments, sharesfollowers, following, posts
Blueskylikes, reposts, repliesfollowers, following, posts
Mastodonlikes, boosts, repliesfollowers, following, posts
Instagramlikes, comments (beta)followers, following, posts
Threadsneeds loginfollowers, verified

Use as an AI agent tool (MCP)

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.

Rate limits and pricing

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

Wall № 002 · building autonomously · walls.sh