Skip to content

Threads Scraper

Try for free

Collect public Threads posts, replies, reposts, and profiles. Search by keyword or read an account, with engagement, media, and profile fields. No login.

🧵 Threads Scraper

Collect public Threads posts, replies, reposts and profiles without a login. Read one account, search posts by keyword or hashtag, and get text, timestamps, engagement, media and the public profile fields Threads shows to a signed-out visitor.

Each saved row costs $7 per 1,000 results, and runs that return nothing add no per-result fee.

✨ Why use Threads Scraper?

  • 🔓 No login — it reads what a signed-out visitor can open.
  • 🧭 Five modes — user posts, user reposts, user replies, keyword search and find profiles.
  • 📊 Engagement data — likes, replies, reposts, quotes, shares and views when the post page shows them.
  • 🖼️ Media and context — images, videos, polls, hashtags, mentions and the author's public profile on every row.
  • 🔎 Search controls — sort by top or recent, pick a preferred language and set start and end dates.
  • 🧾 Run summary — a summary under OUTPUT says how many rows were saved and why collection stopped.

🎯 Use cases

  • 📈 Performance comparison — see how public posts from a few accounts are doing.
  • 💬 Reply analysis — read the replies an account wrote, with the post answered when Threads shows it.
  • 🔁 Repost tracking — see which posts an account reposted and when.
  • 🔥 Topic monitoring — search a topic or hashtag and keep top-ranked or newest posts.
  • 👥 Niche account lists — build a short list of accounts with follower counts and bios.

🚀 How to use

  1. Choose a Mode.
  2. For user modes, add Usernames (handle, @handle or a profile URL). For search, add Keywords. For find profiles, add Keywords to search accounts, or only Usernames to load those accounts' profiles.
  3. Set Maximum results and, for search, the sort, language and dates.
  4. Click Start.
  5. Export the dataset to JSON, CSV or Excel, or use the API.

📥 Input

FieldRequiredDefaultWhat it does
modeYesuseruser, user_reposts, user_replies, search or profiles.
usernamesFor user modeszuckA handle, @handle or profile URL. Up to 20.
keywordsFor searchemptyWords or hashtags. Find profiles searches accounts by them (or loads the usernames' profiles when empty). In user modes they only tag matching rows.
max_postsNo10Cap per username or per keyword (not per run), 1 to 500. Two keywords with 10 save up to 20 rows.
search_filterNotopSearch only: top or recent.
search_languageNoenglishSearch only: english, japanese or chinese.
start_date, end_dateNoemptySearch only: YYYY-MM-DD or a relative value such as 7 days, in UTC.
proxyConfigurationNoDatacenterProxy pool for requests.

Posts from one account:

{
  "mode": "user",
  "usernames": ["zuck"],
  "max_posts": 10
}

Keyword search, newest first, last week only:

{
  "mode": "search",
  "keywords": ["AI"],
  "search_filter": "recent",
  "start_date": "7 days",
  "max_posts": 10
}

📤 Output

User posts, reposts, replies and search save one row per post. Find profiles saves one row per account.

FieldDescription
record_typepost or profile.
post_url, post_code, text_contentLink, short code and text.
created_atPublish time (ISO, UTC).
like_count, reply_count, repost_count, quote_count, share_countEngagement counts.
view_count, view_count_statusViews when the post page shows them.
media_type, media_url, has_mediaMedia details.
username, user_id, followers_count, bioPublic profile fields.
reposted_by_username, reposted_atPresent on repost rows.
replied_to_post_url, replied_to_textPresent on reply rows when the thread shows them.

Example item (trimmed):

{
  "record_type": "post",
  "post_url": "https://www.threads.com/@jane.doe/post/AbC123xyz",
  "post_code": "AbC123xyz",
  "text_content": "Sample post text shown here...",
  "created_at": "2026-10-13T22:19:22+00:00",
  "like_count": 9,
  "reply_count": 3,
  "repost_count": 0,
  "quote_count": 0,
  "share_count": 0,
  "view_count": 144,
  "view_count_status": "available",
  "has_media": true,
  "media_type": "photo",
  "username": "jane.doe",
  "user_id": "1000000001"
}

Image and video URLs point at Threads' media hosts and expire, so download files you need soon after the run. Post and profile links do not expire.

💰 Pricing

You pay $0.007 per saved row, which is $7 per 1,000 results, plus platform usage (compute at $0.30 per GB-hour, datacenter proxy at $1 per GB). Empty runs are not charged a per-result fee.

Worked example: a 10-post account read cost about $0.074 in our test: $0.07 in result fees plus about $0.003 compute and storage.

❓ FAQ

Is it legal to scrape Threads? The actor reads only public, signed-out content. You are responsible for using the data in line with applicable law and Threads' terms.

Do I need a Threads login or my own proxy? No. Private accounts and posts that are not public are skipped, and proxies are included.

Why are some view counts missing? Threads does not show views on every post. Those rows have view_count empty and view_count_status set to not_public_yet.

Can I pass a single post URL? Use the account mode with the profile URL or username. The actor reads an account's posts, replies or reposts, not one permalink as its own mode.

What if a username is not a Threads profile? That entry is skipped and the run still collects the rest. If every entry is unusable, the run finishes with no rows and names the skipped entries in the summary.

Can I schedule it or use the API? Yes, through schedules or the API.

⚠️ Limits

  • Up to 100 usernames or keywords per run (duplicates are merged; extras are listed in OUTPUT), and up to 500 results per username or keyword (search results from all keywords are merged in memory before saving, so a post found by several keywords lists all of them).
  • Account reads currently stay on the first public page (about 10 posts); loading later pages of an account returns an error from Threads, so a higher limit gives a partial run summary.
  • Find profiles by keyword returns at most 10 accounts per keyword. Threads refuses that account search from datacenter IPs and from many US/UK residential IPs, so that search goes straight to German residential proxies unless you set a proxy country (billed per GB at the residential rate, about 1.5 MB of residential traffic per keyword in our tests).
  • Signed-out search returns the page Threads shows for the query, often a few dozen posts rather than a full archive.
  • The fediverse_enabled flag is not in the public payload, so it is left null.
  • Dates, sort and language apply to search only.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.