Threads Scraper | Profiles, Posts & Search (HTTP) avatar

Threads Scraper | Profiles, Posts & Search (HTTP)

Pricing

from $2.00 / 1,000 item scrapeds

Go to Apify Store
Threads Scraper | Profiles, Posts & Search (HTTP)

Threads Scraper | Profiles, Posts & Search (HTTP)

Scrape public Meta Threads profiles and posts without login. Profile mode (followers, bio, recent posts) and keyword search mode. $0.002/item + $0.02 start.

Pricing

from $2.00 / 1,000 item scrapeds

Rating

0.0

(0)

Developer

Andok

Andok

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Threads Scraper | Profiles, Posts & Keyword Search over HTTP

Scrape public Meta Threads (threads.com) data without logging in and without a browser. Get profile stats (followers, thread count, bio, avatar), the full text of public posts, and keyword-based post discovery, all as clean JSON. It is fast, cheap, and designed for social listening, creator research, brand monitoring and AI agents that need Threads context.

Modes

Profile mode takes a list of usernames or profile URLs. For each one it returns a profile item (display name, followers, thread count, bio, avatar) and then up to postsPerProfile recent public post items discovered for that user.

Search mode takes keyword queries. Threads does not offer anonymous search, so posts are discovered through public web search restricted to threads.com, and each discovered post is then fetched directly. This works well for topic and brand monitoring.

You can also pass postUrls[] in either mode to scrape specific posts directly.

Output

Profile item: record_type: "profile", username, display_name, bio, followers, followers_text, threads_count, avatar_url, url.

Post item: record_type: "post", username, display_name, text, image_url, video_url, post_code, posted_at, url, plus source (profile, search or url) and the originating query or source_username.

posted_at is decoded from the post shortcode, which embeds the creation timestamp, so it is accurate to the millisecond without extra requests. Engagement counters (likes, replies) are not exposed on logged-out pages and are therefore not returned.

How it works

Threads serves rich Open Graph metadata to link-preview crawlers. The Actor requests public profile and post pages the same way a link unfurler does and parses the metadata with Cheerio, so no JavaScript rendering, cookies or login are needed. Keyword and per-profile post discovery uses public search results. If Threads answers with its login wall or rate limits the request, you get a free error row with blocked: true instead of a failed run.

Proxy recommendation

Small runs work from a datacenter IP. Meta rate limits aggressively, so for more than a few dozen items use residential proxies in proxyConfiguration and keep delayMs at 500 or higher.

Input example

{
"mode": "profile",
"usernames": ["zuck", "https://www.threads.com/@mosseri"],
"postsPerProfile": 5,
"maxItems": 20,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
{ "mode": "search", "queries": ["ai agents", "open source llm"], "maxItems": 30 }

Pricing (pay per event)

EventPrice
Actor start$0.02
Item scraped (profile or post)$0.002

Example: 100 profiles with 5 posts each is 600 items, which costs 600 x $0.002 + $0.02 = $1.22. Error and blocked rows are free. maxItems and Apify's max-total-charge setting both cap spending, and the run stops cleanly when the limit is hit.

Limitations

  • Only public content is available. Private accounts, replies threads and follower lists require login and are not supported.
  • Post discovery depends on what public search engines have indexed, so it is a sample of recent posts rather than a complete timeline.
  • Meta changes its markup and anti-bot rules without notice. Structured errors tell you when that happens.
  • Respect Threads' terms and applicable privacy law when storing personal data.

Run locally

cd apify-threads-scraper
echo '{"mode":"profile","usernames":["zuck"],"postsPerProfile":3}' > storage/key_value_stores/default/INPUT.json
apify run