Request a tool
All toolsMCP serverRequest a toolPlatformsCategories
Instagram Scraper - Profiles, Posts & Reels (No Login) icon

Instagram Scraper - Profiles, Posts & Reels (No Login)

Keyless Instagram scraper: profiles, posts and reels in one run. Likes, comments, views, media, hashtags. No login or API key. From $0.40/1k results.

Run this in the cloudRun on Apify →

Social Media Scrapers

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust usernames, startUrls, resultsLimit (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Inputs

FieldWhat it doesType
usernamesInstagram usernames (with or without @) to scrape — returns the profile plus its posts/reels. The most reliable mode.array
startUrlsPaste Instagram URLs directly — a profile URL (https://www.instagram.com/nasa/) scrapes its posts, a post/reel URL (https://www.instagram.com/p/XXXX/) scrapes that single item.array
resultsLimitMaximum number of items (profiles + posts) to collect. You are charged per result returned.integer
onlyPostsNewerThanKeep only posts on/after this date (YYYY-MM-DD).string
notionConnectorOptional. Deliver the results to your connected Notion via Apify MCP connectors — no extra code.string
notionParentIdOptional Notion database/data-source id to create the pages in.string

What you get

A structured dataset — each result includes fields like:

typeshortCodeurlcaptionhashtagslikesCountcommentsCountvideoViewCountdisplayUrlimagesisVideoownerUsernametimestamp

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

5 ready-to-run use cases

Scrape @natgeo Instagram Profile & Posts

Pull National Geographic's Instagram posts, captions, likes, comments and media URLs with no login. Export to JSON, CSV or Excel.

Scrape @nike Instagram for Competitor Analysis

Track Nike's Instagram posts, engagement, likes and comments for competitor and brand analysis. Keyless, pay-per-result, export anywhere.

Scrape @cristiano Instagram Posts & Reels

Scrape Cristiano Ronaldo's Instagram posts and reels - captions, likes, views, comments and media URLs. No login or API key needed.

Scrape @nasa Recent Instagram Posts (2024+)

Collect NASA's latest Instagram posts from 2024 onward with date filtering - captions, likes, comments and media. Keyless export to JSON/CSV.

Scrape Starbucks Instagram Posts by URL

Paste the Starbucks Instagram URL to scrape its posts, captions, likes, comments and media URLs. No login, pay per result, easy export.

⚡ Instagram Scraper — Profiles, Posts & Reels (No Login, No API Key)

Scrape Instagram without a login or API key. Give it usernames or post/reel URLs and get back full profile data and every post — caption, likes, comments, views, media URLs (incl. carousels and videos), hashtags, mentions, owner and timestamp. Export to JSON, CSV or Excel, call it from the API, or have results delivered straight to Notion. Just $0.40 per 1,000 results — built for marketers, agencies, researchers and lead-gen teams who need Instagram data fast.

> No account. No sessionid. No cookies. Paste a username and run.

Why this scraper wins

  • 🔓 Keyless — uses Instagram's public web_profile_info + GraphQL endpoints. You never supply credentials.
  • 🏠 Residential by default — Instagram hard-blocks datacenter IPs; this actor ships with Apify Residential proxy preconfigured, so it just works.
  • 🛡️ Graceful degradation — Instagram rotates its GraphQL doc_ids constantly; if deep pagination breaks, the actor still returns the profile and first-page posts instead of failing the whole run.
  • 💸 Cheaper — $0.40 / 1,000 results, billed per item actually returned (empty/failed runs cost nothing).
  • 🧹 Clean, flat records — one tidy object per profile/post, ready for sheets, dashboards or LLM pipelines.
  • 📬 Built-in Notion delivery — push every run into Notion via Apify connectors, zero extra code.
  • 🚦 Honest errors — a clear errorCode row when Instagram blocks, instead of silent emptiness.

What you can scrape

ModeInputReturns
Profileusernames or a profile URLProfile metadata + posts/reels (paginated)
Single post / reela /p/… or /reel/… URLThat item with media + engagement

> Hashtag and location scraping are available as dedicated companion actors.

Input

  • usernames — accounts to scrape (e.g. nasa, natgeo).
  • startUrls — profile URLs (posts) or post/reel URLs (single item).
  • resultsLimit — cap the number of results (you pay per result).
  • onlyPostsNewerThan — date filter (YYYY-MM-DD).
  • proxyConfiguration — Residential (required; preconfigured).
  • notionConnector — optional Notion delivery.

Output (one record per post)

{
  "type": "image",
  "shortCode": "C8xExample",
  "url": "https://www.instagram.com/p/C8xExample/",
  "caption": "Sunrise over the Atlantic 🌅 #earth",
  "hashtags": ["earth"],
  "likesCount": 84210,
  "commentsCount": 932,
  "videoViewCount": null,
  "displayUrl": "https://scontent.cdninstagram.com/...jpg",
  "images": ["https://scontent.cdninstagram.com/...jpg"],
  "isVideo": false,
  "ownerUsername": "natgeo",
  "timestamp": "2024-06-12T09:30:00.000Z"
}

Profile rows include username, fullName, biography, followersCount, followsCount, postsCount, verified, isBusinessAccount, private, profilePicUrl.

Pricing

$0.40 per 1,000 results (pay-per-result). You are only charged for items actually returned.

FAQ

Do I need an Instagram account? No. Public profiles, posts and reels work keyless.

Why is residential proxy required? Instagram instantly blocks datacenter IPs. Residential keeps success rates high — it's preconfigured for you.

Can it get comments / followers / private accounts? Those require a logged-in session and aren't part of the keyless scope. Comments are available via a dedicated companion actor.

It returned an errorCode row — why? That's the actor telling you exactly what happened (RATE_LIMITED, BLOCKED, NOT_FOUND) instead of failing silently.