~ / endpoints / Post API

Instagram Post Scraper API

Our Instagram post scraper takes a post URL or shortcode and returns the whole post as structured JSON: the caption, owner, timestamp, like and comment counts, post type, the media URLs, and the top comments, all from a single request with no login.

Get a free API keyBrowse the endpoints
1,000
free requests / mo
2.6s
median response
JSON
structured output
1
call per post

Use it for

>

Competitor and trend tracking

Poll a set of post URLs on a schedule and store the caption, like_count, and comment_count to chart how a rival's content performs over time.
>

Campaign measurement

Resolve a list of campaign post URLs into clean rows of engagement metrics so you can report reach and interaction without opening the app.
>

Content archives

Capture the caption, media URLs, and timestamp of posts you care about into a searchable record that survives a deleted post.
>

Engagement audits

Read the like and comment counts plus the top comments on a creator's posts to judge whether interaction is genuine before a sponsorship.

Quickstart

cURL
curl "https://api.instagramscraperapi.com/api/v1/instagram/post?url=https://www.instagram.com/p/C5xExample/&api_key=$API_KEY"
Python
import requests, os

BASE = "https://api.instagramscraperapi.com"
API_KEY = os.environ["API_KEY"]

# Pass a post/reel URL or a bare shortcode.
data = requests.get(
    f"{BASE}/api/v1/instagram/post",
    params={"url": "https://www.instagram.com/p/C5xExample/", "api_key": API_KEY},
    timeout=30,
).json()

print(data["caption"])
print(data["like_count"], "likes |", data["comment_count"], "comments")
for c in data["comments"]:
    print("-", c["username"], ":", c["text"])

Response

200 OK
{
  "shortcode": "C5xExample",
  "media_id": "3312345678901234567",
  "url": "https://www.instagram.com/p/C5xExample/",
  "media_type": "image",
  "is_video": false,
  "caption": "Sunrise over the ridge.",
  "owner_username": "space_explorer",
  "owner_id": "1748234592",
  "taken_at": "2026-03-31T14:20:05.000Z",
  "like_count": 4821,
  "comment_count": 63,
  "image_urls": [
    "https://scontent-lax7-1.cdninstagram.com/v/t51.2885-15/example.jpg"
  ],
  "video_url": null,
  "comments": [
    {
      "id": "17954321098765432",
      "username": "trail_notes",
      "text": "Incredible light.",
      "likes": 12
    }
  ],
  "source": "instagram",
  "data_source": "embedded"
}
FieldTypeDescription
shortcodestringThe post shortcode, parsed from the URL you passed.
media_idstringThe numeric media id resolved for the post, used to enrich from the media API.
media_typestringimage, carousel, or video.
captionstringThe full caption text, or null when the post has none.
owner_usernamestringThe handle of the account that published the post.
like_countintegerLikes at capture time, or null when Instagram hides the count.
comment_countintegerTotal comment count on the post.
image_urlsarrayFull-resolution media URLs, every carousel frame in order. video_url carries the file for a reel or video post.
commentsarrayThe top comments embedded on the post page. For a full thread with cursor pagination, use the comments endpoint.

How it works

  1. Send a GET request with your target and API key.
  2. We route through residential proxies, handle anti-bot, and parse the response.
  3. You get validated JSON back, ready to use.

How it compares

Our APIDIY (requests / headless)Instagram Graph API
Input by URL or shortcodeYes, post or reel URLManual page fetch and parseBy owned media id only
Public postsAny public postPossible but parser breaks oftenOnly media you own or manage
SetupAPI key onlyResidential proxies, headless browser, parsersFacebook app, linked Business account, app review
Caption and countsParsed from the post objectBuried in a hydrated blob you must locateAvailable for your own media
Media URLsFull-res, carousel frames includedYou extract and race the CDN yourselfScoped to your assets
OutputValidated JSON, stable schemaRaw HTML you parse yourselfJSON, scoped to your assets

Pricing

PlanPriceBest for
Free1,000 requestsTesting and small jobs
Pro$0.60 / 1kProduction workloads
Pay-as-you-go$0.90 / 1kSpiky or one-off volume

Median response 2.6s. You only pay for successful requests.

FAQ

What is an Instagram post scraper?

An Instagram post scraper is a tool that reads a public post and returns its data in a structured format. Our endpoint takes a post URL or shortcode and returns the caption, owner, timestamp, like and comment counts, post type, media URLs, and the top comments as JSON from a single request, with no login or Facebook app.

How do I scrape an Instagram post without writing a parser?

Send one GET request to the instagram/post endpoint with the post URL (or a bare shortcode) and your API key. We route through residential IPs, handle anti-bot checks, retry on failure, and parse the post object, so you get clean JSON back without maintaining selectors against Instagram's changing markup.

Does the post endpoint return all comments?

It returns the comments embedded on the post page, which is the top slice of the thread rather than every comment. Instagram serves the full comment list through a separate authenticated API that pages with a cursor. To pull a long thread in full, use the dedicated comments endpoint, which resolves the media id and pages through the thread and reports honestly when Instagram gates it.

Can I get the images and video from a post?

Yes. image_urls returns the full-resolution photo for each frame of a carousel, and video_url carries the file for a reel or video post. The links are served from Instagram's CDN and expire, so download the files while they are fresh rather than storing the URLs for later.

Does Instagram have an official post API?

Only a limited one. The official Instagram Graph API reads media on accounts you own or manage through a connected Business or Creator account and is capped at 200 calls per hour. It does not let you pull an arbitrary public post by URL, which is exactly where a post scraper applies.

Is scraping Instagram posts legal?

Scraping publicly visible data is broadly permitted in many jurisdictions, and in Meta Platforms v. Bright Data (January 2024) a federal court held that Meta's terms do not bar logged-off scraping of public data. Captions and media can carry personal data and copyrighted work, though, so use post data only where you have a lawful basis, comply with GDPR and CCPA, and take your own legal advice.

Get post api as JSON
Free plan, 1,000 requests. No credit card required.
Get a free API key All endpoints