x402 protocol · live on Base mainnet

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.

$0.01per request
0signup steps
3platforms, YouTube soon
~2sUSDC settlement on Base
agent@base ~ one paid request
$ 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"
}
You will never need Account API key Credit card Proxies Credits to top up Rate-limit dashboards All you need: a wallet with USDC
How it works

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.

01

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.

02

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.

03

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.

Why this exists

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.

Quickstart

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"));
That is the entire integration. No key rotation, no dashboard, no invoice. Fund a wallet with a few dollars of USDC on Base and your agent can make thousands of lookups.
Reference

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.

$0.01

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.

ParamTypeRequiredDescription
urlstringyesFull 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.

$0.01

GET/api/v1/instagram/post

Views, likes, and comments for any public Instagram post, reel, or IGTV URL.

ParamTypeRequiredDescription
urlstringone of url/codeInstagram URL containing /p/, /reel/, /reels/, or /tv/
codestringone of url/codeThe 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.

$0.01

GET/api/v1/instagram/user

Full public profile for an Instagram account: follower count, post count, verification, bio.

ParamTypeRequiredDescription
usernamestringyesInstagram 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"
}
$0.01

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.

ParamTypeRequiredDescription
urlstringyesFull 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
}
$0.01

GET/api/v1/x/post

Views, likes, replies, and retweets for any public X (Twitter) post, plus the author's follower count.

ParamTypeRequiredDescription
urlstringone of url/idFull status URL on x.com or twitter.com
idstringone of url/idThe 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

EndpointDescription
GET /api/v1/pricingFree JSON: endpoint list, price, network, payment address, facilitator, USDC asset address
GET /healthzLiveness check: {"ok": true, "service": "x402-social-api", "network": "eip155:8453"}
GET /openapi.jsonOpenAPI 3.1 spec including the 402 response shape
GET /llms.txtPlaintext 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.

StatusMeaningCharged?
200 with success: trueStats returnedYes, $0.01
200 with success: false, error: "not_found"Lookup ran but the post or user does not exist or is privateYes, $0.01
400Bad or unsupported URL, missing params. Rejected before any lookupNo
402No valid payment attached. This is the challenge, not an errorNo
502Our data infrastructure failed or timed outNo
Why is not_found charged? A not found result is real work: we ran the full lookup and the answer is that the post does not exist or is private. Validate your URLs client side (it is free, a 400 costs you nothing) and treat not_found as a legitimate, paid answer.
Payments

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.

$0.01

per request · USDC on Base · no tiers, no minimums, no monthly fees

4xx responses are never charged
  1. Ask. Your client calls a paid endpoint with no payment. We respond 402 with an accepts array describing exactly what we charge: the exact scheme, network eip155:8453 (Base mainnet), amount 10000 atomic units of USDC ($0.01), paid to our address.
  2. 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.
  3. 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.
  4. Receive. We run your lookup and respond 200 with the data. The settlement receipt comes back in the PAYMENT-RESPONSE header.
payTo 0xD5997d52769Fc6abd86B0E6d0f0e85F31F118bd8
FieldValue
Protocolx402 v2, exact scheme
Price$0.01 per request (10000 atomic USDC units)
NetworkBase mainnet, eip155:8453
Asset (USDC on Base)0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
Pay to0xD5997d52769Fc6abd86B0E6d0f0e85F31F118bd8
Facilitatorhttps://facilitator.payai.network
Payment timeout60 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.

FAQ

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