Send crypto and a URL. Get the stats back.
Give your agent a wallet and some USDC and it can pull live views, likes, comments, shares, and follower counts for any public Instagram, TikTok, or X post, anytime. No setup. No proxies. No credit card. No account. No credits.
$0.01 per request. USDC on Base. Paid straight over HTTP with x402.
$ curl "https://x402.findclout.com/api/v1/post?url=https://www.tiktok.com/@nflstreetmoments/video/7401882236711"
HTTP/1.1 402 Payment Required
{
"accepts": [{
"scheme": "exact",
"network": "eip155:8453", # Base mainnet
"maxAmountRequired": "10000", # $0.01 in USDC
"payTo": "0xD5997d52769Fc6abd86B0E6d0f0e85F31F118bd8"
}]
}
# your x402 client signs $0.01 in USDC and retries automatically
HTTP/1.1 200 OK
{
"success": true,
"platform": "tiktok",
"username": "nflstreetmoments",
"views": 4102338,
"likes": 512004,
"comments": 3912,
"shares": 21480,
"followers": 1306700,
"fetchedAt": "2026-07-19T14:05:56.000Z"
}
One HTTP round trip, paid inline
x402 puts the dormant HTTP status code 402 Payment Required to work. Your client asks, we quote a price, your wallet signs, the data comes back. Libraries automate the whole loop.
We answer 402 with a quote
Call any paid endpoint with no payment and you get a machine readable offer: $0.01 in USDC on Base, paid to our address, valid for 60 seconds.
Your agent signs a USDC payment
The wallet signs an EIP-3009 transfer authorization for exactly one cent and retries the request with the payment attached. No gas, no ETH needed.
Live JSON comes back
The facilitator settles the transfer on Base in seconds, we run the lookup, and you get fresh stats plus a settlement receipt in a response header.
Everything a scraper stack makes you do, deleted
The usual route to social media data is a scraper marketplace: create an account, add a credit card, buy credits, pick an actor, configure proxies, handle bans and retries, babysit the run. We deleted all of it. Our data infrastructure does the scraping-shaped work; you pay one cent per answer.
Scraper marketplace flow (Apify and similar)
- ✕Create an account and verify email
- ✕Add a credit card, buy or top up credits
- ✕Browse actors, compare pricing models
- ✕Configure and pay for proxies
- ✕Handle blocks, bans, retries, breakage
- ✕Monitor usage dashboards and quotas
This API
- ✓Send $0.01 in USDC and a URL. Get JSON back.
GET → 402 quote → wallet signs $0.01 → 200 JSON
- ✓No login, no proxies, no account, no maintenance
- ✓4xx responses are never charged
That makes this a practical Apify alternative for social stats: an Instagram scraper API, TikTok scraper API, and Twitter scraper API with no login, no proxies, and no account, because we run the infrastructure and you only buy the answer. Full comparisons: Instagram, TikTok, X/Twitter, and why there are no proxies in this picture.
From zero to live stats in two requests
There is nothing to sign up for. Call any paid endpoint, receive an HTTP 402 challenge, pay it with USDC on Base, get your data. The whole loop is two requests and libraries automate it.
1. See the 402 challenge with curl
A plain GET with no payment returns HTTP 402 Payment Required plus a machine readable offer in the accepts array:
curl -i "https://x402.findclout.com/api/v1/post?url=https://www.instagram.com/p/DLmR4kXtQ2a/"
HTTP/1.1 402 Payment Required
Content-Type: application/json
{
"x402Version": 2,
"error": "Payment required",
"accepts": [
{
"scheme": "exact",
"network": "eip155:8453",
"maxAmountRequired": "10000",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0xD5997d52769Fc6abd86B0E6d0f0e85F31F118bd8",
"resource": "https://x402.findclout.com/api/v1/post",
"description": "Social post stats lookup",
"mimeType": "application/json",
"maxTimeoutSeconds": 60
}
]
}
maxAmountRequired: "10000" is 10000 atomic USDC units, which is exactly $0.01 since USDC has 6 decimals.
2. Pay automatically from Node with @x402/fetch
The @x402/fetch wrapper intercepts the 402, signs a USDC transfer authorization with your wallet, retries the request with the payment attached, and hands you the JSON. Your wallet needs USDC on Base. It does not need ETH: transfers use EIP-3009 authorizations, so gas is not your problem.
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.AGENT_PRIVATE_KEY);
const fetchWithPay = wrapFetchWithPaymentFromConfig(fetch, {
schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(account) }],
});
const res = await fetchWithPay(
"https://x402.findclout.com/api/v1/post?url=" +
encodeURIComponent("https://www.tiktok.com/@nflstreetmoments/video/7401882236711")
);
const stats = await res.json();
console.log(stats.views, stats.likes, stats.shares);
// Settlement receipt (transaction details) arrives in a response header:
console.log(res.headers.get("PAYMENT-RESPONSE"));
Endpoint reference
Five paid endpoints, each $0.01 per request. All are GET, all return JSON with the envelope {"success": true, "platform": "...", "fetchedAt": "<ISO 8601>", ...}. Numbers are integers or null when a platform does not expose a metric.
GET/api/v1/post
Universal lookup. Give it any supported post URL and it detects the platform by hostname: instagram.com routes to Instagram, tiktok.com to TikTok, twitter.com or x.com to X. The simplest tool to hand an AI agent.
| Param | Type | Required | Description |
|---|---|---|---|
url | string | yes | Full post URL from Instagram, TikTok, or X |
Example request
curl "https://x402.findclout.com/api/v1/post?url=https://x.com/AdamSchefter/status/1812340221459871" \
-H "PAYMENT-SIGNATURE: <handled by your x402 client>"
Example response · 200 OK
{
"success": true,
"platform": "x",
"fetchedAt": "2026-07-19T14:02:11.000Z",
"url": "https://x.com/AdamSchefter/status/1812340221459871",
"username": "AdamSchefter",
"views": 4206113,
"likes": 38914,
"comments": 1204,
"shares": 6821,
"followers": 10914552
}
followers is included when the platform provides it on post lookups (TikTok and X). Instagram post lookups omit it: use /api/v1/instagram/user for follower counts.
GET/api/v1/instagram/post
Views, likes, and comments for any public Instagram post, reel, or IGTV URL.
| Param | Type | Required | Description |
|---|---|---|---|
url | string | one of url/code | Instagram URL containing /p/, /reel/, /reels/, or /tv/ |
code | string | one of url/code | The shortcode directly, e.g. DLmR4kXtQ2a |
Example request
GET /api/v1/instagram/post?url=https://www.instagram.com/reel/DLmR4kXtQ2a/
Example response · 200 OK
{
"success": true,
"platform": "instagram",
"fetchedAt": "2026-07-19T14:03:27.000Z",
"url": "https://www.instagram.com/reel/DLmR4kXtQ2a/",
"username": "houseofhighlights",
"views": 2841903,
"likes": 193412,
"comments": 2874,
"shares": 0
}
Instagram does not expose share counts, so shares is always 0 here. Photo posts return views: null.
GET/api/v1/instagram/user
Full public profile for an Instagram account: follower count, post count, verification, bio.
| Param | Type | Required | Description |
|---|---|---|---|
username | string | yes | Instagram handle without the @ |
Example request
GET /api/v1/instagram/user?username=nba
Example response · 200 OK
{
"success": true,
"platform": "instagram",
"fetchedAt": "2026-07-19T14:04:41.000Z",
"username": "nba",
"fullName": "NBA",
"followers": 89214553,
"following": 1042,
"posts": 51230,
"isVerified": true,
"isPrivate": false,
"biography": "The official Instagram of the National Basketball Association.",
"profilePicUrl": "https://x402.findclout.com/cdn/avatars/nba.jpg"
}
GET/api/v1/tiktok/post
Views, likes, comments, shares, and the author's follower count for any public TikTok video URL. One call, six numbers.
| Param | Type | Required | Description |
|---|---|---|---|
url | string | yes | Full TikTok video URL |
Example request
GET /api/v1/tiktok/post?url=https://www.tiktok.com/@nflstreetmoments/video/7401882236711
Example response · 200 OK
{
"success": true,
"platform": "tiktok",
"fetchedAt": "2026-07-19T14:05:56.000Z",
"url": "https://www.tiktok.com/@nflstreetmoments/video/7401882236711",
"username": "nflstreetmoments",
"views": 4102338,
"likes": 512004,
"comments": 3912,
"shares": 21480,
"followers": 1306700
}
GET/api/v1/x/post
Views, likes, replies, and retweets for any public X (Twitter) post, plus the author's follower count.
| Param | Type | Required | Description |
|---|---|---|---|
url | string | one of url/id | Full status URL on x.com or twitter.com |
id | string | one of url/id | The numeric tweet ID directly |
Example request
GET /api/v1/x/post?id=1812340221459871
Example response · 200 OK
{
"success": true,
"platform": "x",
"fetchedAt": "2026-07-19T14:07:02.000Z",
"url": "https://x.com/AdamSchefter/status/1812340221459871",
"username": "AdamSchefter",
"views": 4206113,
"likes": 38914,
"comments": 1204,
"shares": 6821,
"followers": 10914552
}
comments maps to replies and shares maps to retweets.
YouTube
Coming soon. It will ship as /api/v1/youtube/post with the same envelope and the same $0.01 price. Watch the blog or check llms.txt for updates.
Free endpoints
| Endpoint | Description |
|---|---|
GET /api/v1/pricing | Free JSON: endpoint list, price, network, payment address, facilitator, USDC asset address |
GET /healthz | Liveness check: {"ok": true, "service": "x402-social-api", "network": "eip155:8453"} |
GET /openapi.json | OpenAPI 3.1 spec including the 402 response shape |
GET /llms.txt | Plaintext summary written for AI agents and LLMs |
Errors and when you get charged
The rule is simple: 4xx responses are never charged. Neither are 5xx responses. You only pay when we do the work.
| Status | Meaning | Charged? |
|---|---|---|
200 with success: true | Stats returned | Yes, $0.01 |
200 with success: false, error: "not_found" | Lookup ran but the post or user does not exist or is private | Yes, $0.01 |
400 | Bad or unsupported URL, missing params. Rejected before any lookup | No |
402 | No valid payment attached. This is the challenge, not an error | No |
502 | Our data infrastructure failed or timed out | No |
not_found as a legitimate, paid answer.How payment works: x402 in one minute
x402 is an open protocol that puts the long dormant HTTP status code 402 Payment Required to work. It lets a server price a single HTTP request and lets a client pay for it inline, with stablecoins, no account anywhere.
per request · USDC on Base · no tiers, no minimums, no monthly fees
4xx responses are never charged- Ask. Your client calls a paid endpoint with no payment. We respond
402with anacceptsarray describing exactly what we charge: theexactscheme, networkeip155:8453(Base mainnet), amount10000atomic units of USDC ($0.01), paid to our address. - Sign. Your x402 client library signs an EIP-3009 USDC transfer authorization for exactly that amount and retries the request with the signed payment attached in a header.
- Settle. A facilitator (default
https://facilitator.payai.network, keyless) verifies the signature and settles the transfer on Base. Because EIP-3009 authorizations are submitted for you, your wallet needs zero ETH. - Receive. We run your lookup and respond
200with the data. The settlement receipt comes back in thePAYMENT-RESPONSEheader.
0xD5997d52769Fc6abd86B0E6d0f0e85F31F118bd8
| Field | Value |
|---|---|
| Protocol | x402 v2, exact scheme |
| Price | $0.01 per request (10000 atomic USDC units) |
| Network | Base mainnet, eip155:8453 |
| Asset (USDC on Base) | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 |
| Pay to | 0xD5997d52769Fc6abd86B0E6d0f0e85F31F118bd8 |
| Facilitator | https://facilitator.payai.network |
| Payment timeout | 60 seconds |
New to the protocol? Read What is x402? How AI agents pay for APIs over HTTP for the full walkthrough, or the agent wallet tutorial to get a paying agent running end to end.
Frequently asked questions
Is this an Instagram scraper?
It is the result an Instagram scraper gives you, without you running one. No actors, no proxies, no sessions, no bans. Our data infrastructure does that work behind one GET request, and you pay $0.01 per answer. The same goes for TikTok and X.
Do I need proxies?
No. Proxies exist to keep scrapers alive, and you are not running a scraper. You send a URL over HTTPS and get JSON back. Blocks, retries, and infrastructure are our problem, priced into the cent.
Do I need an API key or account?
No. There is no signup, no API key, no dashboard, and no credit card. Payment is the authentication: every request carries its own $0.01 in USDC via the x402 protocol.
Is there a free tier?
The pricing is simpler than a free tier: every 4xx response is free, every successful answer costs $0.01. The 402 challenge itself, /api/v1/pricing, /healthz, /openapi.json, and /llms.txt are always free.
How much does the API cost?
Every paid endpoint costs $0.01 per request, settled in USDC on Base. That is 10000 atomic units of USDC. There are no tiers, minimums, or monthly fees. 100 lookups cost one dollar.
Which platforms are supported?
Instagram (posts, reels, and user profiles), TikTok (videos with author follower counts), and X (posts with author follower counts). YouTube support is coming soon.
Am I charged for errors?
No. 4xx responses are never charged, and neither are 5xx responses. A bad URL costs you nothing. You are only charged when a lookup actually runs, including when the result is that the post was not found.
Does my wallet need ETH for gas?
No. Payments use EIP-3009 transfer authorizations: you sign a message, the facilitator submits it on chain and covers gas. Your wallet only needs USDC on Base.
Where does the data come from?
Our data infrastructure reads public post and profile data at request time. Numbers reflect what the platform reports at the moment of the call, with the timestamp returned in fetchedAt.
Can I use this from Python, or from an AI agent framework?
Yes. Anything that speaks HTTP works. x402 client libraries exist across ecosystems, and the 402 challenge is plain JSON if you want to implement payment yourself. See the agent tutorial for Claude tool use and LangChain examples.
Who is behind this API?
FindClout, the team behind the biggest independently owned American meme page network, spanning sports, finance, entrepreneurship, movies, TV, and music. We built this API on the same data infrastructure we use to measure our own campaigns. Read why we built it.
Want the views, not just the numbers?
FindClout runs the biggest independently owned American meme page network, with sports, finance, entrepreneurship, movie, TV, and music pages reaching real American audiences. We place brands natively inside viral clips people already love: not ads next to content, your product inside it. If you are measuring social reach, we are the people who generate it.
Book a call at findclout.com