Instagram Likes Scraper

Export visible public Instagram post liker rows for audience research, influencer vetting, and campaign-overlap analysis.

Data fields

FieldTypeDescription
idstringPublic Instagram profile identifier.
usernamestringPublic Instagram handle.
full_namestringVisible profile display name.
is_privatebooleanVisible account privacy flag.
is_verifiedbooleanVisible verification flag.
profile_pic_urlstringVisible profile image URL.
profile_pic_idstringSource profile image identifier when exposed.
is_newbooleanSource activity flag when exposed.

Input preview

postUrlsInstagram post or Reel URLs *
maxLikesPerPostMaximum visible likers per post
sessionCookieOptional Instagram session cookie
includeProfileDetailsInclude profile details when publicly visible
failOnPrivateOrBlockedFail when a post is private or blocked

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

Ready-to-run examples

Open a saved Apify example, adjust the input, and run the actor in your own Apify account.

View all examples

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

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.

Common questions

Questions and answers reused from the canonical actor README.

What data can I export with Instagram Likes Scraper?

You receive target-bound visible liker rows: public profile IDs, usernames, display names, visible profile state, profile-image references, post context, page, scrape time, and a visibility diagnostic.

Can I run Instagram Likes Scraper through an API, schedule, or MCP client?

Yes. Use the JSON input with the Apify API, schedule the Actor in Apify, or enable its MCP tool URL above. Each route uses the same public-post URL and result-limit inputs.

How much does it cost to scrape Instagram likes?

Pricing is charged for target-bound visible liker rows that are saved. Check the Pricing tab for the current tier rate; no result-row charge is made when no rows are saved.

Why did I get no rows?

Instagram did not expose a target-bound visible liker list for that public post to the selected route. Check the run SUMMARY; an authorized optional secret fallback can still expire or be challenged.

Does it export followers, DMs, or private likes?

No. It is limited to visible liker rows on public media.