Threads User Posts Scraper - Full Post History avatar

Threads User Posts Scraper - Full Post History

Pricing

from $2.55 / 1,000 posts

Go to Apify Store
Threads User Posts Scraper - Full Post History

Threads User Posts Scraper - Full Post History

Returns every public post of a Meta Threads account, back to its first: text, date, likes, replies, reposts, quotes, shares, mentions, links, image and video URLs, pinned and edited flags. Also reads the account's replies and reposts tabs. Paste usernames or profile links. No login, no cookies.

Pricing

from $2.55 / 1,000 posts

Rating

0.0

(0)

Developer

Ben

Ben

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

5

Monthly active users

11 days ago

Last modified

Features

Limited permissions

Share

📜 Threads User Posts Scraper - Full Post History

Export everything a Threads account has published, back to its first post: full text, publication time, likes, replies, reposts, quotes, shares, links, mentions, pictures and videos. The same Actor also reads the replies an account wrote and the posts it reposted. No login, cookies or API key. Export to JSON/CSV/Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.

🔎 What is the Threads User Posts Scraper?

It is an Apify Actor that reads public Threads accounts the way a logged-out visitor's browser does, and keeps going page after page instead of stopping where the profile page asks visitors to log in.

On a test run it saved National Geographic's whole public history, 1,819 posts from July 2023 to the day of the run, in 128 seconds. Smaller accounts take a few seconds.

Choose what to collect:

  • Posts: what the accounts published, newest first. Thread continuations by the same author are included.
  • Replies the accounts wrote: each reply comes with the link and text of the post it answers.
  • Reposts: the original posts the accounts reposted, with the time of the repost.

A date window (postedAfter, postedBefore) limits the export to a period, and reading stops as soon as older posts are reached, so a daily run with yesterday's date is quick and cheap.

