Social & video
Threads Scraper
threads.com
Threads is served through a dedicated plugin endpoint rather than the generic page fetch. Give it a handle - a bare username, an @handle or a full profile URL - and it returns the public profile already parsed: the display name and bio, the follower and thread counts, the avatar, and the profile's recent posts each with its engagement counts. It renders the profile on our own anti-bot fleet and reads only public data, so there is no Meta account, login or cookies involved, and no GraphQL to reverse-engineer yourself.
What you can extract
- Display name, bio and canonical profile URL
- Follower count and total thread count, parsed to numbers
- Profile avatar image URL
- Recent posts with text, post age and a clean URL
- Per-post engagement: likes, comments, reposts and shares
- postsCollected count, bounded by your max_posts
Dedicated endpoints
/social/threads-profile A public Threads profile
A public Threads profile with its recent posts: fullName, bio, followers, threadsCount, avatar and a posts array with likes, comments, reposts and shares. Accepts a handle, an @handle or a profile URL; bound the posts with max_posts.
How to scrape it
curl -X POST \
-H "X-ScrapeUnblocker-Key: $SU_API_KEY" \
"https://api.scrapeunblocker.com/social/threads-profile?username=zuck&max_posts=25"import requests
resp = requests.post(
"https://api.scrapeunblocker.com/social/threads-profile",
headers={"X-ScrapeUnblocker-Key": SU_API_KEY},
params={"username": "zuck", "max_posts": "25"},
)
print(resp.text)import { ScrapeUnblockerClient } from 'scrapeunblocker';
const su = new ScrapeUnblockerClient({ apiKey: process.env.SU_API_KEY });
const profile = await su.threadsProfile('zuck', {
maxPosts: 25,
});
console.log(results); Requests are POST and take their parameters in the query string. Browser rendering always happens - there is no flag to enable.
Related scrapers
Start scraping this site today
Free tier included. No credit card required to test it.