Instagram Scraping: Extract Profiles, Posts & Followers
What Instagram Data Can You Extract
Instagram is one of the richest data sources on the web, but its official API is locked down. The Instagram Graph API only lets you access your own account data or accounts that have explicitly authorized your app. For research, competitor analysis, or influencer marketing, you need a different approach.
With a scraping API, you can extract:
- Profile data: follower count, following count, bio, profile picture, verification status, post count
- Posts: images, captions, hashtags, like count, comment count, timestamp, location tags
- Reels: video URLs, view count, play count, engagement metrics
- Comments: comment text, author, timestamp, like count, replies
- Followers/Following lists: usernames and basic profile data of a user's audience
This data powers use cases from influencer vetting to hashtag research to competitive benchmarking.
Use Cases for Instagram Data
Influencer marketing. Before paying an influencer $5,000 for a sponsored post, you want to verify their metrics. Are their followers real? What is their actual engagement rate? How often do they post? Scraping gives you ground truth that the influencer's media kit might not.
Competitor analysis. Track what your competitors post, how often, which content performs best, and how their follower count trends over time. This intelligence shapes your own content strategy.
Hashtag research. Find which hashtags drive the most engagement in your niche. Track how hashtag performance changes over time to stay ahead of trends.
Brand monitoring. See who is mentioning your brand, what they are saying, and how your share of voice compares to competitors.
Extracting Instagram Profiles with LogPose
The Instagram endpoints are async — you submit a scrape and poll the job for the result. To pull profile data:
# Submit
curl "https://api.logposervices.com/api/v1/social/insta/profile_summary?username=natgeo" \
-H "X-API-Key: YOUR_API_KEY"
# → {"job_id": "abc123", "status": "submitted", ...}
# Poll and fetch
curl https://api.logposervices.com/api/v1/jobs/abc123/result \
-H "X-API-Key: YOUR_API_KEY"
The result includes the full profile object: display name, bio, follower count, following count, post count, profile picture URL, whether the account is verified, and whether it is a business account.
Scraping Posts and Engagement Data
To get a user's recent posts with engagement metrics, use /insta/posts with a limit:
curl "https://api.logposervices.com/api/v1/social/insta/posts?username=natgeo&limit=20" \
-H "X-API-Key: YOUR_API_KEY"
Each post in the result includes the image or video URL, caption text, hashtags parsed as a separate array, like count, comment count, and the post timestamp. This is everything you need to calculate engagement rates and analyze content patterns.
For reels specifically, use /insta/reels?username=...&limit=... — you get additional fields like view count and play count, which are critical metrics that differ from standard post engagement.
Building an Influencer Research Tool
Here is a practical example that calculates an influencer's true engagement rate:
import os
import time
import requests
API_KEY = os.environ["LOGPOSE_API_KEY"]
BASE = "https://api.logposervices.com/api/v1"
HEADERS = {"X-API-Key": API_KEY}
def scrape(path: str, **params) -> dict:
"""Submit an async LogPose job and return its result."""
submit = requests.get(f"{BASE}/{path}", params=params, headers=HEADERS, timeout=30)
submit.raise_for_status()
job_id = submit.json()["job_id"]
while True:
status = requests.get(f"{BASE}/jobs/{job_id}", headers=HEADERS, timeout=15).json()
if status["status"] in ("completed", "failed"):
break
time.sleep(2)
if status["status"] != "completed":
raise RuntimeError(status.get("error"))
return requests.get(f"{BASE}/jobs/{job_id}/result", headers=HEADERS, timeout=15).json()
username = "target_influencer"
profile = scrape("social/insta/profile_summary", username=username)
posts = scrape("social/insta/posts", username=username, limit=12)
followers = profile["follower_count"]
items = posts["posts"]
total = sum(p["like_count"] + p["comment_count"] for p in items)
avg = total / len(items)
engagement_rate = (avg / followers) * 100
print(f"Followers: {followers:,}")
print(f"Avg engagement per post: {avg:,.0f}")
print(f"Engagement rate: {engagement_rate:.2f}%")
An engagement rate between 1-3% is typical. Below 1% may indicate fake followers. Above 5% usually means a highly engaged niche audience.
Monitoring Instagram Accounts Over Time
One-time scrapes give you a snapshot. Ongoing monitoring reveals trends. With LogPose's monitoring feature, you can track an Instagram account daily:
curl -X POST https://api.logposervices.com/api/v1/monitors \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://www.instagram.com/competitor_account/",
"name": "Competitor follower growth",
"metric": "followers",
"condition": "changes",
"check_interval_hours": 24,
"notify_channels": ["email"]
}'
Over weeks and months, this data shows you growth velocity, posting frequency changes, and engagement trends. You can spot when a competitor runs a campaign or when their growth stalls.
Best Practices
Respect rate limits. Even with an API handling the technical scraping, avoid excessive requests. Daily monitoring is sufficient for most use cases.
Store data incrementally. Do not re-scrape all posts every time. Track the latest post ID and only fetch new content since your last check.
Combine data sources. Instagram data becomes more powerful when combined with other platforms. An influencer's Instagram engagement plus their YouTube subscriber count plus their TikTok views gives you a complete picture.
Instagram scraping is one of the most common use cases in social media intelligence. Whether you are vetting influencers, tracking competitors, or researching trends, structured API access makes the process dramatically faster than manual research.