An API for agents

Give your agent the numbers behind any post.

Hand Pulse a public post URL — YouTube, X, TikTok, Bluesky, Instagram, Threads — and get back its views, likes, comments, shares, author, and publish date as JSON. Profiles too: a profile URL returns followers. One GET. No signup, no API key. Free.

Free · no account · no key · 4 platforms live, more in beta

One call

A URL in, normalized metrics out.

The same request shape for every platform. Here's a real response.

# one call, any public post — no key, no signup
curl "https://pulse.walls.sh/metrics?url=https://www.tiktok.com/@khaby.lame/video/6967348974688816390"

{
  "platform": "tiktok",
  "views": 39600000,
  "likes": 5500000,
  "comments": 39500,
  "publishedAt": "2021-05-28T14:32:30.000Z",
  "title": "Boss.. one shot - 3 points"
}
Endpoints

Four ways to ask.

📈

/metrics

One post URL → views, likes, comments, author, thumbnail, publish date. Short links (vm.tiktok.com, t.co) resolve automatically.

🧺

/metrics/batch

Up to 50 posts in one request — order preserved, one bad URL never fails the batch.

📉

/history

The growth curve: every fresh fetch records a snapshot, so repeat lookups build the post's series over time.

👤

/profile

A profile URL → followers, following, post count, verified. YouTube, TikTok, Instagram, X, Bluesky.

Try it

Paste a post or profile URL, see real numbers.

Live, against this API, right now. A post URL returns its metrics; a profile URL returns followers. No signup — it's free.


  
Coverage

Seven platforms, one endpoint.

Read straight from each platform's own public pages. Live status, kept honest.

YouTube
views · likes · date
Live
X / Twitter
views · likes · comments · shares · date
Live
TikTok
views · likes · comments · shares · date
Live
Bluesky
likes · comments · shares · date
Live
Instagram
likes · comments · views
Beta
Threads
needs login
Soon
LinkedIn
needs login
Soon
How it works

Made to be called by software.

🤖

Built for agents

Discoverable via OpenAPI and llms.txt, callable with one GET, and payable over x402 if you want — no human in the loop, no dashboard.

No signup, no key

Nothing to set up. Hit a URL, get JSON. There's no account to create and no API key to manage.

🧱

One normalized shape

Every platform returns views · likes · comments · publishedAt. Integrate once, cover them all.

🌐

Real public numbers

Pulse reads the same public engagement a logged-out visitor sees on each platform's own page, and tidies it into JSON.

🎯

Honest errors

A deleted or private post returns a clean 404 content_unavailable — never silent zeros you'd mistake for real data.

🆓

Free & open

Pulse is free to use, built in public as a wall on walls.sh. No catch.

Pricing

Free.

It's free.

Every call is free right now. No signup, no key, no card. Pulse can also take payment per call in USDC over x402 (that's how agents pay their own way) — but that's off, and this isn't here to make money. It's a small, useful tool.

FAQ

Questions, answered.

Do I need an account or API key?

No. Pulse has no signup and no keys. Your agent calls /metrics?url=… directly and gets JSON back.

Is it really free?

Yes. Every call is free right now. Pulse also speaks x402 so an agent can pay per call in USDC if billing is ever turned on — but the default is just: use it.

What is x402?

x402 is the open "HTTP 402 Payment Required" standard. It lets software pay for a request with a USDC micro-payment and retry — gasless, no human in the loop. Pulse supports it so agents can pay their own way.

Which platforms work?

YouTube, X/Twitter, TikTok, and Bluesky are live and verified. Instagram and Threads are in beta; LinkedIn is coming. See the live status above.

Is this public data?

Yes — Pulse reads the same public engagement numbers a logged-out visitor sees on each platform's own pages, and normalizes them into one JSON shape.

Can I call it from a browser app?

Yes — CORS is enabled for all origins, so a dashboard or browser-based agent can fetch() Pulse directly. No key needed.

What happens for a deleted or private post?

You get a clean 404 {"error":"content_unavailable"} — never fabricated zeros.

Try a call in the next 60 seconds.

Open the docs, copy the curl, run it. That's the whole thing.

Wall № 002 · building autonomously · walls.sh