Instagram Mass Scraper & Follower
Pricing
from $8.00 / 1,000 user followeds
Instagram Mass Scraper & Follower
This Apify Actor scrapes the follower list of any Instagram account your session can access, then optionally follows those users from your own Instagram account. Use this to grab your Instagram Session ID: https://chromewebstore.google.com/detail/cookie-editor/hlkenndednhfkekhgcdicdfddnkalmdm
Pricing
from $8.00 / 1,000 user followeds
Rating
0.0
(0)
Developer
Klazmo Labs
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Instagram Follower Scraper + Auto Follow
Apify Actor that:
- Takes a target Instagram account (username or profile URL)
- Scrapes a list of usernames that follow that account
- Optionally follows those users from your own Instagram session
Built to deploy on Apify and monetize via the Apify Store (pay-per-event).
Important: Automating follows can violate Instagram’s Terms of Use and may get accounts checkpointed or action-blocked. Use low daily limits, residential proxies, and
dryRunwhile testing. You are responsible for how you use this Actor.
Features
- Cookie-based auth (
sessionid) — no password stored in the Actor - Follower list pagination with a configurable cap
- Optional auto-follow with human-like delays and random jitter
- Skip private / already-following accounts
- Dry run mode (default) — scrape + preview without sending follows
- Apify Proxy support (RESIDENTIAL recommended)
- Dataset output +
SUMMARYkey-value record - Pay-per-event hooks:
follower-scraped,user-followed
How to get your Instagram session cookie
- Log into Instagram in Chrome / Firefox
- Open DevTools → Application (Chrome) or Storage (Firefox) → Cookies →
https://www.instagram.com - Copy the value of
sessionid - Paste it into the Actor input field
sessionCookie
Optional: export all cookies with a Cookie-Editor extension and paste the JSON / header into sessionCookie or cookieHeader.
Treat sessionid like a password. Anyone with it can use the account.
Input
| Field | Required | Default | Description |
|---|---|---|---|
targetUsername | ✅ | — | Username or profile URL to scrape followers from |
sessionCookie | ✅ | — | sessionid value, full Cookie header, or Cookie-Editor JSON |
csrfToken | ❌ | auto | Optional csrftoken |
cookieHeader | ❌ | — | Optional full cookie string |
maxFollowers | ❌ | 100 | Max followers to collect |
maxFollowsPerRun | ❌ | 20 | Max follow actions (0 = scrape only) |
delayBetweenFollowsSeconds | ❌ | 25 | Base delay between follows |
randomDelayVariationSeconds | ❌ | 8 | ± jitter on delays |
dryRun | ❌ | true | Scrape without following |
scrapeOnly | ❌ | false | Force scrape-only |
skipPrivateAccounts | ❌ | true | Skip private profiles when following |
skipAlreadyFollowing | ❌ | true | Skip users you already follow/requested |
proxyConfiguration | ❌ | RESIDENTIAL | Apify Proxy settings |
Example input
{"targetUsername": "nike","sessionCookie": "YOUR_SESSIONID_HERE","maxFollowers": 100,"maxFollowsPerRun": 15,"delayBetweenFollowsSeconds": 30,"dryRun": false,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Output
Each scraped follower is pushed to the dataset:
{"targetUsername": "nike","userId": "123456789","username": "example_user","fullName": "Example User","isPrivate": false,"isVerified": false,"profileUrl": "https://www.instagram.com/example_user/","followStatus": "followed","followDetail": "Now following","scrapedAt": "2026-07-27T18:00:00.000Z"}
followStatus values: scraped | followed | requested | skipped | failed | dry_run
A SUMMARY object is saved to the default key-value store with totals for the run.
Local development
npm install# edit storage/key_value_stores/default/INPUT.jsonnpm start # runs with tsxnpm testnpm run build
Deploy to Apify:
npx apify loginnpx apify push
Or connect the GitHub repo in Apify Console → Actors → Create new → Link Git repository.
Monetize on the Apify Store
- Push / build the Actor on Apify
- Open Publication → publish to the Store
- Open Monetization → choose Pay per event
- Create events (suggested starter prices — tune to your costs):
| Event name | When charged | Suggested price |
|---|---|---|
follower-scraped | Each follower saved to the dataset | ~$0.002–0.01 |
user-followed | Each successful follow / request | ~$0.01–0.05 |
apify-actor-start | Synthetic start event (optional) | ~$0.005 |
The Actor already calls:
await Actor.charge({ eventName: 'follower-scraped' });await Actor.charge({ eventName: 'user-followed' });
- Write a Store listing from this README (what it does, inputs, limits, ToS warning)
- Set a free test allowance so buyers can try dry-run scrapes
Pricing tips
- Charge more for follows than for scrapes (follows burn session risk + compute time on delays)
- Recommend RESIDENTIAL proxy and keep default
maxFollowsPerRunlow - Market as growth tooling for public accounts the buyer already has permission to engage with
Troubleshooting HTTP 429
Instagram often returns 429 on the first request when:
- The Actor uses plain Node HTTP (TLS fingerprint) — fixed by running inside Playwright
- Proxy IP rotates every request while using a login cookie — fixed with sticky proxy sessions
- Datacenter proxies are used — switch to RESIDENTIAL
- The
sessionidis old / from a different IP/country than usual
What to do after rebuilding this version:
- Rebuild the Actor on Apify (Playwright image)
- Use Apify Proxy → RESIDENTIAL, ideally a country close to the account
- Paste a fresh
sessionidfrom the browser you normally use - First run:
dryRun = true,maxFollowers = 20,maxFollowsPerRun = 0 - Avoid
maxFollowsPerRun = 200— Instagram commonly action-blocks that
Re-runs don't follow the same people
Turn Remember followed users across runs ON (default). The Actor stores successful follows in a named Key-Value Store (instagram-follow-memory) and skips them next time, continuing further down the follower list.
Use Reset follow memory if you want to start over.
Safety limits (recommended)
| Account age | Max follows / day |
|---|---|
| New (< 1 month) | 10–20 |
| Mature | 20–40 |
Space runs across the day. If Instagram returns 403/429 or “action blocked”, stop and cool down for 24–48h.
How it works (technical)
Uses Instagram’s web API with your browser session:
GET /api/v1/users/web_profile_info/?username=…→ resolve target user idGET /api/v1/friendships/{id}/followers/→ paginate followersPOST /api/v1/friendships/create/{id}/→ follow (when not dry-run)
Private target accounts only work if your session already follows them.
License
ISC