Instagram Posts Scraper avatar

Instagram Posts Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Instagram Posts Scraper

Instagram Posts Scraper

๐Ÿ“ธ Instagram Posts Scraper scrapes Instagram posts at scale โ€” captions, hashtags, media URLs, likes, comments, views, location, timestamps & mentions. โš™๏ธ Clean, exportable CSV/JSON data for analytics, social listening, competitor research & influencer marketing. ๐Ÿš€

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

ScraperForge

ScraperForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Instagram Posts Scraper

The Instagram Posts Scraper is a fast, reliable Apify actor that lets you scrape Instagram posts from public profiles at scale โ€” no login required. This Instagram scraper solves the pain of manual scrolling by collecting clean, structured post data (IDs, captions, media URLs, engagement, timestamps, and more) you can export for analysis. Designed for marketers, developers, data analysts, and researchers, this Instagram posts scraper tool works as an Instagram profile posts scraper and Instagram post data extractor to power social listening, competitor monitoring, and content intelligence at scale. ๐Ÿš€

What data / output can you get?

Below are real fields produced by the actor. The scraper keeps Instagramโ€™s original item structure and adds three minimal metadata fields for traceability.

Data typeDescriptionExample value
idCombined post and user identifier"3727992219681477950_173560420"
pkPost primary key"3727992219681477950"
codeInstagram shortcode for the post"DO8fSwLiNU-"
post_urlCanonical post URL (added by actor)"https://www.instagram.com/p/DO8fSwLiNU-/"
taken_atUnix timestamp when the post was published1758631325
like_countNumber of likes7141379
comment_countNumber of comments72516
caption.textFull caption text"Happy Saudi National Day to everyone in Saudi Arabia! ๐Ÿ‡ธ๐Ÿ‡ฆ Wishing you a day filled with pride, unity, and celebration with your loved ones."
user.usernamePost ownerโ€™s username"cristiano"
media_typeMedia type (e.g., 8 = carousel_container)8
product_typeMedia product subtype"carousel_container"
original_widthOriginal media width1440
original_heightOriginal media height1839
image_versions2.candidates[].urlDirect media URL(s)"https://scontent-iad3-1.cdninstagram.com/v/t51.2885-15/552825156_..."
carousel_media_countNumber of items in carousel3
scraped_usernameResolved profile username (added by actor)"cristiano"
scraped_atUnix timestamp when the post was scraped (added by actor)1758728197

Notes:

  • The actor preserves Instagramโ€™s response shape (e.g., caption, user, image_versions2, carousel_media, and engagement metrics). It only adds scraped_username, scraped_at, and post_url for lineage.
  • Export results from the Apify dataset in JSON or CSV for downstream analysis and reporting.

Key features

  • ๐Ÿ”Ž Robust username resolution from any input
    Feed it profile URLs, plain usernames, or post shortcodes โ€” the scraper validates input and extracts the correct username using multiple strategies (post page patterns, embed page, GraphQL/web endpoints, and alternative headers).

  • ๐Ÿงญ Public data, no login
    A streamlined Instagram scraping tool without API keys or logins. It targets publicly available Instagram post data for safe, frictionless extraction.

  • ๐Ÿ“ฆ Structured Instagram post metadata
    Works as an Instagram post metadata scraper and Instagram content scraper, capturing fields like code, id, caption, like_count, comment_count, product_type, original dimensions, and media URLs.

  • ๐Ÿ–ผ๏ธ Media and carousel support
    Functions as an Instagram image scraper with image_versions2 candidates and carousel_media items to help you analyze assets and creatives reliably.

  • ๐Ÿงฐ Batch scraping at scale
    Add multiple inputs to startUrls to run this bulk Instagram posts scraper across many profiles in one run, with respectful delays and pagination.

  • ๐Ÿ”„ Sorting and limits you control
    Choose sortOrder ("newest" or "oldest") and set maxPosts per profile (1โ€“1000) to tune result volume and ordering for your workflow.

  • ๐Ÿงช Resilient by design
    Built-in retries, backoff, and a proxy strategy that always uses residential proxy โ€” with fallback logic โ€” to minimize blocks and maximize stability.

  • ๐Ÿ Developer-friendly Python foundation
    Implemented as an Apify actor in Python (apify SDK), making it easy to incorporate into data pipelines as an Instagram post scraper Python solution.

