What the Instagram Profile API does and who it is for

The Instagram Profile API is a scraping-layer service that wraps Instagram's public data into a set of REST endpoints. Rather than navigating Instagram's official Graph API — which requires app review, business account linkage, and increasingly restrictive permissions — developers call this API with a username, user ID, shortcode, or keyword and receive structured JSON in return. Profile images are proxied through the API itself, meaning you can render them in a browser without running into Instagram's cross-origin restrictions.

The likely audience is small-to-mid scale projects: social analytics dashboards, influencer research tools, portfolio sites that want to embed an Instagram feed, or automation scripts that monitor follower counts. It is explicitly not an official Instagram product, so any use must be weighed against Instagram's Terms of Service for the target application.

Endpoint walkthrough

The API exposes 28 endpoints across several functional groups.

Profile and identity

  • /getprofile/{username} and /getprofileinfo/{username} return detailed profile data including full name, bio, follower and following counts, and email where publicly available.
  • /getid/{username} and /getinfo/{username} return lighter-weight profile objects — useful when you only need the numeric user ID or a quick lookup without the full payload.
  • /getid/{id} performs the reverse lookup: given a numeric Instagram ID, it returns the associated username and basic profile details.

Followers and following

Both follower and following lists are paginated in batches of 12. You can query by either username or numeric ID:

  • /getfollowers/{id}, /getfollowerswithusername/{username}
  • /getfollowing/{id}, /getfollowing/{username}

Pagination is handled via a ?page={pages} query parameter. At 12 records per request, fetching a large follower list will consume your monthly quota quickly — keep that in mind when estimating usage on the paid tiers.

Content: feed, stories, reels, videos, highlights

  • /getfeed/{username} returns a user's recent posts with a ?next= cursor for pagination.
  • /getstory/{username} retrieves active stories.
  • /getreel/{username} and /getvideo/{username} return reels and video posts respectively, each with their own cursor-based pagination.
  • /gethighlights/{username} lists highlight albums; /gethighlightitem/{id} fetches the individual items inside a highlight.

Post details, likers, and comments

  • /getpost/{shortcode} returns detail about a single post (likes, comment count, video views where applicable).
  • /likers/{shortcode} lists users who liked a post.
  • /comments/{media_id} returns comment data for a given media ID.

Search and discovery

  • /searchuser/{username} searches for users by username string.
  • /search/{keyword} returns hashtags and places matching a keyword.
  • /hashtags/{keyword} returns the media list for a hashtag.
  • /places/{id} returns the media list for a location.

Pricing breakdown

All plans share a 1 request per second rate limit. The differentiation is purely in monthly request volume.

Plan Price / month Monthly requests
BASIC $0 50
PRO $3.33 10,000
ULTRA (recommended) $8.88 30,000
MEGA $22.22 100,000

The free BASIC tier allows only 50 requests per month — enough to verify the integration works, but insufficient for any real workload. A single paginated follower fetch for a mid-size account could consume those 50 calls in one session. PRO at $3.33/month gives 10,000 requests, which is workable for a personal project or a tool checking a small set of profiles daily. ULTRA at $8.88/month is marked as the recommended tier and provides 30,000 requests — roughly 1,000 requests per day. MEGA at $22.22/month offers 100,000 requests and would suit a more data-intensive analytics product.

The rate limit of 1 req/s applies across all tiers, so even on MEGA you cannot burst; responses arrive sequentially.

Practical use cases

  • Influencer vetting: Pull profile stats (followers, following, bio) for a list of usernames to build a quick screening sheet before outreach.
  • Social feed widget: Use /getfeed with cursor pagination to embed a live Instagram feed on a website, with proxy images that actually render in browsers.
  • Competitor monitoring: Track follower counts or recent post engagement (likes, comments, views) for a set of competitor accounts on a schedule.
  • Hashtag research: Query /hashtags/{keyword} to surface recent posts under a given tag for content research or trend tracking.

Limitations and things to check before integrating

Two numbers in the fact sheet warrant direct attention.

Success rate of 57% — roughly 4 in 10 requests fail. For any production-facing feature, a failure rate this high means you need robust retry logic, graceful degradation in your UI, and caching of successful responses to reduce re-fetching. Do not pipe this API directly into a synchronous user-facing request without a fallback.

Average latency of 1,387 ms — nearly 1.4 seconds per call on average. Combined with the 1 req/s rate limit, bulk operations will be slow. For a dashboard fetching 100 profiles, expect several minutes of wall-clock time even under ideal conditions.

Beyond performance, the API scrapes Instagram rather than using an official integration. Instagram periodically changes its internal data structures, which can break scraping APIs without notice. Check the provider's changelog or community feedback before building anything mission-critical on top of it.

The 12-results-per-page limit on follower/following endpoints also means that enumerating large audiences is expensive in API calls. Plan your quota accordingly.

Getting started

Subscribe to the BASIC plan to obtain your API key at no cost. The free tier gives you 50 calls — enough to test /getprofile/{username}, try a paginated follower fetch, and verify that proxy images load in your target environment. If your tests pass and the reliability profile is acceptable for your use case, upgrade to PRO or ULTRA depending on your expected daily call volume. Build in retry handling from day one given the observed success rate, and cache responses where the data does not need to be real-time.