Threads Scraper avatar

Threads Scraper

Pricing

Pay per usage

Go to Apify Store
Threads Scraper

Threads Scraper

Scrape profiles and posts from Meta Threads. Extract username, bio, follower count, post text, likes, replies, and reposts. Analyze creator engagement and content trends. Export to JSON/CSV, run via API, schedule and monitor runs.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Vhub Systems

Vhub Systems

Maintained by Community

Actor stats

1

Bookmarked

4

Total users

2

Monthly active users

2 days ago

Last modified

Share

Threads Profile Scraper

Extract comprehensive profile data and posts from Meta Threads profiles without an API. Scrape usernames, follower counts, bios, recent posts, engagement metrics, and media from any public Threads account.

What is Threads Profile Scraper?

Threads Profile Scraper is an automated data extraction tool designed for Meta's Threads platform, the text-based social media app that launched as Instagram's companion for public conversations. This scraper enables you to collect profile information, follower statistics, and post content from any public Threads account without requiring authentication or API access.

Whether you're conducting social media research, monitoring brand presence, tracking influencer engagement, or building competitive intelligence dashboards, this tool provides structured data from Threads profiles in a ready-to-use JSON format. It handles bulk processing, automatic retries, and proxy rotation to ensure reliable data collection.

The scraper works by navigating to Threads profile pages and extracting embedded JSON data from the page source, capturing detailed metrics including follower counts, verification status, post engagement (likes, replies, reposts), timestamps, and media URLs. You can customize the scraping depth by setting maximum post limits and filtering reply posts.

What data does it extract?

FieldTypeDescription
usernamestringThreads username without @ symbol
urlstringFull canonical Threads profile URL
namestringDisplay name / full name of the account
biographystringProfile bio/description text
profilePicUrlstringDirect URL to profile picture image
followersnumberTotal follower count
followingnumberTotal following count
isVerifiedbooleanWhether the account has verified badge
postsCountnumberNumber of posts scraped (up to maxPosts limit)
postsarrayArray of post objects (detailed below)
posts[].idstringUnique post identifier
posts[].textstringPost text content / caption
posts[].likeCountnumberNumber of likes on the post
posts[].replyCountnumberNumber of replies to the post
posts[].repostCountnumberNumber of reposts (quote posts)
posts[].timestampstringPost creation date/time (ISO 8601 format)
posts[].mediaUrlsarrayArray of image/video URLs attached to post
posts[].isReplybooleanWhether this post is a reply to another post
scrapedAtstringTimestamp when data was scraped (ISO 8601)

How to scrape Threads profiles

  1. Open Threads Profile Scraper in Apify Console or integrate it via API into your application.

  2. Add target usernames to the usernames input field. You can enter usernames with or without the @ symbol. For example: ["zuck", "instagram", "threads"] or ["@markzuckerberg", "@netflix"].

  3. Configure scraping parameters (optional):

    • Set maxPosts to limit how many posts to extract per profile (default: 20, max: 100)
    • Enable includeReplies to capture reply posts in addition to original posts (default: false)
  4. Start the scraper by clicking "Start" button. The actor will process each profile sequentially using residential proxies to avoid rate limits.

  5. Monitor progress in the run log. You'll see confirmation messages as each profile is successfully scraped with follower counts and post numbers.

  6. Download results in JSON, CSV, Excel, or XML format from the dataset tab. You can also access data programmatically via the Apify API for integration with your workflows.

  7. Set up scheduling (optional) to run the scraper automatically on a daily, weekly, or custom schedule to track profile changes and new posts over time.

Input parameters

ParameterTypeRequiredDescription
usernamesarrayYesList of Threads usernames to scrape. Format: ["zuck", "instagram"] or ["@username1", "@username2"]. Accepts usernames with or without @ symbol.
maxPostsintegerNoMaximum number of posts to extract per profile. Default: 20. Minimum: 1, Maximum: 100. Higher values may increase scraping time.
includeRepliesbooleanNoWhether to include reply posts in the results. Default: false. When enabled, reply posts will be included in the posts array with isReply: true flag.

Example input

{
"usernames": [
"zuck",
"instagram",
"threads"
],
"maxPosts": 50,
"includeReplies": false
}

Example output

