Skip to main content
Glama
dev.socialscrape/socialscrape

dev.socialscrape/socialscrape

Official

Instagram

instagram
Read-onlyIdempotent

Fetch social profiles, posts, reels, comments, transcripts, hashtag results, and trending content by selecting a resource and passing parameters.

Instructions

Data from Instagram: profiles, posts and videos, transcripts, comments, collections.

Pick a resource, then pass its parameters as top-level arguments (extras in params). Each call costs the credits shown below and the result says what was charged and what is left; failures are free. List resources return a cursor: pass it back unchanged for the next page. Pass max_age_days to accept a cached copy for free.

Resources:

  • basic_profile(id): Instagram profile by user id. 1 credit.

  • highlight(id): Instagram highlight stories. 1 credit. Paged.

  • post(url|id): Instagram post or reel details. 1 credit. Optional: include_play_count.

  • post.comments(url|id): Instagram post comments. 1 credit. Paged. Optional: include_replies.

  • post.transcript(url|id): Instagram reel transcript. 1 credit (captions); AI transcription 1 credit up to 2 minutes, then 5 per started minute of the whole video. Optional: allow_long_transcription.

  • profile(handle): Instagram profile. 1 credit.

  • profile.embed(handle): Instagram profile embed HTML. 1 credit.

  • profile.highlights(handle|id): Instagram story highlights. 1 credit. Paged.

  • profile.post_count(handle): Instagram profile post count. 1 credit. Optional: allow_estimated.

  • profile.posts(handle|id): Instagram profile posts. 1 credit. Paged. Optional: require_play_counts.

  • profile.reels(handle|id): Instagram profile reels. 1 credit. Paged. Optional: require_play_counts.

  • reels.trending(): Instagram trending reels. 1 credit. Paged.

  • search.hashtag(hashtag): Instagram posts by hashtag. 1 credit. Paged. Optional: date_posted, media_type, enrich.

  • search.popular(query): Instagram popular topic. 1 credit. Paged.

  • search.reels(query): Instagram reel search. 1 credit. Paged. Optional: date_posted.

  • song.reels(id): Instagram reels using a song. 1 credit. Paged.

Input Schema

NameRequiredDescriptionDefault
idNoThe platform's id for the item, where a URL is not used. Used by: basic_profile, highlight, post, post.comments, post.transcript, profile.highlights, ...
urlNoPost or reel URL (/p/..., /reel/..., /tv/...). Used by: post, post.comments, post.transcript
queryNoSearch terms. Used by: search.popular, search.reels
cursorNoOpaque cursor from the previous page; pass it back unchanged
handleNoUsername, with or without the leading @. Used by: profile, profile.embed, profile.highlights, profile.post_count, profile.posts, profile.reels
paramsNoAny other parameter for the chosen resource, by name, e.g. {"start_date": "2026-01-01"}. Optional parameters of each resource are in the tool description; call describe for types and allowed values.
regionNoTwo-letter country code (ISO 3166-1) for results that vary by country. Used by: post
resourceYesWhich Instagram data to fetch. The tool description lists what each needs.
date_postedNoOnly posts found in this window. Used by: search.hashtag, search.reels. Allowed values vary by resource (describe shows them)
max_age_daysNoAccept a cached copy fetched within this many days, for 0 credits (0 to 30).
require_play_countsNoAdd likes, comments and video views to every row (one extra page per post), and fail rather than return a video post whose play count is missing (a real 0 is fine). Used by: profile.posts, profile.reels

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds a lot beyond the annotations: per-resource credit pricing, that failures are free, that each result reports credits charged and remaining, cursor semantics for paged resources, and that max_age_days yields a free cached copy. It also discloses non-obvious cost behavior for post.transcript (1 credit for captions vs AI transcription priced 1 credit up to 2 minutes then 5 per started minute of the whole video). Nothing here contradicts the readOnly/non-destructive annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the invocation model and pricing/paging rules before the long resource table, and each resource line is a compact one-liner. The repeated '1 credit' suffix on nearly every line is mildly redundant, but the length is driven by 17 legitimately distinct resources rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a dispatcher with 11 params, a nested free-form `params` object and no output schema, the definition covers what an agent needs: how to select a resource, which argument each resource consumes, cost and failure accounting, pagination via cursor, caching via max_age_days, and where to get detailed optional-parameter types. Only the per-resource response payload shape is left implicit, which the credit/message note and the describe pointer largely mitigate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline would be 3, but the description goes further by mapping parameters to resources (id, url, handle, query) and by naming optional parameters that live only inside the free-form `params` bag — include_play_count, include_replies, allow_long_transcription, allow_estimated, require_play_counts, media_type, enrich, date_posted. It also points to the describe tool for types and allowed values, which is exactly the missing link for a pass-through `params` object.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names the platform and the exact data families (profiles, posts/reels, transcripts, comments, collections), then enumerates all 17 selectable resources with their verb+object meaning, e.g. 'post.transcript(url|id): Instagram reel transcript' and 'song.reels(id): Instagram reels using a song'. An agent can identify the right resource without opening the schema, and it is clearly distinct from siblings like youtube, tiktok or get_profile.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the calling pattern up front ('Pick a resource, then pass its parameters as top-level arguments (extras in params)') and each resource line carries the identifier type it expects, which implicitly routes the agent (handle vs id vs url vs query). It does not, however, say when to prefer this tool over generic siblings such as get_profile, get_post, get_comments or search, nor when to use describe first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.