8 hours ago
How one team scrapes 120 IG accounts twice a day
A team we work with pulls posts and stories from a large pool of Instagram accounts on a schedule, and they walked us through how it's set up on our infra.
What they're doing
Every 12 hours they run through 120 accounts.
One run gives them 700+ posts and around 350 stories.
They hit the private APIs /api/v1/feed/user/ and /api/v1/feed/reels_media/, and pull images from IG-CDN in a separate stream. Bandwidth lands somewhere in the 500-800 MB range per run, most of that is images.
Why they split the pool into 28 session-ids
Our packages let you spin up a bunch of unique sticky sessions under one billing account. They grabbed 28 - one per warmup IG account they run.
Here's what that buys them:
- Each warmup goes out from its own "cell". IG sees 28 separate mobile users instead of one bouncing across the country. A 30-minute sticky window is long enough to finish a chunk of requests on one IP, but short enough that IG can't really build a behavioral profile off it.
- When one exit-IP catches a rate-limit, it's just that warmup that's affected — the other 27 keep going. They turned that into a failover: targets from the dead account get reassigned to another one with a fresh IP.
- Scaling stays boring. When they want to add 50 more accounts, they ask for 50 more session-ids. Nothing changes in the code.
Things worth stealing from their setup
One account, one sticky session for its whole life. Feed different IPs into a single logical thread and IG sees the mismatch, drops the session.
Match sticky window length to your working cycle. Shorter than the cycle and it snaps mid-work. Much longer and behavioral patterns start showing up. 30 minutes worked for them, but for someone else it might be 15 or 60.
Images from IG-CDN have to go through the same exit-IP as the API. IG-CDN checks who opened the feed in the first place - different IP and you're getting a 403.
What do we offer:
- Residential Turbo - we do not block any ports; UDP is open by default:
https://geekproxy.io/residential-proxy/turbo
- Residential Flex - deep geo-filtering, UDP on demand:
https://geekproxy.io/residential-proxy/flex
- Mobile proxy
https://geekproxy.io/mobile-proxy
A team we work with pulls posts and stories from a large pool of Instagram accounts on a schedule, and they walked us through how it's set up on our infra.
What they're doing
Every 12 hours they run through 120 accounts.
One run gives them 700+ posts and around 350 stories.
They hit the private APIs /api/v1/feed/user/ and /api/v1/feed/reels_media/, and pull images from IG-CDN in a separate stream. Bandwidth lands somewhere in the 500-800 MB range per run, most of that is images.
Why they split the pool into 28 session-ids
Our packages let you spin up a bunch of unique sticky sessions under one billing account. They grabbed 28 - one per warmup IG account they run.
Here's what that buys them:
- Each warmup goes out from its own "cell". IG sees 28 separate mobile users instead of one bouncing across the country. A 30-minute sticky window is long enough to finish a chunk of requests on one IP, but short enough that IG can't really build a behavioral profile off it.
- When one exit-IP catches a rate-limit, it's just that warmup that's affected — the other 27 keep going. They turned that into a failover: targets from the dead account get reassigned to another one with a fresh IP.
- Scaling stays boring. When they want to add 50 more accounts, they ask for 50 more session-ids. Nothing changes in the code.
Things worth stealing from their setup
One account, one sticky session for its whole life. Feed different IPs into a single logical thread and IG sees the mismatch, drops the session.
Match sticky window length to your working cycle. Shorter than the cycle and it snaps mid-work. Much longer and behavioral patterns start showing up. 30 minutes worked for them, but for someone else it might be 15 or 60.
Images from IG-CDN have to go through the same exit-IP as the API. IG-CDN checks who opened the feed in the first place - different IP and you're getting a 403.
What do we offer:
- Residential Turbo - we do not block any ports; UDP is open by default:
https://geekproxy.io/residential-proxy/turbo
- Residential Flex - deep geo-filtering, UDP on demand:
https://geekproxy.io/residential-proxy/flex
- Mobile proxy
https://geekproxy.io/mobile-proxy
