exepal_
exepal / tools / social-media-comments-api

What people are saying, in one call.

Give it a link to an Instagram post or reel, a TikTok video or a YouTube video. You get the top comments with likes and replies, each labelled positive, neutral or negative, plus an overall sentiment score, the themes people raise, how many are asking questions and which emojis they use. Comments in Hinglish, romanised Nepali and other languages are read as they are.

What you get back

  • Up to 15 top comments with author, text, likes, replies and date
  • Each comment labelled positive, neutral or negative; overall score from -1 to 1
  • Up to 5 themes commenters raise and a one-sentence summary
  • Questions asked (buying signals and confusion), top emojis, average comment likes
  • method: model (Claude) or rules, so you know how the labels were made

Call it from your code or agent

Same input and the same JSON answer everywhere. You're only charged when the call succeeds.

This tool is paid only: your key spends prepaid credit, or pay per call in USDC with the x402 tab. Get a free key at exepal.com/key.

curl -X POST https://api.exepal.com/v1/social/comments \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_KEY" \
  -d '{"url":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"}'

This tool is paid only: your key spends prepaid credit, or pay per call in USDC with the x402 tab. Get a free key at exepal.com/key.

const res = await fetch("https://api.exepal.com/v1/social/comments", {
  method: "POST",
  headers: { "Content-Type": "application/json", Authorization: "Bearer YOUR_KEY" },
  body: JSON.stringify({
    "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  }),
});
const data = await res.json();

This tool is paid only: your key spends prepaid credit, or pay per call in USDC with the x402 tab. Get a free key at exepal.com/key.

import requests

r = requests.post(
    "https://api.exepal.com/v1/social/comments",
    headers={"Authorization": "Bearer YOUR_KEY"},
    json={
        "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
    },
    timeout=120,
)
print(r.json())

Add Exepal once and your assistant can call social_comments by itself. More clients on the integrate page.

# Claude Code
claude mcp add --transport http exepal "https://api.exepal.com/mcp?key=YOUR_KEY"

# Cursor, Windsurf, Claude Desktop and most clients (mcp.json)
{
  "mcpServers": {
    "exepal": { "url": "https://api.exepal.com/mcp?key=YOUR_KEY" }
  }
}

No key at all: an agent with a wallet pays per call in USDC on Base. npm i @x402/fetch @x402/evm viem. How x402 works.

import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";

const pay = wrapFetchWithPaymentFromConfig(fetch, {
  schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(privateKeyToAccount(process.env.WALLET_KEY)) }],
});
const res = await pay("https://api.exepal.com/v1/social/comments", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
  }),
});

Questions

Which languages work?
Any. Sentiment is read by Claude, which handles English, Hindi, Nepali, Hinglish and romanised Nepali. If the model is unavailable a simpler rule-based read is used and method says rules.
Why 15 comments?
Comment scrapers bill per comment, so 15 top comments keeps the call at five cents. They are the comments most people see.
Am I charged if there are no comments?
No. A post with no public comments, or one that is private or removed, returns an error and nothing is charged.

Related tools