How to check Instagram post views with an API in 2026
You have an Instagram post URL and you need its view count as a number in your code, not as pixels on a screen. Maybe you are verifying an influencer deliverable, tracking a competitor's reels, feeding a dashboard, or building an AI agent that reasons about content performance. This guide covers every realistic route to Instagram view counts by API in 2026 and is honest about the tradeoffs of each.
Option 1: the official Instagram Graph API
Meta's Graph API is the sanctioned path, and if you only need metrics for accounts you own or manage, it is the right one. Connect an Instagram professional account, request the right permissions through app review, and you can pull insights like views, reach, and interactions for your own media objects.
The limitation is structural: the Graph API tells you about your posts. It will not return view counts for an arbitrary public post by URL. If your use case is "check the stats of a post published by someone else," which describes essentially all campaign verification, competitor analysis, and agent research, the official API is not designed for the job. You also carry the fixed costs: a Meta developer app, app review, token refresh plumbing, and permission scopes that change over time.
Option 2: scrape it yourself
The DIY route is to fetch the post page or its internal JSON with headless browsers, rotating residential proxies, and session management. It can be made to work. It is also a part time job. Instagram actively hardens against automated access, so selectors break, sessions get flagged, proxy costs climb, and you end up maintaining infrastructure that has nothing to do with your product. For one lookup a week, it is overkill. For a million lookups a day, it is a dedicated engineering team.
Option 3: subscription data vendors
A tier of commercial providers sells social data behind monthly plans. They solve the maintenance problem but reintroduce the procurement problem: sales calls, seat licenses, monthly minimums that often start in the hundreds of dollars, API keys to manage, and contracts to renew. If you need tens of millions of records a month, negotiate one of these deals. If you need between one and a few hundred thousand lookups, you are overpaying badly, and if your caller is an AI agent, the signup wall stops it cold.
Option 4: pay one cent per lookup, no account at all
This is the model we built the x402 Social Stats API around. One GET request, one cent, one JSON object. No API key, no signup, no credit card, no monthly plan. Payment happens inline over HTTP using the x402 protocol: your client pays $0.01 in USDC on Base per request, automatically.
Here is the entire integration for checking Instagram post views:
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/instagram/post?url=" +
encodeURIComponent("https://www.instagram.com/reel/DLmR4kXtQ2a/")
);
const post = await res.json();
console.log(post.views); // 2841903
console.log(post.likes); // 193412
The response is a flat, predictable envelope:
{
"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
}
A few field semantics worth knowing. Reels and videos return real view counts. Photo posts return views: null because Instagram does not expose view counts for photos. shares is always 0 on Instagram because share counts are not public. The endpoint accepts either a full URL (any link containing /p/, /reel/, /reels/, or /tv/) or the shortcode directly via ?code=.
Error behavior is designed to be safe to automate against: malformed or unsupported URLs return HTTP 400 and 4xx responses are never charged. A post that does not exist or is private returns HTTP 200 with {"success": false, "error": "not_found"}, which is a real, paid answer: the lookup ran and that is the result.
Which option should you pick?
| Route | Third party posts? | Setup | Cost shape |
|---|---|---|---|
| Official Graph API | No, own accounts only | App review, tokens | Free, high fixed effort |
| DIY scraping | Yes, fragile | Proxies, browsers, upkeep | Infra plus engineer time |
| Subscription vendors | Yes | Sales cycle, contracts, keys | Hundreds per month minimum |
| x402 pay per request | Yes | Fund a wallet with USDC | $0.01 per lookup, zero fixed |
The decision usually reduces to one question: whose posts are you measuring? Your own accounts at scale, use the Graph API. Anyone else's posts, at any volume from one to hundreds of thousands, the pay per request model wins on total cost and wins outright on integration time. It is also the only option on this list that an autonomous agent can use without a human doing procurement first.
Beyond a single post
Real workflows rarely stop at one URL. The same API gives you Instagram profile stats by username (follower counts, post counts, verification), TikTok view counts, and X post stats, all behind the same one cent, same envelope, same payment flow. There is also a universal /api/v1/post endpoint that auto detects the platform from the URL, which is the natural single tool to expose to an AI agent. For a full campaign verification loop over a list of mixed platform URLs, see how agents verify influencer campaign results automatically. If Meta's app review process is the specific wall that sent you searching, Instagram data without the Graph API compares the two paths in detail, and the follower count guide covers the profile side of the ledger.
Start at the quickstart: your first 402 challenge is one curl command away, and your first paid Instagram views lookup is about ten lines of Node behind it.