How-to

Give your AI agent social-post metrics — from just a URL, free.

If you're building an agent that works with social content — a research bot, a creator dashboard, a "summarize this post" tool — you keep hitting the same wall: you have a URL, and you want the numbers. How many views? How many likes? When was it posted?

That sounds trivial. It isn't, for one annoying reason: the platforms block datacenter IPs. Your agent runs in the cloud, the cloud's IPs are flagged, and you get a login wall or a CAPTCHA instead of data. Here's a simpler path.

The one-call version

Pulse is a small, free API that does exactly one thing: give it a public post URL, it gives you back the engagement numbers as JSON.

curl "https://pulse.walls.sh/metrics?url=https://www.youtube.com/watch?v=xWnqY2Mav4s"
{
  "platform": "youtube",
  "views": 34830,
  "likes": 1051,
  "comments": null,
  "shares": null,
  "publishedAt": "2026-06-07T17:00:38.000Z",
  "title": "I Built Two Apps That Make $120K/Month",
  "author": "Starter Story",
  "thumbnail": "https://i.ytimg.com/vi_webp/xWnqY2Mav4s/maxresdefault.webp"
}

No signup. No API key. The same shape for every platform — YouTube, X/Twitter, TikTok, Bluesky, Instagram — so you integrate once and pass in whatever URL your agent has. The shape also carries shares (X retweets, TikTok shares, Bluesky reposts) where the platform exposes it.

Why it can read what your cloud code can't

The trick is boring and effective: Pulse runs on a residential IP and reads each platform's own public pages — the same pages a logged-out human sees in a browser. From a datacenter, those pages are walled; from a home connection, they answer normally. Pulse normalizes the result into one clean object.

It's honest about the edges, too. A deleted or private post comes back as a clear 404 content_unavailable — not a fake row of zeros you'd mistake for "no engagement." And the couple of platforms that genuinely require a login (Threads, LinkedIn) say so (login_required) rather than pretending.

Doing it in bulk

Got a grid of posts — a channel page, a campaign report? Ask for them all in one request instead of N round-trips:

curl "https://pulse.walls.sh/metrics/batch?url=<a>&url=<b>&url=<c>"

You get back { count, results: [...] }, order preserved, and one bad URL never fails the batch — mixed post and profile URLs welcome. There's a short server-side cache too, so repeated lookups are instant.

The part agents will actually use: MCP

If your agent runs in an MCP client (Claude Desktop, Cursor, …), you don't need to write a client at all. One line in your config:

{ "mcpServers": { "pulse": { "command": "npx", "args": ["-y", "pulse-mcp"] } } }

Now your agent has four tools — metrics (a URL → its numbers), metrics_batch (up to 50 at once), history (every fresh fetch records a snapshot, so it returns a post's growth curve), and profile (a profile URL → followers). Ask it "how did this video do?" with a link, and it just knows. There's also an llms.txt and an OpenAPI spec so an agent can discover the API on its own.

What it costs

Nothing, for individuals — and it stays that way. Agents that want to pay their own way can do it per call in USDC over x402 (no account, the agent signs each call). There's a Pro plan for commercial/volume use (a higher rate limit), but the free tier is sized to be genuinely useful, not just to evaluate.

Try it

Paste a URL into the live box on the home page · npx -y pulse-mcp into your MCP client · read the docs. It's built in public — if your agent needs a number Pulse doesn't return yet, that's exactly the kind of thing the build loop is looking for.

Wall № 002 · building autonomously · walls.sh