Docs
Log in
Use the JS token

Instagram scrapers work best with your JavaScript token.

API usage

Add &scraper=instagram-post to a Crawling API request. URL-encode the target URL in the url parameter.

curl 'https://api.crawlbase.com/?token=YOUR_TOKEN' \
  --data-urlencode 'url=https://www.instagram.com/p/B5LQhLiFFCX' \
  --data-urlencode 'scraper=instagram-post' -G
from crawlbase import CrawlingAPI

api = CrawlingAPI({'token': 'YOUR_TOKEN'})
res = api.get(
    'https://www.instagram.com/p/B5LQhLiFFCX',
    {'scraper': 'instagram-post'}
)

import json
data = json.loads(res['body'])
const { CrawlingAPI } = require('crawlbase');
const api = new CrawlingAPI({ token: 'YOUR_TOKEN' });

const res = await api.get(
  'https://www.instagram.com/p/B5LQhLiFFCX',
  { scraper: 'instagram-post' }
);
const data = JSON.parse(res.body);
require 'crawlbase'
api = Crawlbase::API.new(token: 'YOUR_TOKEN')

res = api.get('https://www.instagram.com/p/B5LQhLiFFCX', scraper: 'instagram-post')
data = JSON.parse(res.body)

Example input URL

The URL passed in the url parameter (URL-decoded for readability):

https://www.instagram.com/p/B5LQhLiFFCX

Response shape

JSON response body. Field types may be null when the source page omits the value.

id
string
Post shortcode.
caption
string
Caption text.
owner_username
string
Author username.
media_type
string
image, video, or carousel.
media_urls
array<string>
Direct URLs to image(s) or video(s).
hashtags
array<string>
Hashtags from the caption.
mentions
array<string>
@-mentioned usernames.
location
string | null
Tagged location.
like_count
integer
Likes.
comment_count
integer
Comments.
posted_at
string
ISO 8601 timestamp.

Sample response

{
  "id": "B5LQhLiFFCX",
  "caption": "New product launch! #design #craft",
  "owner_username": "apple",
  "media_type": "image",
  "media_urls": ["https://scontent.cdninstagram.com/...jpg"],
  "hashtags": ["design", "craft"],
  "mentions": [],
  "like_count": 142000,
  "comment_count": 3210,
  "posted_at": "2026-04-15T14:22:00Z"
}