What Instagram Scraper does and who it is for

Instagram's official API is famously restrictive, leaving a wide gap between what developers want to build and what Meta permits. Instagram Scraper fills part of that gap by wrapping Instagram's internal endpoints in a hosted REST API that returns structured JSON. The API covers a broad surface: user lookups, media retrieval, follower and following lists, comments, likers, stories, hashtag feeds, location-based media, audio reels, user reels, highlights, and tagged posts — 20 endpoints in total.

The typical buyer is a developer building social analytics tools, influencer-research dashboards, competitive monitoring products, or content-aggregation pipelines. Because the provider handles the underlying scraping complexity, integrators get clean JSON responses without worrying about session management, rate-limit evasion, or Instagram UI changes.

Endpoint walkthrough

The 20 endpoints group naturally into a few functional areas.

User and profile data

  • GET /user_info — Fetches profile data by username, including phone and email fields where Instagram exposes them.
  • GET /user_info_by_id — Same detail, looked up by numeric user ID.

Media and content

  • GET /medias and GET /medias_v2 — Pull a user's media posts; both support a batch_size parameter between 1 and 50, letting you control how many items are returned per call.
  • GET /media_info and GET /media_info_v2 — Fetch metadata for a single piece of content identified by its short_code (the alphanumeric string in an Instagram post URL).
  • GET /user_reels — Returns a user's reel posts, paginated via a max_id parameter.
  • GET /audio_reels — Retrieves reels tied to a specific audio track (e.g., https://www.instagram.com/reels/audio/459290957836815), also paginated with max_id.
  • GET /user_highlights — Returns a user's story highlights.
  • GET /user_tagged — Returns posts in which the target user has been tagged.

Social graph

  • GET /followers and GET /following — Enumerate a user's followers or followings with cursor-based pagination.
  • GET /search_followers and GET /search_following — Filter those lists by a search query, useful when you need to find a specific account within a large follower set.

Engagement data

  • GET /media_comments — Returns comments on a post.
  • GET /media_likers — Returns accounts that liked a post; batch_size runs from 1 to 50.

Discovery

  • GET /hash_tag_medias and GET /hash_tag_medias_v2 — Pull posts for a given hashtag. The v2 variant is documented as returning "correct" hashtag results, suggesting an accuracy improvement over the original.
  • GET /location_medias — Returns posts from a geographic location identified by an Instagram location ID, which can be extracted from URLs like https://www.instagram.com/explore/locations/303394066/chicago-union-station/.
  • GET /stories — Fetches the currently active stories for a user.

Pagination model

Most list endpoints use a cursor pattern. Your first request omits the next_cursor parameter. When the response includes a page_info object with "has_next_page": true, copy the end_cursor value from that object and pass it as next_cursor in your next call. This continues until has_next_page is false. Reel endpoints use a separate max_id field from paging_info rather than the generic next_cursor.

Pricing breakdown

Instagram Scraper uses a hard daily request quota combined with a per-minute rate limit. The table below summarises each plan.

Plan Monthly cost Rate limit Daily requests
BASIC $0 3 / minute 10
PRO $5 5 / minute 200
ULTRA $20 10 / minute 1,000
MEGA $100 20 / minute 6,000

The free BASIC tier is genuinely usable for quick prototyping or one-off lookups, but 10 requests per day is a hard ceiling that most production applications will exhaust rapidly. A user profile lookup plus their media feed plus their follower list could already consume three or more calls, meaning ten calls supports only a handful of complete profile pulls daily.

At $5/month, PRO raises the ceiling to 200 daily requests — enough for a lightly used personal tool or a focused analytics workflow that processes a small curated list of accounts. ULTRA at $20/month grants 1,000 requests, which supports moderate batch processing. MEGA at $100/month with 6,000 daily requests is aimed at heavier workloads, though the 20-requests-per-minute rate limit means bursting through those 6,000 requests in a single session is not possible; the full allocation takes a minimum of five hours at the rate cap.

The provider also mentions custom plans available on request via Telegram.

Practical use cases

Influencer research: Pull user_info for a candidate account, then paginate through followers and following to calculate engagement ratios or audience overlap. The search_followers endpoint can filter a large follower list by name without downloading the entire graph.

Content monitoring: Use hash_tag_medias_v2 to track posts under a brand or campaign hashtag, then call media_comments and media_likers to measure engagement on surfaced posts.

Competitive analysis: Periodically fetch medias_v2 for a set of competitor accounts to track posting frequency and content patterns.

Location intelligence: location_medias can surface user-generated content from a physical venue or city — useful for travel, hospitality, or event applications.

Audience tools: user_tagged and user_highlights fill in corners of a profile that the core media feed misses.

Limitations and things to check before integrating

Request budgets are tight on lower tiers. Every paginated call counts toward the daily quota, so deep follower or media crawls can exhaust your allocation quickly on BASIC or PRO. Plan your call patterns carefully and cache results wherever possible.

860 ms average latency means individual calls take close to a second. Pipelines that fire many sequential requests should account for this; at the MEGA rate limit of 20 requests per minute, a single-threaded loop will naturally stay within the cap.

Third-party scraping dependency. This API is not an official Instagram product, so its reliability is tied to Instagram's internal API structure. Field names, availability of email/phone data, and endpoint behaviour can change when Instagram updates its platform.

Data completeness. Whether user_info returns phone or email fields depends on what the target account has made accessible; the API retrieves what Instagram exposes, not more.

No official SDK or webhook support is mentioned in the documentation. This is a straightforward HTTP REST API, so integration is simple, but you will need to manage pagination loops and error handling yourself.

Getting started

Subscribe to a plan on the marketplace, obtain your API key, and issue a GET /user_info?username=<target> request with your key in the authorization header. Validate the response shape against your data model, then build out the pagination loop using the end_cursor field before moving to more complex endpoints. Given the request constraints on BASIC and PRO, it is worth mapping out exactly how many API calls your intended workflow requires before choosing a tier.