Meta Threads Scraper avatar

Meta Threads Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Meta Threads Scraper

Meta Threads Scraper

Meta Threads scraper that extracts posts, profiles, and replies from threads.net using direct network requests, so you get structured JSON data for social listening, competitor research, and content analysis without browser automation.

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

Kawsar

Kawsar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

I built this Apify actor to pull public data straight from Meta's Threads. It uses a headless browser (Playwright) to gracefully handle Meta's API protections, extracting the raw data they embed directly into the page. You just give it a username or a post URL, and it hands back clean, structured JSON you can actually use.

It handles three main things:

  • Posts: grabbing a user's timeline
  • Profiles: getting account details like follower counts and bios
  • Replies: pulling comments on a specific post

Input

ParameterTypeDefaultDescription
usernamesarray-Threads usernames to scrape (leave out the @ symbol).
urlsarray-Exact Profile or post URLs from threads.net.
scrapeTypestring"posts"What you want to collect: posts, profile, or replies.
maxItemsinteger100Maximum items to grab per username or URL.
timeoutSecsinteger300When the actor should give up (in seconds).
requestTimeoutSecsinteger30How long to wait for a single page load.
proxyConfigurationobjectDatacenterProxy settings to avoid getting blocked.

Example input

{
"usernames": ["zuck", "instagram"],
"scrapeType": "posts",
"maxItems": 50,
"proxyConfiguration": { "useApifyProxy": true }
}

If you prefer URLs, just pass them directly:

{
"urls": ["https://www.threads.net/@zuck"],
"scrapeType": "profile"
}

Output

The actor stores everything in a dataset. A typical post looks like this:

{
"postId": "3141737961795561608",
"postUrl": "https://www.threads.net/t/CuZsgfWLyiI",
"postText": "70 million sign ups on Threads as of this morning. Way beyond our expectations.",
"username": "zuck",
"userId": "314216",
"userVerified": true,
"userProfilePic": "https://scontent.cdninstagram.com/...",
"likeCount": 146411,
"replyCount": 27068,
"repostCount": 0,
"publishedAt": "2023-07-07T13:39:32+00:00",
"imageUrls": [],
"videoUrls": [],
"hasAudio": null,
"postCode": "CuZsgfWLyiI",
"mediaWidth": 612,
"mediaHeight": 612,
"isRepost": false,
"isQuote": false,
"scrapedAt": "2025-03-14T17:30:00+00:00"
}

When you scrape in profile mode, you'll get account-level fields instead, like displayName, bio, followerCount, and isPrivate.

How it works under the hood

Threads changes its layout and API protections pretty often. Right now, the actor works by loading the public page using Playwright and extracting the React/Relay server-side rendered (SSR) JSON directly from the page scripts. This means we don't have to fight their dynamic API tokens, and we still get the exact data the native web app uses.

A few tips

  • Start small. Use a low maxItems value (like 10-20) to make sure everything works before running massive scrapes.
  • If you start seeing blocks or timeouts, switch to Residential proxies. Meta can be pretty aggressive with rate-limiting datacenter IPs.
  • The profile scrape type is the fastest option since it only needs to load one page per user.

Support & Contact

For fast support, custom requests, bug reports, or just to say hi, feel free to reach out directly:

I'm regularly building new scrapers and automation tools, so connect with me if you want to see what I'm working on next.