Export visible public liker rows from public Instagram posts and Reels for audience research, influencer vetting, and campaign-overlap analysis.
Who is it for?
- Creator marketers comparing the visible audiences of sponsored posts.
- Social media analysts building a reproducible public-engagement export.
- Agencies vetting audience overlap before an influencer campaign.
Each dataset row is tied to the public post URL you supplied. The Actor does not substitute comments, followers, or unrelated profiles for likes.
What it exports
Each saved row includes visible profile identity, profile state, a profile-image reference, post provenance, page number, scrape time, and a visibility diagnostic.
{
"postUrls": ["https://www.instagram.com/p/DLm63qQpxvw/"],
"maxLikesPerPost": 10,
"failOnPrivateOrBlocked": false
}
Example output
{
"id": "123456789",
"username": "public_creator",
"full_name": "Public Creator",
"is_private": false,
"is_verified": false,
"profile_pic_url": "https://...",
"liked_post": "https://www.instagram.com/p/DLm63qQpxvw/",
"source_post_id": "DLm63qQpxvw",
"page": 1,
"visibility_status": "visible"
}
Access and availability
This Actor checks the public post and then attempts its visible Likes list. Instagram can hide, limit, or challenge that list, so the Actor returns only rows it can bind to your requested public post.
An optional secret sessionCookie can help with an authorized public-media run when the managed session is unavailable or challenged. It is used only in memory and is never logged, persisted, included in SUMMARY, or emitted in dataset rows. Do not provide passwords, browser storage state, private-account credentials, or cookies belonging to anyone else.
Input settings
| Input | Description |
|---|---|
postUrls |
One or more direct public instagram.com/p/, instagram.com/reel/, or instagram.com/tv/ URLs. |
maxLikesPerPost |
Maximum target-bound visible liker rows to save per URL (1–1,000). |
sessionCookie |
Optional secret session-cookie fallback for public-media access; used in memory only and never logged or stored. |
includeProfileDetails |
Keep this false unless a public detail route is available; visible-like rows remain the documented output. |
failOnPrivateOrBlocked |
Stop immediately rather than record a diagnostic when a URL is private or blocked. |
Limits and tips
Instagram can hide liker lists, show only a recent slice for high-engagement media, or require a sign-in session. This Actor exports only rows actually exposed by the selected route. It never fabricates unavailable likes; private, blocked, and empty cases are recorded in the SUMMARY key-value record rather than as fake dataset rows.
Start with a small limit. Review visibility_status, and use source_post_id plus id to compare audiences across posts. Save the source URL with your analysis so another team member can repeat the same public-media request.
Instagram likes API usage
Use actor ID fetch_cat/instagram-likes-scraper with the same JSON input as the recipes above.
Node.js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/instagram-likes-scraper').call({
postUrls: ['https://www.instagram.com/p/DLm63qQpxvw/'],
maxLikesPerPost: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
Python
from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("fetch_cat/instagram-likes-scraper").call(run_input={
"postUrls": ["https://www.instagram.com/p/DLm63qQpxvw/"],
"maxLikesPerPost": 10,
})
print(client.dataset(run["defaultDatasetId"]).list_items().items)
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~instagram-likes-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"postUrls":["https://www.instagram.com/p/DLm63qQpxvw/"],"maxLikesPerPost":10}'
MCP and scheduling
In Apify MCP, enable https://mcp.apify.com?tools=fetch_cat/instagram-likes-scraper and pass the same input keys. You can also schedule this Actor in Apify for recurring public-engagement exports; each scheduled run uses the post URLs and limit you select.
Add the MCP server
claude mcp add --transport http apify "https://mcp.apify.com?tools=fetch_cat/instagram-likes-scraper"
{
"mcpServers": {
"apify": {
"type": "http",
"url": "https://mcp.apify.com?tools=fetch_cat/instagram-likes-scraper"
}
}
}
Example prompts: "Export 25 visible likers from this public Instagram post" or "Compare visible liker overlap for these two public post URLs."
Support
For reproducible issues, include the public post URL, selected limit, and the non-sensitive SUMMARY result. Never include a session cookie in a support message.