How to use Instagram Posts Scraper - step by step

  1. ๐Ÿ”‘ Sign in to Apify
    Create a free account or log in to your Apify workspace.

  2. ๐Ÿ” Find the actor
    Open the โ€œInstagram Posts Scraperโ€ actor from your dashboard or the Apify Store.

  3. ๐Ÿงพ Add input data
    In the startUrls field, paste any mix of Instagram profile URLs (e.g., https://www.instagram.com/username/), plain usernames (e.g., username), or post shortcodes (e.g., ABC123DEF). The scraper will auto-detect and resolve the profile.

  4. โš™๏ธ Configure settings

    • maxPosts: Set how many posts to collect per profile (1โ€“1000).
    • sortOrder: Choose "newest" or "oldest".
    • maxComments: Optional limit for comments per post (0โ€“100).
    • proxyConfiguration: You can configure a proxy block, but the actor always enforces a residential proxy internally for reliability.
  5. โ–ถ๏ธ Run the actor
    Click Start. The job will resolve usernames, fetch tokens, paginate posts, and push items to the runโ€™s dataset.

  6. ๐Ÿ“ฅ Download results
    When finished, open the Dataset tab and export your results in JSON or CSV for analysis, dashboards, or BI tools.

Pro tip: You can paste an Instagram post shortcode directly โ€” the actor will resolve the ownerโ€™s username automatically and then scrape posts from that profile.

Use cases

Use case nameDescription
Marketing + competitor post trackingBenchmark competitors by extracting post cadence, captions, and engagement to power content strategy and reporting.
Social analytics + content researchScrape Instagram posts to study formats, carousel use, and message themes that correlate with higher like_count and comment_count.
Influencer vettingPull recent profile posts and engagement signals to assess authenticity and brand fit before outreach.
Brand monitoring (public profiles)Monitor official brand profilesโ€™ Instagram feed for campaign launches and messaging shifts in near real time.
Creative asset analysisUse media URLs and original dimensions from image_versions2 to analyze creative specs and build asset libraries.
Data engineering pipelineIngest structured JSON from Apify datasets into warehouses for modeling, dashboards, and enrichment.
Academic & trend researchExtract public Instagram post data for longitudinal studies of content dynamics, narratives, and attention patterns.

Why choose Instagram Posts Scraper?

This Instagram public posts scraper is built for precision, resiliency, and clean output โ€” ideal for production data pipelines.

  • โœ… Always-on residential proxy with fallback for high reliability and fewer blocks
  • โœ… Accurate username extraction from profile URLs, usernames, and post shortcodes
  • โœ… Scalable batch runs with pagination, retry logic, and backoff
  • โœ… Clean, structured JSON output with minimal, helpful additions (scraped_username, scraped_at, post_url)
  • โœ… Developer-friendly Python implementation and Apify Actor workflow
  • โœ… No login required for public data, reducing operational risk
  • โœ… Cost-efficient way to scrape Instagram posts at scale with exportable datasets

Compared to browser extensions or unstable scripts, this production-ready Instagram feed scraper emphasizes durability, structure, and control.

Yes โ€” when used responsibly. This actor targets publicly available Instagram content from public profiles only and does not access private accounts or authenticated data.

Guidelines:

  • Scrape public data only; do not attempt to access private or gated content.
  • Review and respect Instagramโ€™s terms of service and platform policies.
  • Ensure your use complies with relevant laws (e.g., GDPR, CCPA) and your organizationโ€™s policies.
  • Use scraped data ethically โ€” for analysis and research, not misuse or spam.

When in doubt, consult your legal team for edge cases and region-specific requirements.

Input parameters & output format

Example JSON input

{
"startUrls": [
"https://www.instagram.com/cristiano/",
"neymarjr",
"DO8fSwLiNU-"
],
"maxPosts": 10,
"sortOrder": "newest",
"maxComments": 0,
"proxyConfiguration": {
"useApifyProxy": false
}
}

Parameters:

  • startUrls (array of strings) โ€” List one or more Instagram profile URLs (e.g., https://www.instagram.com/username), usernames (e.g., username), or post shortcodes (e.g., ABC123DEF). Required: Yes. Default: none.
  • maxPosts (integer) โ€” Maximum number of posts to scrape per profile (1โ€“1000). Required: No. Default: 10.
  • sortOrder (string) โ€” Order in which to sort the posts. Allowed: "newest", "oldest". Required: No. Default: "newest".
  • maxComments (integer) โ€” Maximum number of comments to extract per post (0โ€“100). Required: No. Default: 0.
  • proxyConfiguration (object) โ€” Note: This actor always uses residential proxy regardless of your selection. You can configure proxy settings here, but residential proxy will be used automatically. Required: No. Default: none.

Example JSON output

[
{
"pk": "3727992219681477950",
"id": "3727992219681477950_173560420",
"code": "DO8fSwLiNU-",
"taken_at": 1758631325,
"like_count": 7141379,
"comment_count": 72516,
"media_type": 8,
"product_type": "carousel_container",
"original_width": 1440,
"original_height": 1839,
"caption": {
"text": "Happy Saudi National Day to everyone in Saudi Arabia! ๐Ÿ‡ธ๐Ÿ‡ฆ Wishing you a day filled with pride, unity, and celebration with your loved ones."
},
"user": {
"username": "cristiano",
"full_name": "Cristiano Ronaldo",
"id": "173560420",
"is_private": false,
"is_verified": true
},
"image_versions2": {
"candidates": [
{
"url": "https://scontent-iad3-1.cdninstagram.com/v/t51.2885-15/552825156_18648550693056421_6760424445129157822_n.jpg?stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6IkNBUk9VU0VMX0lURU0uaW1hZ2VfdXJsZ2VuLjE0NDB4MTgzOS5zZHIuZjgyNzg3LmRlZmF1bHRfaW1hZ2UuYzIifQ&_nc_ht=scontent-iad3-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2QFvPs4_7bJA1wNH6A8Y2tjrpHqNFqgNbxmJsCfqXon_Lo966YDIWGrQEhVtCi4HnaE&_nc_ohc=vp-5n-VyKUEQ7kNvwEz3Ay7&_nc_gid=DdTMO_kwa7DY7-2K9i8CPA&edm=ACWDqb8BAAAA&ccb=7-5&ig_cache_key=MzcyNzk5MjIwODcyNTkxODMyOQ%3D%3D.3-ccb7-5&oh=00_Afas91ktiY2-as8Q8bCHnetzJMlyIguEbzsg6OQ1hlmu-A&oe=68D9D1B5&_nc_sid=ee9879",
"width": 1440,
"height": 1839
}
]
},
"carousel_media_count": 3,
"scraped_username": "cristiano",
"scraped_at": 1758728197,
"post_url": "https://www.instagram.com/p/DO8fSwLiNU-/"
}
]

Notes:

  • Output objects mirror Instagramโ€™s โ€œitemsโ€ structure and include the additional fields scraped_username, scraped_at, and post_url.
  • Some nested fields (e.g., carousel_media, usertags) may be absent depending on the post type.

FAQ

Do I need to log in to scrape Instagram posts?

No. This Instagram public posts scraper targets publicly available data and does not require login or cookies. It fetches public profile posts using tokens extracted from public pages.

Can I input post shortcodes instead of profile URLs?

Yes. You can paste a post shortcode, and the scraper will resolve the owning username using multiple methods before scraping posts from that profile.

How many posts can I scrape per profile?

You control this via maxPosts. The supported range is 1 to 1000 per profile. The scraper paginates through the Instagram feed until the limit is reached or no more posts are available.

Does it extract comments content?

It records comment_count for each post when available. The current workflow focuses on post-level data and metadata; it does not output full comment threads.

What fields are included in the output?

Youโ€™ll receive core post metadata like id, pk, code, taken_at, like_count, comment_count, product_type, media_type, dimensions and media URLs (image_versions2), plus nested objects such as caption and user where present. The actor adds scraped_username, scraped_at, and post_url for traceability.

Does it work in bulk across multiple profiles?

Yes. Provide a list of profile URLs, usernames, or shortcodes in startUrls to run this bulk Instagram posts scraper across many profiles in one run.

What about proxies and blocking?

The actor always uses a residential proxy (enforced internally) and includes retries, backoff, and fallback logic to reduce rate limits and improve stability.

Is this an Instagram scraping tool without API keys?

Yes. It does not require official API keys. The scraper extracts public data and necessary tokens from public pages to collect Instagram feed data programmatically.

Closing CTA / Final thoughts

Instagram Posts Scraper is built to reliably extract structured, public Instagram post data at scale. With robust username resolution, residential proxies, and clean JSON/CSV output, it equips marketers, analysts, developers, and researchers to analyze content, monitor competitors, and power BI pipelines.

Add your profile URLs, usernames, or shortcodes, set maxPosts and sortOrder, and export results in minutes. Developers can leverage the Python-based actor design for automation and integration into data workflows. Start scraping smarter, more reliable Instagram datasets today.