Instagram APIinstagram.com ↗
Access trending Instagram Reels, public profile data, post details, and keyword search results via a clean REST API. No authentication required.
What is the Instagram API?
This API covers 6 endpoints for reading public Instagram data: trending reels, individual reel and post details, public user profiles, full profile snapshots with recent content, and keyword-based content search. The get_full_user_profile endpoint alone returns up to 12 recent posts and 12 recent reels alongside follower counts, biography, verification status, and business metadata — all in a single call.
curl -X GET 'https://api.parse.bot/scraper/83bac21b-efd3-4274-a70d-f8c54a03ae0b/get_trending_reels?start_time=2025-06-20T00%3A00%3A00' \ -H 'X-API-Key: $PARSE_API_KEY'
Get currently trending/viral reels from Instagram's Reels tab. Returns a short list of popular reels with engagement metrics, user info, captions, and audio details. No parameters required — returns whatever Instagram is currently featuring. The set rotates frequently; expect 5–10 reels per call. Optional filters can narrow results by hashtag or time range; these are applied locally after fetching from Instagram, so an empty result is possible when no trending reel matches the filter.
| Param | Type | Description |
|---|---|---|
| hashtag | string | Filter reels whose caption contains this hashtag (without the # prefix, e.g. 'fitness', 'cooking'). Case-insensitive match against #<value> in the caption text. Omitting returns all trending reels unfiltered. |
| end_time | string | Include only reels posted at or before this time. Accepts a unix timestamp (e.g. '1787600000') or an ISO 8601 date string (e.g. '2025-06-22T00:00:00'). Omitting applies no upper time bound. |
| start_time | string | Include only reels posted at or after this time. Accepts a unix timestamp (e.g. '1787400000') or an ISO 8601 date string (e.g. '2025-06-20T00:00:00'). Omitting applies no lower time bound. |
{
"type": "object",
"fields": {
"count": "integer — number of reels returned",
"reels": "array of reel objects each containing shortcode, id, taken_at, username, user_id, full_name, is_verified, caption, like_count, comment_count, view_count, play_count, audio (object with title/artist/is_original or null), thumbnail_url, original_width, original_height, and video_versions (array of objects with width, height, url)"
},
"sample": {
"data": {
"count": 3,
"reels": [
{
"id": "3911448041335602393",
"url": "https://www.instagram.com/reel/DZIQUUVNLzZ/",
"audio": {
"title": "Original audio",
"artist": "eva.pepaj",
"is_original": true
},
"caption": "The most peaceful moments of a man’s life…",
"user_id": "221126320",
"taken_at": 1780501022,
"username": "eva.pepaj",
"full_name": "Evaandjavier",
"has_audio": true,
"shortcode": "DZIQUUVNLzZ",
"like_count": 1176254,
"play_count": null,
"view_count": null,
"is_verified": true,
"product_type": "clips",
"comment_count": 18797,
"thumbnail_url": "https://scontent-ams2-1.cdninstagram.com/v/...",
"original_width": 1080,
"original_height": 1920
}
]
},
"status": "success"
}
}About the Instagram API
Trending and Individual Reels
get_trending_reels returns whatever Instagram is currently featuring on its Reels tab — no parameters required. Each item in the reels array includes shortcode, like_count, username, is_verified, caption, and audio details. The set rotates frequently, so polling this endpoint at regular intervals captures the current viral surface. To dig deeper into a specific reel, pass its shortcode to get_reel_details, which adds video_version_urls, location (with name, city, and pk), and a taken_at unix timestamp.
User Profiles
Two endpoints serve profile data at different depths. get_user_profile returns lightweight data — biography, follower_count, following_count, media_count, bio_links, is_verified, and is_private — useful for quick lookups. get_full_user_profile returns all of that plus recent_posts (up to 12 items with display_url, video_url, like_count, comment_count, and taken_at_timestamp) and recent_reels (up to 12 items with video_view_count and video_duration). Both endpoints accept a username string without the @ prefix and only work for public profiles.
Posts and Search
get_post_details accepts a post shortcode and returns caption, is_video, like_count, comment_count, dimensions, display_url, video_url, and an optional location object. search_content takes a free-text query (e.g. 'fitness motivation') and returns up to 12 popular media items matching that keyword, each with media_type, shortcode, username, is_verified, and thumbnail URLs. Results skew heavily toward video content. Note that fields like like_count may be null on some search result items.
The Instagram API is a managed, monitored endpoint for instagram.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when instagram.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official instagram.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track which Reels are trending in real time using
get_trending_reelsfor a viral content dashboard. - Monitor a public creator's follower growth over time by polling
get_user_profileforfollower_countandmedia_count. - Build a competitor analysis tool by comparing recent post engagement from
get_full_user_profileacross multiple accounts. - Populate a content discovery feed by running keyword queries through
search_contentand displaying matching thumbnails and captions. - Detect location-tagged Reels by extracting the
location.cityandlocation.namefields fromget_reel_details. - Audit brand profiles by reading
bio_links,biography, andexternal_urlfromget_user_profile. - Identify video posts within a profile by filtering the
recent_postsarray fromget_full_user_profileon theis_videoflag.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Instagram have an official developer API?+
What does `get_full_user_profile` return compared to `get_user_profile`?+
get_user_profile returns a flat profile object: biography, follower/following counts, media count, bio_links, is_verified, is_private, and external_url. get_full_user_profile returns all of that inside a profile sub-object, plus two arrays — recent_posts and recent_reels — each capped at 12 items, along with aggregate counts (total_posts_count, total_reels_count) for the account.Can I retrieve comments on a post or reel?+
get_post_details and get_reel_details return comment_count as an integer but do not return the comment text or commenter data. You can fork this API on Parse and revise it to add a comment-fetching endpoint.Does the API cover private Instagram accounts?+
get_user_profile and get_full_user_profile only return data for public profiles; the is_private flag in the response will indicate when an account is private. Posts and reels from private accounts are not accessible. You can fork this API on Parse and revise it if your use case requires detecting private-account states in bulk.How fresh is the trending Reels data from `get_trending_reels`?+
count field and typically returns 5–12 items per call.