{
"username": "zuck",
"url": "https://www.threads.net/@zuck",
"name": "Mark Zuckerberg",
"biography": "Building the future of connection",
"profilePicUrl": "https://scontent.cdninstagram.com/v/t51.2885-19/342234522_1234567890_n.jpg",
"followers": 5420000,
"following": 432,
"isVerified": true,
"postsCount": 50,
"posts": [
{
"id": "3458923423423",
"text": "Excited to announce new features coming to Threads next month. We've been listening to your feedback and building some things you've been asking for.",
"likeCount": 15230,
"replyCount": 342,
"repostCount": 89,
"timestamp": "2024-02-13T10:30:00.000Z",
"mediaUrls": [
"https://scontent.cdninstagram.com/v/t51.29350-15/432156789_image.jpg"
],
"isReply": false
},
{
"id": "3458123423422",
"text": "Just shipped a new AI model update. Performance improvements across the board.",
"likeCount": 8942,
"replyCount": 156,
"repostCount": 34,
"timestamp": "2024-02-12T14:20:00.000Z",
"mediaUrls": [],
"isReply": false
},
{
"id": "3457823423420",
"text": "Training for another MMA fight. Anyone else here into martial arts?",
"likeCount": 23451,
"replyCount": 892,
"repostCount": 124,
"timestamp": "2024-02-11T08:15:00.000Z",
"mediaUrls": [
"https://scontent.cdninstagram.com/v/t51.29350-15/431876543_workout.jpg",
"https://scontent.cdninstagram.com/v/t51.29350-15/431876544_training.jpg"
],
"isReply": false
}
],
"scrapedAt": "2024-02-13T16:45:32.000Z"
}

Yes, scraping publicly available data from Threads is generally legal under current US and EU regulations. The data extracted by this scraper is limited to information that is publicly accessible without authentication, similar to what any visitor can see by opening a Threads profile in their browser. This falls under the precedent established by cases like hiQ Labs v. LinkedIn, where courts have ruled that scraping public data does not violate the Computer Fraud and Abuse Act.

However, you should always use scraped data responsibly and in compliance with applicable laws including GDPR, CCPA, and Meta's Terms of Service. Do not use this tool to collect data for spam, harassment, or unauthorized commercial purposes. Be mindful of rate limits and avoid excessive requests that could disrupt Threads' services. Consider implementing reasonable delays between requests and respect robots.txt directives. If you plan to use the data for research, marketing, or commercial purposes, consult with a legal professional to ensure compliance with your jurisdiction's data protection regulations.

Pricing

This Threads Profile Scraper is free to use. You only pay for Apify platform usage based on compute units (CUs) consumed during scraping. Typical costs:

  • Scraping 1 profile with 20 posts: ~0.01-0.02 CU ($0.001-$0.002)
  • Scraping 100 profiles with 20 posts each: ~1-2 CU ($0.10-$0.20)
  • Scraping 1,000 profiles with 50 posts each: ~10-15 CU ($1.00-$1.50)

Apify provides $5 of free credit monthly on the free plan, which is sufficient for scraping approximately 2,500-5,000 profiles per month. Paid plans start at $49/month with significantly higher limits. Residential proxy usage is included in the compute costs.

FAQ

Q: Can I scrape private Threads accounts? A: No, this scraper only works with public Threads profiles. Private accounts will return limited data (usually just username and URL) since their posts and detailed information are not publicly accessible.

Q: Why are some follower counts showing as null? A: Threads sometimes loads follower counts dynamically via JavaScript after the initial page load. If the scraper cannot find the count in the embedded JSON data or meta tags, it will return null. This happens more frequently with newer accounts or during platform updates.

Q: How often should I scrape profiles to track changes? A: For most use cases, scraping once per day is sufficient to track follower growth and new posts. For real-time monitoring of high-activity accounts, you can run the scraper every few hours. Be mindful that excessive scraping may trigger rate limits or CAPTCHAs.

Q: Can I scrape posts older than what's shown on the profile page? A: This scraper extracts posts that are visible on the initial profile page load, typically the most recent 20-100 posts depending on Threads' current interface. To access older posts, you would need to implement pagination logic, which is not currently supported in this version.

Q: What happens if a username doesn't exist? A: If a username is not found, the scraper will log an error and save partial data (username, URL, and error message) to the dataset, then continue processing remaining usernames in your list.