Instagram Scraper avatar

Instagram Scraper

Pricing

from $2.99 / 1,000 results

Go to Apify Store
Instagram Scraper

Instagram Scraper

Extract Instagram posts, reels, profiles, places, hashtags, carousels, and comments. Get data from Instagram using one or more Instagram URLs or search queries: content, context, metrics, metadata. Export scraped data, run the scraper via API, schedule and monitor runs or integrate with other tools.

Pricing

from $2.99 / 1,000 results

Rating

0.0

(0)

Developer

ScrapeAI

ScrapeAI

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

4 days ago

Last modified

Share

Extract Instagram posts, reels, profiles, places, hashtags, carousels, and comments with structured metadata, metrics, and high detail.

Get data from Instagram using one or more Instagram URLs or search queries: content, context, metrics, and metadata. Export scraped data in JSON, CSV, Excel, or HTML format, run the scraper via API, schedule and monitor runs, or integrate with other automation tools.


🌟 Key Features

  • Multi-Entity Extraction: Scrape Profiles, Posts, Reels, Carousels, Hashtags, Locations/Places, and Comments in a single run.
  • Flexible Input Support: Input direct Instagram URLs (profile links, post permalinks, reel URLs, tag pages, place pages) or search keywords.
  • Dynamic Dataset Output: Produces dynamic JSON output tailored to your selected resultsType (posts, comments, details, reels).
  • Rich Context & Metrics: Collect likes count, comments count, video views, captions, user handles, timestamps, media URLs, carousel slide breakdowns, hashtags, and user mentions.
  • Comment Extraction: Pull detailed comments per post including commenter handle, comment text, timestamp, and comment likes.
  • Apify Proxy Ready: Built-in support for Apify Proxy to prevent rate limits and geo-restrictions.

📥 Input Parameters

ParameterTypeDefaultDescription
directUrlsArray["https://www.instagram.com/instagram/"]List of target Instagram URLs (Profile, Post, Reel, Hashtag, or Place).
searchQueriesArray["instagram"]Keywords or handles to search.
searchTypeString"user"Search target type: "user", "hashtag", or "place".
resultsTypeString"posts"Desired dataset output type: "posts", "comments", "details", or "reels".
resultsLimitInteger20Maximum number of items to scrape per URL/query.
includeCommentsBooleantrueInclude top comments for posts/reels.
proxyConfigurationObject{ "useApifyProxy": false }Apify proxy configuration options.
debugLogBooleanfalseEnable verbose diagnostic logging.

Example input.json

{
"directUrls": [
"https://www.instagram.com/instagram/",
"https://www.instagram.com/p/C-XyZ12345/",
"https://www.instagram.com/reel/C-AbCd12345/",
"https://www.instagram.com/explore/tags/photography/"
],
"searchQueries": [
"photography",
"travel"
],
"searchType": "user",
"resultsType": "posts",
"resultsLimit": 10,
"includeComments": true,
"debugLog": false
}

📤 Dataset Output Formats

Depending on the resultsType selected, the actor pushes dynamic records to the output dataset.

1. Post / Reel / Carousel Item Output

{
"id": "post_C-XyZ12345",
"type": "Image",
"shortCode": "C-XyZ12345",
"url": "https://www.instagram.com/p/C-XyZ12345/",
"caption": "Exploring breathtaking views! #photography #travel",
"likesCount": 14250,
"commentsCount": 320,
"videoViewCount": 0,
"timestamp": "2026-08-01T12:00:00.000Z",
"ownerUsername": "instagram_creator",
"ownerId": "987654321",
"displayUrl": "https://instagram.com/media/C-XyZ12345.jpg",
"childPosts": [
{ "id": "slide_1", "displayUrl": "https://instagram.com/media/C-XyZ12345_1.jpg" },
{ "id": "slide_2", "displayUrl": "https://instagram.com/media/C-XyZ12345_2.jpg" }
],
"hashtags": ["#photography", "#travel"],
"mentions": ["@instagram"],
"comments": [
{
"commentId": "c_C-XyZ12345_1",
"text": "Awesome post! Keep it up 🔥",
"timestamp": "2026-08-01T12:05:00.000Z",
"ownerUsername": "fan_user_1",
"ownerProfileUrl": "https://www.instagram.com/fan_user_1/",
"likesCount": 14,
"postId": "post_C-XyZ12345",
"postShortCode": "C-XyZ12345"
}
],
"scrapedAt": "2026-08-06T15:03:00.000Z"
}

2. Profile Details Item Output

{
"id": "1029384756",
"username": "instagram",
"fullName": "Instagram",
"biography": "Discover what's next on Instagram 💫",
"externalUrl": "https://about.instagram.com",
"followersCount": 670000000,
"followsCount": 85,
"postsCount": 7400,
"profilePicUrl": "https://instagram.com/p/instagram/avatar.jpg",
"isVerified": true,
"isPrivate": false,
"url": "https://www.instagram.com/instagram/",
"scrapedAt": "2026-08-06T15:03:00.000Z"
}

🚀 How to Run

Via Apify CLI

# Validate input schema
apify validate-schema
# Run actor locally with simulated platform storage
apify run

Via npm

# Install dependencies
npm install
# Execute main script
npm start

Via Apify API (Node.js SDK)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('username/instagram-scraper').call({
directUrls: ['https://www.instagram.com/instagram/'],
resultsType: 'posts',
resultsLimit: 20
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

🔒 Proxy & Compliance

When scraping public data at scale, it is recommended to enable Apify Proxy (useApifyProxy: true) to avoid request throttling and ensure smooth data retrieval.