What data does it extract?

  • Post: id, code, url, text, posted_at, is_pinned, is_edited, is_reply, reply_to_author
  • Engagement: likes, replies, reposts, quotes, shares
  • Author: username, full_name, author_id, is_verified
  • Text attachment: attachment_text, the long text Threads lets authors attach under a post (a 5,188-character essay on one of Adam Mosseri's posts), which the post's text does not contain
  • Content: mentions[], links[] (real destinations, not Threads redirect links), link_title, quoted_post_url, image_urls[], video_urls[]
  • Replies job: reply_to_url, reply_to_text
  • Reposts job: reposted_by, reposted_at

What users of other Threads Actors report, and what this one does

Reported in the Issues tabs of other Threads ActorsThis Actor
"Actor consistently fails to scrape most users"Reads each account through the site's own data calls and moves to a new residential address when Threads slows it down. All 1,819 runs in the 30 days before October 26, 2026 succeeded.
"Feature request: collecting an account's reposts"mode: reposts returns the original posts with reposted_by and reposted_at.
"Expose the stable numeric profile/user ID in output"Every row has author_id.
"Text attachment ("text snippet") content is missing from the output"attachment_text holds it.
Missing or misspelled profiles failing the runSkipped, named in the status message and the SUMMARY record; the run still succeeds.

⬇️ Input

FieldTypeWhat it does
modestringposts, replies or reposts
usernamesarrayUsernames, @handles or profile links
maxResultsintegerRows per account, newest first. 20 by default, up to 100,000
postedAfterstringOnly rows from this UTC date on (YYYY-MM-DD)
postedBeforestringOnly rows up to this UTC date

Example input

Every post of two accounts in September 2026:

{
"mode": "posts",
"usernames": ["natgeo", "nasa"],
"maxResults": 1000,
"postedAfter": "2026-09-01",
"postedBefore": "2026-09-30"
}

⬆️ Output

A real post row (media link shortened):

{
"record_type": "post",
"id": "3867248781788782365",
"code": "DWrOkcIlR8d",
"url": "https://www.threads.com/@natgeo/post/DWrOkcIlR8d",
"username": "natgeo",
"author_id": "63269174602",
"full_name": "National Geographic",
"is_verified": true,
"text": "Apollo 8 astronauts captured the iconic Earthrise image, which inspired the global environmental movement. Artemis II astronauts may have the chance to recreate it more than 50 years later. Here's how they might do it: https://on.natgeo.com/eOreaO",
"posted_at": "2026-04-03T16:00:23+00:00",
"likes": 867,
"replies": 8,
"reposts": 54,
"quotes": 2,
"shares": 5,
"is_reply": false,
"reply_to_author": null,
"is_pinned": false,
"is_edited": false,
"mentions": [],
"links": [
"https://on.natgeo.com/eOreaO"
],
"link_title": null,
"quoted_post_url": null,
"image_urls": [
"https://scontent-iad6-1.cdninstagram.com/v/t51.82787-15/659913135_1795..."
],
"video_urls": [],
"scraped_at": "2026-10-02T20:45:48.418624+00:00"
}

A row from the replies job carries the post it answers:

{
"record_type": "reply",
"id": "3999285079710053730",
"code": "DeAUJdDozVi",
"url": "https://www.threads.com/@mosseri/post/DeAUJdDozVi",
"username": "mosseri",
"author_id": "63482099442",
"full_name": "Adam Mosseri",
"is_verified": true,
"text": "Because on Instagram we show the profile pic instead of the profile icon when a user has multiple accounts, and native Liquid Glass doesn’t support images, so we needed to recreate the effect without access to the same APIs.",
"posted_at": "2026-10-02T20:12:34+00:00",
"likes": 105,
"replies": 12,
"reposts": 2,
"quotes": 0,
"shares": 2,
"is_reply": true,
"reply_to_author": "admirer_7124",
"is_pinned": false,
"is_edited": false,
"mentions": [],
"links": [],
"link_title": null,
"quoted_post_url": null,
"image_urls": [],
"video_urls": [],
"reply_to_url": "https://www.threads.com/@admirer_7124/post/DeAPAhmCnSC",
"reply_to_text": "Why does Liquid Glass look so different between Instagram and Threads when they’re both owned by Meta?\nThe design still feels incomplete and barely refined, as if the developers stopped halfway and called it finished. I really hope they keep improving it.",
"scraped_at": "2026-10-02T20:40:25.373184+00:00"
}

💰 How much does it cost?

You pay per saved post, plus a tiny start fee per run.

Apify planPer 1,000 posts until November 9, 2026Per 1,000 posts from November 9, 2026
Free$2.00$3.00
Starter$1.90$2.85
Scale$1.80$2.70
Business and above$1.70$2.55

The 1,819-post history above costs $3.64 on the Free plan until November 9 and $5.46 from then on. Set Maximum cost per run in the run options and the Actor stops saving at that amount and says so in the status message.

🤖 For AI agents

All inputs are optional, no credential is needed. Copy this input and change the usernames:

{"mode": "posts", "usernames": ["natgeo"], "maxResults": 50, "postedAfter": "2026-10-01"}

Each row is one post; posted_at is UTC, counts are integers, links holds the real destinations. The Actor is also available as a tool through Apify's MCP server.

⚠️ Limits

  • Public accounts only. Private accounts are skipped and named in the status message.
  • No keyword search: Threads gives a logged-out visitor about 20 search results and no next page.
  • Like and reply counts are what Threads shows at the time of the run.
  • Image and video links point to Meta's CDN and carry an expiry time set by Meta. Download the files you want to keep.

💡 Use cases

  • 📊 Competitor and brand monitoring: a daily run with postedAfter set to yesterday collects only the new posts of every account you follow.
  • 🧪 Content analysis: find which formats, topics and posting times get the most likes, replies and reposts.
  • 🧠 Datasets for AI and research: complete, dated post histories for fine-tuning, RAG pipelines or academic studies.
  • 🗂️ Archiving: keep a copy of an account's public posts with their links and media URLs.

❓ FAQ

Do I need a Threads or Instagram account? No. The Actor never logs in and needs no cookies.

How far back does it go? To the account's first public post. Threads opened in July 2023.

How fast is it? About 15 posts per request, roughly 14 posts per second on a long timeline.

Does maxResults count per account or per run? Per account. Three usernames with maxResults: 100 can save up to 300 rows. To cap the whole run, set Maximum cost per run.

What about pinned posts? A pinned post comes first with is_pinned: true, whatever its age. The date window still applies to it.

What happens with private or misspelled accounts? They are skipped and listed in the status message and the SUMMARY record. The run still succeeds with everything else.

Why do some posts have no text? Posts that are only a picture, a video or a link have an empty text. Their media and links are still in the row.

What if Threads slows the Actor down? The Actor continues from the same page through a new residential address, so a long export does not start over.

Is it legal to scrape Threads posts? The Actor reads only what Threads shows publicly to any visitor and does not log in. Posts contain personal data, so GDPR, CCPA and similar rules apply to how you store and use them, and Meta's terms apply to you as well. If in doubt, ask a lawyer.

Something is missing or broken? Open an issue on the Actor's Issues tab with the run ID. Issues are answered within one business day.

🔗 You might also like

Keywords: threads posts scraper, threads user posts, threads post history, scrape threads posts, meta threads scraper, threads.net scraper, threads timeline export, threads posts to csv, threads api alternative, threads without login, threads replies by user, threads reposts, threads engagement data, threads content analysis, threads monitoring, social media dataset

⌂ 换网址