Threads Scraper — Posts, Profiles & Metrics avatar

Threads Scraper — Posts, Profiles & Metrics

Pricing

from $2.00 / 1,000 basic-results

Go to Apify Store
Threads Scraper — Posts, Profiles & Metrics

Threads Scraper — Posts, Profiles & Metrics

Scrape Meta Threads profiles, posts, hashtags & search results with engagement metrics. No login required. Export JSON, CSV, or Excel.

Pricing

from $2.00 / 1,000 basic-results

Rating

0.0

(0)

Developer

Daniel Dimitrov

Daniel Dimitrov

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

21 hours ago

Last modified

Share

The Threads Scraper extracts public data from Meta's Threads — user profiles, posts, replies, hashtag feeds, and search results — and returns structured JSON with calculated engagement metrics. No login, no Threads API key, no manual work. Built for social media analysts, influencer marketers, brand monitoring teams, and data researchers who need reliable Threads data at scale.

This Apify Actor uses a hybrid Cheerio + Playwright crawler to cut costs. HTTP-only scraping runs first for speed, and a stealth browser automatically takes over when a page requires JavaScript rendering or hits anti-bot protection. Residential proxies, request deduplication, and exponential backoff are built in.

Features

  • Scrape Threads profiles — followers, following, post count, bio, verification status, profile picture, link in bio
  • Extract Threads posts — text, likes, replies, reposts, quotes, media URLs, language, hashtags, mentions, timestamps
  • Monitor Threads hashtag feeds — pull every public post under any hashtag
  • Search Threads by keyword — find posts matching any query or phrase
  • Scrape replies and reposts — optional, toggle per run
  • Engagement metrics — engagement rate, virality score, like-to-follower ratio, engagement velocity, median likes, peak posting hour
  • Aggregated profile analytics — top hashtags, top mentions, best-performing post, followers-per-post
  • Automatic proxy rotation — residential proxies enabled by default to avoid IP blocks
  • Export data — download the dataset in JSON, CSV, Excel, HTML, or XML

Why use this Threads Scraper

Threads has no public API for scraping, aggressively blocks datacenter IPs, and serves different HTML to logged-in vs logged-out users. This Threads Scraper solves all three problems:

Challenge on ThreadsHow the Threads Scraper handles it
No official API for bulk exportParses public pages and intercepts internal GraphQL payloads
Datacenter IP blocksResidential proxy group by default, with rotation
JavaScript-rendered contentAutomatic Playwright fallback when HTTP-only fails
Rate limiting and 429sExponential backoff with jitter and tunable delays
No engagement analytics10+ metrics computed per post + aggregated per profile

How to use the Threads Scraper (tutorial)

Step 1 — Open the Actor

Click Try for free on this page to open the Threads Scraper in the Apify Console.

Step 2 — Pick a scrape mode

Pick one of five modes in the Scrape Mode dropdown:

  • profile — user profile with aggregated metrics and recent posts
  • posts — a user's posts only (faster, no profile record)
  • hashtag — every public post under a hashtag
  • post_urls — scrape specific posts by direct URL
  • search — Threads search results for a keyword or phrase

Step 3 — Enter targets

Add usernames, hashtags, post URLs, or search queries depending on the mode you picked. You can add many per run.

Step 4 — Click Start

Set Max Items and click Start. Results stream into the dataset as they're scraped. Export the finished dataset in JSON, CSV, Excel, HTML, or XML from the Dataset tab.

Run the Threads Scraper locally

$apify run --input='{ "scrapeMode": "profile", "usernames": ["zuck"], "maxItems": 5, "includeMetrics": true }'

Call the Threads Scraper from the Apify API

curl -X POST "https://api.apify.com/v2/acts/YOUR_USERNAME~threads-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"scrapeMode": "hashtag",
"hashtags": ["ai"],
"maxItems": 100,
"includeMetrics": true,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}'

Pricing — how much does the Threads Scraper cost

The Threads Scraper is priced per result with two tiers, so cheap jobs stay cheap and you only pay the higher rate when a job actually requires the heavier crawling path. Every dataset row tells you which tier billed it.

TierWhen it's usedPrice
BasicHTTP fast-path scrapes — most profile, posts, post-URL, and small (≤10 result) hashtag/search jobs~$2 / 1,000 results
PremiumHeadless-browser scrapes — large hashtag/search jobs, deep scrolling, pages that need JS rendering or anti-bot evasion~$5 / 1,000 results
Error rowsDiagnostic rows pushed when a URL fails (login wall, rate limit, etc.)Free

Residential proxies and Apify platform compute are included in the per-result prices. No monthly subscription, no setup fee. Exact prices are shown in the Apify Console Pricing tab on the Actor page.

Rough volume examples

