Instagram Mass Scraper & Follower avatar

Instagram Mass Scraper & Follower

Pricing

from $8.00 / 1,000 user followeds

Go to Apify Store
Instagram Mass Scraper & Follower

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

Klazmo Labs

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

5 days ago

Last modified

Share

Instagram Follower Scraper + Auto Follow

Apify Actor that:

  1. Takes a target Instagram account (username or profile URL)
  2. Scrapes a list of usernames that follow that account
  3. 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 dryRun while 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 + SUMMARY key-value record
  • Pay-per-event hooks: follower-scraped, user-followed

  1. Log into Instagram in Chrome / Firefox
  2. Open DevTools → Application (Chrome) or Storage (Firefox) → Cookieshttps://www.instagram.com
  3. Copy the value of sessionid
  4. 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

FieldRequiredDefaultDescription
targetUsernameUsername or profile URL to scrape followers from
sessionCookiesessionid value, full Cookie header, or Cookie-Editor JSON
csrfTokenautoOptional csrftoken
cookieHeaderOptional full cookie string
maxFollowers100Max followers to collect
maxFollowsPerRun20Max follow actions (0 = scrape only)
delayBetweenFollowsSeconds25Base delay between follows
randomDelayVariationSeconds8± jitter on delays
dryRuntrueScrape without following
scrapeOnlyfalseForce scrape-only
skipPrivateAccountstrueSkip private profiles when following
skipAlreadyFollowingtrueSkip users you already follow/requested
proxyConfigurationRESIDENTIALApify 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.json
npm start # runs with tsx
npm test
npm run build

Deploy to Apify:

npx apify login
npx apify push

Or connect the GitHub repo in Apify Console → Actors → Create new → Link Git repository.


Monetize on the Apify Store

  1. Push / build the Actor on Apify
  2. Open Publication → publish to the Store
  3. Open Monetization → choose Pay per event
  4. Create events (suggested starter prices — tune to your costs):
Event nameWhen chargedSuggested price
follower-scrapedEach follower saved to the dataset~$0.002–0.01
user-followedEach successful follow / request~$0.01–0.05
apify-actor-startSynthetic start event (optional)~$0.005

The Actor already calls:

await Actor.charge({ eventName: 'follower-scraped' });
await Actor.charge({ eventName: 'user-followed' });
  1. Write a Store listing from this README (what it does, inputs, limits, ToS warning)
  2. 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 maxFollowsPerRun low
  • 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 sessionid is old / from a different IP/country than usual

What to do after rebuilding this version:

  1. Rebuild the Actor on Apify (Playwright image)
  2. Use Apify Proxy → RESIDENTIAL, ideally a country close to the account
  3. Paste a fresh sessionid from the browser you normally use
  4. First run: dryRun = true, maxFollowers = 20, maxFollowsPerRun = 0
  5. 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.


Account ageMax follows / day
New (< 1 month)10–20
Mature20–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:

  1. GET /api/v1/users/web_profile_info/?username=… → resolve target user id
  2. GET /api/v1/friendships/{id}/followers/ → paginate followers
  3. POST /api/v1/friendships/create/{id}/ → follow (when not dry-run)

Private target accounts only work if your session already follows them.


License

ISC