Instagram, no login
An Instagram scraper that needs no login, cookies or account
Paste profile, hashtag, location, audio or post links and press Start. The Actor reads what Instagram shows to any logged-out visitor, so there is no account to risk, no session to keep alive and nothing personal to hand over. $1.90 per 1,000 results, with the latest comments, Instagram's AI summaries and view counts included.
- $1.90 per 1,000 results
- No login or cookies
- About 1,000 posts a minute
- Add-ons included
What "no login" means in practice
Many Instagram tools need an Instagram account connected to them. Connected accounts get rate-limited or locked, runs break, and it blurs the line between public data and data only a signed-in user should see. This Actor uses only what Instagram serves to logged-out visitors. That keeps it simple to run and keeps it on public data. It also puts some things out of reach, which are listed below.
What you can scrape
| Input | Example | What you get |
|---|---|---|
| Profile | https://www.instagram.com/nasa/ or nasa | The profile's posts, newest first, as deep as the profile goes |
| Reels tab | https://www.instagram.com/nasa/reels/ | The profile's reels, with play counts |
| Hashtag | #travel or the tag URL | Top posts for the hashtag |
| Keyword | keywords: ["toronto"] | Top posts for the keyword |
| Location | A /explore/locations/… URL | Top and most recent posts at the place |
| Audio | A /reels/audio/… URL | Reels using that sound |
| Post or reel | A /p/…, /reel/… or share link | That post, or its comments |
| User ID | 528817151 | That profile's posts |
Set resultsType to choose the row type. posts gives one row per post or reel. details gives one row per source: a profile's bio, links, follower counts, category, account type, bio emails and phones and similar accounts, or a place's address and coordinates. comments gives the comments on each post, newest first. If comments are all you need, the Instagram comments export guide covers the single-purpose comments Actor.
What you can't get, and why
- Stories, tagged posts, follower and following lists, and profile or place search are only visible to logged-in accounts. The
getStoriesandhandlesinputs are accepted for compatibility and skipped at no charge. - Comment replies are login-only. You get top-level comments.
- Hashtags and keywords show logged-out visitors a curated set of top posts, typically about 60, and only for popular terms such as travel, nyc or toronto. A term Instagram keeps behind a login returns nothing and costs nothing. When you need more volume,
expandRelatedKeywordsalso pulls posts from up to 100 related keywords. - Locations return the top and most recent posts, typically about 70.
- Private accounts have no public posts; they're skipped with a note in the log.
- Play counts can be missing on some feed videos, where Instagram doesn't show plays to logged-out visitors. Reels-tab runs carry them.
Built to keep running
The Actor runs on Apify's managed infrastructure with automatic retries and is kept up to date when Instagram changes its public web pages. It handles about 1,000 fully detailed posts a minute. Queries that find nothing, login-only sources and rows your filters remove are not billed, so a bad input costs you nothing.
Filters that save money
until: only posts on or after a date (2026-09-01) or within a period (7 days). On profiles, scraping stops as soon as it reaches older posts.minFollowers,maxFollowers,verifiedOnly: keep only posts from the accounts you care about.businessOnly,withContactOnly: for profile rows, keep business and creator accounts, or only those with an email or phone in their bio.skipPinnedPosts: leave out old posts pinned to the top of a profile.
Moving from another Instagram scraper
The Actor accepts apidojo-style input: startUrls, keywords, maxItems and until work the way you'd expect, single post URLs are allowed and there is no per-query minimum. The output uses familiar field names such as id, code, url, createdAt, caption, likeCount, commentCount and owner. Still, run a small sample and check it against your pipeline before you switch production jobs.
What about Instagram's official APIs?
Meta retired the Instagram Basic Display API in December 2024, and the Graph API that remains is built for professional accounts working with their own data. The Graph API alternative guide maps each Graph API call to an input here and says when to stay on Meta's API; the Instagram scraper comparison prices the other Actors on Apify by plan.
Run it from code
A profile, a hashtag and a keyword in one run, only posts since 1 September, 200 posts at most: $0.38 or less.
// Save as run.mjs, then: npm i apify-client && APIFY_TOKEN=... node run.mjs
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('yugenox/instagram-scraper').call({
startUrls: [
"https://www.instagram.com/nasa/",
"https://www.instagram.com/explore/tags/travel/"
],
keywords: [
"toronto"
],
until: "2026-09-01",
maxItems: 200
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) console.log(item.url, item.likeCount, item.createdAt);import os
from apify_client import ApifyClient # pip install apify-client
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("yugenox/instagram-scraper").call(run_input={
"startUrls": ["https://www.instagram.com/nasa/", "https://www.instagram.com/explore/tags/travel/"],
"keywords": ["toronto"],
"until": "2026-09-01",
"maxItems": 200,
})
if run is None:
raise RuntimeError("Run did not finish")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item.get("url"), item.get("likeCount"), item.get("createdAt"))# Small jobs: runs the Actor and returns the rows in one call (up to 5 minutes).
curl -X POST "https://api.apify.com/v2/acts/yugenox~instagram-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":["https://www.instagram.com/nasa/","https://www.instagram.com/explore/tags/travel/"],"keywords":["toronto"],"until":"2026-09-01","maxItems":200}'Questions people ask
Do I need an Instagram account or cookies?
No. Nothing to log in to and nothing to refresh.
Why do hashtags return only about 60 posts?
That is what Instagram shows logged-out visitors: a curated set of top posts for popular terms. Use expandRelatedKeywords to add posts from related keywords, or schedule runs to collect new top posts over time.
Can it get stories, tagged posts or follower lists?
No. Instagram only shows those to logged-in accounts, and this Actor never logs in.
How much do 1,000 posts cost?
$1.90 on the Free and Starter plans, $1.50 on Scale and $1.10 on Business, with latest comments, AI summaries and view counts included. Free Apify plans are capped at 100 results per run.
Can I schedule it to collect only new posts?
Yes. Use an Apify schedule with until set to a period such as "1 day" or "7 days".
Is it legal to scrape Instagram?
The Actor collects only public data that anyone can see without logging in. Usernames, captions and comments can be personal data, so you are responsible for following GDPR, PIPEDA, CCPA and Instagram's terms. Ask a lawyer if you are unsure.
Run it on your own data
Open the Actor on Apify, paste your input and press Start. You pay per result from your own Apify account, with no subscription to us. Or connect it to your AI assistant and ask in plain English.
Last updated 2026-10-06.