JobLikely tierEstimated cost
1 profile + ~4 postsBasic~$0.01
5 profiles + ~20 postsBasic~$0.05
Hashtag feed, ≤10 postsBasic~$0.02
Hashtag feed, 100 postsPremium~$0.50
Search, 1,000 postsPremium~$5
Creator audit, 10,000 postsMixed~$25

Input

Open the Input tab on the Actor page for the interactive form. Here are the main fields:

FieldTypeDefaultDescription
scrapeModestringprofileprofile, posts, hashtag, post_urls, or search
usernamesstring[][]Threads handles without @
profileUrlsstring[][]Direct profile URLs as an alternative to usernames
postUrlsstring[][]Direct post URLs for post_urls mode
hashtagsstring[][]Hashtags without # for hashtag mode
searchQueriesstring[][]Terms for search mode
maxItemsinteger50Hard cap on results
includeRepliesbooleanfalseInclude reply posts
includeRepostsbooleanfalseInclude reposted content
includeMetricsbooleantrueCalculate engagement metrics
useCheerioFastPathbooleantrueTry cheap HTTP-only scraping first
requestDelaySecsnumber2Minimum delay between requests
maxConcurrencyinteger5Maximum parallel pages
maxRequestRetriesinteger3Retry attempts on failure
proxyConfigurationobjectResidentialProxy group — residential strongly recommended
webhookUrlstringCalled when the run completes

Required fields per mode

  • profile / postsusernames or profileUrls
  • post_urlspostUrls
  • hashtaghashtags
  • searchsearchQueries

Output example

The Threads Scraper writes two record types to the dataset. Each profile row is followed by the post rows scraped for that profile.

Profile record

{
"type": "profile",
"username": "zuck",
"displayName": "Mark Zuckerberg",
"biography": "Mostly superintelligence and MMA takes",
"followersCount": 5449802,
"isVerified": true,
"profilePicUrl": "https://instagram.fgru4-1.fna.fbcdn.net/v/t51.82787-19/...",
"linkInBio": "",
"profileUrl": "https://www.threads.net/@zuck",
"avgLikes": 4284,
"medianLikes": 2855,
"engagementRate": 0.1,
"likeToFollowerRatio": 0.0024,
"topHashtags": [],
"topMentions": [],
"peakPostingHourUtc": 15,
"bestPerformingPostCode": "DVrwsE5EdSz",
"bestPerformingPostLikes": 7213,
"scrapedPostCount": 3,
"scrapedAt": "2026-04-24T04:15:08.648Z"
}

Post record

{
"type": "post",
"postId": "3808602590024938729",
"code": "DTa3-B1EbTp",
"url": "https://www.threads.net/@zuck/post/DTa3-B1EbTp",
"authorUsername": "zuck",
"authorDisplayName": "Mark Zuckerberg",
"authorFollowersCount": 5449802,
"text": "Today we're establishing a new top-level initiative called Meta Compute...",
"language": "en",
"mediaType": "text",
"likeCount": 2855,
"replyCount": 958,
"repostCount": 145,
"quoteCount": 38,
"totalInteractions": 3996,
"engagementRate": 0.073,
"engagementVelocity": 1.64,
"viralityScore": 0.97,
"hashtags": [],
"mentions": [],
"postedAt": "2026-01-12T18:00:30.000Z",
"scrapedAt": "2026-04-24T04:15:08.843Z"
}

Scrape modes explained

Profile info + posts (profile)

Best for influencer analysis, competitor audits, creator discovery.

{ "scrapeMode": "profile", "usernames": ["zuck", "mosseri"], "maxItems": 10, "includeMetrics": true }

User posts only (posts)

Faster when you only want content, not profile headers.

{ "scrapeMode": "posts", "usernames": ["zuck"], "maxItems": 20, "includeReplies": true }

Hashtag feed (hashtag)

Ideal for trend monitoring, campaign tracking, and content discovery.

{ "scrapeMode": "hashtag", "hashtags": ["ai", "machinelearning"], "maxItems": 15 }

Specific post URLs (post_urls)

Backfill or enrich posts you already know about.

{ "scrapeMode": "post_urls", "postUrls": ["https://www.threads.net/@zuck/post/AbCdEfGh"], "includeMetrics": true }

Search (search)

Brand monitoring, topic research, lead discovery.

{ "scrapeMode": "search", "searchQueries": ["openai", "artificial intelligence"], "maxItems": 10 }

Use cases

  • Creator marketing — shortlist Threads creators by engagement rate, virality score, and posting cadence
  • Competitor monitoring — track rival brands' Threads posts, replies, and hashtag mentions
  • Social listening — stream hashtag or keyword results into BI tools, alerting systems, or LLM pipelines
  • Lead generation — build lists of engaged creators in your niche using the search mode
  • Content research — find top-performing post formats for any topic or audience

Integrations

