Instagram connector

Instagram Scraper API for Profiles, Posts, and Reels

The SurfSense Instagram scraper extracts public profiles, posts, and reels without logging in or registering for the Instagram Graph API. Give your AI agents a live feed of what creators post, so you spot trends and shifts in engagement first.

agent · surfsense

$

instagram.scrape({ urls: ["instagram.com/competitor/"],
  result_type: "reels", max_items: 20 })
  • Behind the scenes of our new launch@competitor · 84.2k likes · 1,203 commentstop reel
  • Cadence up 40% this month, all short-form reels20 reels · 12 daystrend
  • 3 creators tagged asking for a collab@a · @b · @c · buying intentlead signal

20 reels · surfaced in 2.4s

What you can extract from Instagram

Every Instagram scraper call returns structured items keyed by type. Point the API at a public profile, post, or reel URL, or discover creators with a search query.

Posts and reels

Caption, hashtags, mentions, like and comment counts, media URLs, dimensions, and timestamp from any public post or reel.

Profile data

Follower, following, and post counts, bio, external URL, verified and business flags for public Instagram profiles.

Owner and media

Owner username and id on every item, plus image and video URLs, alt text, and view counts.

What teams do with the Instagram scraper API

Creator and competitor monitoring

Scrape Instagram profiles and feeds to track what competitors and target creators post, and how engagement moves. Feed the stream to an agent that flags viral formats, launches, and shifts in cadence the moment they land.

Content and format research

Pull a creator's recent posts and reels to see which formats earn the most likes and comments, and turn that into a content calendar your team can act on.

Influencer vetting and outreach

Use the Instagram profile scraper to verify follower count, post cadence, and real engagement from public data before you pay for a partnership.

Call it from your code or your agent

One typed endpoint, one API key. Or add the SurfSense MCP server and let your agent call instagram.scrape as a native tool.

curl -X POST "$SURFSENSE_API_URL/workspaces/$WORKSPACE_ID/scrapers/instagram/scrape" \
  -H "Authorization: Bearer $SURFSENSE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "urls": [
      "instagram.com/natgeo/"
    ],
    "result_type": "reels",
    "max_items": 20
  }'

Instagram API request and response schema

The exact contract behind POST /workspaces/{workspace_id}/scrapers/instagram/scrape. The same fields power the instagram.scrape MCP tool.

Request parameters

Provide exactly one source: urls OR search_queries (never both). Up to 20 sources per call.

Request parameters
FieldTypeDescription
urlsstring[]
default []
Instagram URLs or bare profile IDs: profile, post (/p/), or reel (/reel/). Hashtag and place URLs are login-walled and unsupported. Max 20.
search_queriesstring[]
default []
Discovery keywords resolved to public profiles via Google. Provide these OR urls, not both. Max 20.
search_typestring
default "profile"
What to discover from search_queries: profile or user. Only used with search_queries.
result_typestring
default "posts"
Which feed to return: posts or reels.
newer_thanstringOnly return posts newer than this: YYYY-MM-DD, ISO timestamp, or relative ('1 day', '2 months'), UTC.
skip_pinned_postsboolean
default false
Exclude pinned posts in posts mode.
max_per_targetinteger
default 10
Max results per URL or per discovered target.
max_itemsinteger
default 10
Max total items to return across all sources. 1 to 100.
add_parent_databoolean
default false
Attach a dataSource block to each feed item describing its source.

Response fields

The response is { items: [...] } with one flat media item per result. Fields the anonymous endpoints do not expose are null. One returned item is one billable unit.

Response fields
FieldTypeDescription
id / shortCode / urlstringIdentity and provenance: the media id, shortcode, and canonical post URL.
typestringMedia type: Image, Video, or Sidecar (carousel).
caption / hashtags / mentionsstring / string[]Caption text plus the hashtags and @-mentions parsed from it.
likesCount / commentsCountintegerEngagement counts. likesCount is -1 when the creator hides likes.
displayUrl / videoUrl / videoViewCountstring / integerMedia URLs and, for videos, the public view count.
ownerUsername / ownerId / ownerFullNamestringThe account that posted the item.
timestampstringISO timestamp for when the post was published.
images / childPostsstring[] / object[]Carousel (sidecar) children: each child's media URL and metadata.
taggedUsers / coauthorProducersobject[]Users tagged in the media and any co-authors credited on it.
locationName / locationId / productType / isPinnedstring / booleanLocation tag, product type (feed/clips), and whether the post is pinned.

An Instagram Graph API alternative built for agents

The official Instagram Graph API requires a Business account, app review, and access tokens, and it cannot read arbitrary public profiles. SurfSense is an Instagram API alternative for public data. Here is how it compares.

FeatureInstagram Graph APISurfSense
AccessBusiness/Creator account + app review + tokensPublic data only, no login or account required
CoverageMostly your own or connected accountsAny public profile, post, or reel
SetupRegister an app, pass review, manage tokensOne API key, or add the MCP server to your agent
Agent-readyNo; you build the harness yourselfMCP server exposes instagram.scrape as a native tool

Instagram API: frequently asked questions

Point your agents at Instagram

The Instagram connector is one of many in the SurfSense competitive intelligence platform. Start free, no credit card required.

SurfSense