The Threads Scraper's dataset plugs into:

  • Zapier, Make, n8n — trigger workflows on run completion via webhookUrl
  • Google Sheets, Airtable, Notion — use the official Apify integrations
  • Webhooks, REST API, JS/Python SDKs — programmatic control via the Apify API

Other Apify Actors you may like

  • Yelp Scraper — Leads, Reviews & Contacts — pull business contact info and reviews from Yelp for B2B lead generation
  • Instagram Scraper — scrape Instagram profiles, posts, and hashtags
  • TikTok Scraper — download TikTok videos, profiles, and trending hashtags
  • Google Maps Scraper — extract business leads from Google Maps
  • X (Twitter) Scraper — collect tweets, followers, and profile data

FAQ

The Threads Scraper only extracts publicly available data — profiles and posts visible without logging in. It does not access private accounts, messages, or content behind authentication. Always comply with Threads Terms of Use and applicable data-protection laws.

Do I need a Threads account or API key?

No. The Threads Scraper works without any login credentials or developer key. Threads does not currently offer a public scraping API, which is exactly the gap this Actor fills.

Threads API vs Threads Scraper — which should I use?

The official Threads API is posting-focused and requires an approved Meta developer app to read third-party data. For bulk read access to profiles, posts, hashtags, or search — without Meta review — the Threads Scraper is the fastest path.

How does the Threads Scraper avoid blocks?

Three layers: (1) residential proxies by default, (2) hybrid Cheerio→Playwright fallback so pages that trigger anti-bot protection are retried in a stealth browser, and (3) exponential backoff with jitter on 429s and empty responses.

Can I scrape replies, reposts, and quote reposts?

Yes. Set includeReplies or includeReposts to true. Quote reposts are flagged in the output with quotedPostId and quotedPostAuthor.

How do I export the Threads data as CSV or Excel?

After the run finishes, open the Dataset tab, click Export, and pick JSON, CSV, Excel, HTML, or XML. The dataset also ships with preset views (Overview, Profiles, Posts) for a cleaner spreadsheet shape.

What engagement metrics does the Threads Scraper calculate?

  • Engagement rate — total interactions divided by author followers (%)
  • Virality score(likes + 2·replies + 3·reposts + 2·quotes) / followers, normalized
  • Engagement velocity — interactions per hour since the post went live
  • Like-to-follower ratio — likes over followers
  • Reply-to-like and repost-to-like ratios — content-type fingerprint
  • Peak posting hour (UTC) and median likes — profile-level aggregates

How do I schedule daily or weekly runs?

Open the Actor page → click Schedule → choose a cron interval. The Threads Scraper runs at the scheduled time and pushes new results into the same or a fresh dataset depending on your configuration. See the Apify Schedules docs.

Can I use this Threads Scraper from Python or Node.js?

Yes. Use the apify-client-js or apify-client-python SDK. A minimal Node example:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('YOUR_USERNAME/threads-scraper').call({
scrapeMode: 'posts', usernames: ['zuck'], maxItems: 50, includeMetrics: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

My Threads Scraper run returns empty or partial results — what do I do?

Check the troubleshooting section below, then raise the requestDelaySecs, lower maxConcurrency to 2–3, and confirm proxyConfiguration is set to the RESIDENTIAL group. Threads routinely blocks datacenter IPs.

Troubleshooting

Rate limits or empty results

  • Raise requestDelaySecs to 3–5 seconds
  • Switch to RESIDENTIAL proxies (default)
  • Drop maxConcurrency to 2–3
  • Keep useCheerioFastPath on — Cheerio traffic gets rate-limited less than browser traffic

Login walls

  • The Actor automatically falls back from Cheerio to Playwright when a login wall is detected
  • If both fail, rotate to a fresh residential proxy pool and retry

IP blocks

  • Always use residential proxies for production scraping
  • The Actor auto-detects blocks and applies exponential backoff (base 5s, max 60s with jitter)

Cheerio vs Playwright behavior

SymptomLikely causeFix
Cheerio fails, Playwright succeedsLogin wall or JS-required pageNormal — fallback is working
Cheerio succeeds but posts missingdata-sjs payload truncatedLower maxItems or retry
Both failIP blockRotate proxy group or add delay

Support

  • Review the Troubleshooting section above
  • Read the Apify Actor development docs
  • Open an issue on GitHub or contact the developer through the Actor page

Changelog

1.0

  • Initial release of the Threads Scraper
  • Five scrape modes: profile, posts, hashtag, post_urls, search
  • Hybrid Cheerio + Playwright crawling with automatic fallback
  • GraphQL payload interception for structured data
  • Engagement metrics: rate, velocity, virality, like-to-follower ratio
  • Stealth Chrome args, fingerprinting defenses, automation-flag removal
  • Dataset views for Profiles, Posts, and a mixed Overview
  • Exponential backoff on rate limits with jitter

License

MIT