Threads Posts Scraper: A Profile's Whole Post History avatar

Threads Posts Scraper: A Profile's Whole Post History

Pricing

from $1.40 / 1,000 posts

Go to Apify Store
Threads Posts Scraper: A Profile's Whole Post History

Threads Posts Scraper: A Profile's Whole Post History

A Threads profile's whole post history, back to its very first post, newest first. $2 per 1,000 posts. Text, date, likes, replies, reposts, quotes, media. No account needed.

Pricing

from $1.40 / 1,000 posts

Rating

0.0

(0)

Developer

Luzi

Luzi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Get every post a Threads profile has made, newest first, all the way back to its first post: the text, the date, likes, replies, reposts, quotes, shares, images, videos and links, with the profile's followers, bio and tags on every row. Paste profile links or just usernames. No Threads or Instagram account needed.

Tested daily. Latest checks: one profile's whole history, 192 posts back to its first one; 723 posts from three profiles in under 4 minutes.

What does this Actor do?

You give it Threads profiles. For each one it reads the profile's posts from the newest back, about 4 threads at a time, and saves one row per post until it reaches your limit, your date, or the profile's first post.

A thread on Threads can hold several posts: the first one and the author's own follow-ups underneath it. Each of them is its own row, and rows of the same thread share a thread_id.

Each post comes with:

  • its text, link and date, and whether it was edited
  • its likes, replies, reposts, quotes and shares
  • whether it is text, an image, a video or a carousel, with the image and video links
  • the link it shares, the links and accounts named in its text, the post it quotes, its topic tag and its song, when it has them
  • who can reply to it, its AI label, and whether it is pinned, a spoiler or a ghost post
  • where it sits in its thread
  • the author's username, name, ids, picture and verified badge
  • the profile's follower count, thread count, bio, tags and picture

Why use it?

  • The whole history, not just the latest. This Actor keeps going to a profile's very first post, or stops at your limit or your date.
  • Every follow-up in its place. A thread's follow-ups are rows of their own, numbered in thread order, so long threads are not cut to their first post.
  • Track a brand, a creator or a competitor. See what they post, how each post does, and how many followers they have.
  • Monitor new posts. Run it daily with Only posts newer than set to 1 day.
  • Use the data anywhere. Download as JSON, CSV or Excel, or send it to your own tools through Apify's API and integrations.

How to use it

  1. Paste one or more profiles into Profile links or usernames: https://www.threads.com/@nasa, threads.net/@nasa, @nasa or nasa all work.
  2. Optionally, set Only posts newer than and Max posts per profile.
  3. Click Start. When the run ends, open the Output tab to view the posts or download them.

A link to a single post, a search or a tag page is not supported: paste the profile's link or username instead. Put one profile on each line of the list.

Run it with no input to see a sample: up to 20 posts from NASA's profile, charged as usual.

Input

FieldWhat it doesDefault
Profile links or usernames (startUrls)The profiles to read. Required.—
Only posts newer than (onlyPostsNewerThan)A date (YYYY-MM-DD, UTC) or a period (7 days, 2 weeks, 3 months, 1 year). Empty = the whole historyempty
Max posts per profile (maxPostsPerProfile)Stop reading a profile after this many posts, from 1 to 10,000100
Only new posts (onlyNewItems)Return only the posts an earlier run did not; see New items only belowoff

Example input:

{
"startUrls": ["https://www.threads.com/@nasa", "zuck"],
"onlyPostsNewerThan": "30 days",
"maxPostsPerProfile": 500
}

New items only

Turn on Only new posts (onlyNewItems) for a scheduled run, or a re-run of the same task. Each run then returns only the posts it has not returned before: it reads each profile back to a day before the last run that read it, and skips the posts an earlier run saved. Skipped posts are neither saved nor charged; each new post is charged as usual.

  • Runs with other settings, or from another task, keep their own list, so two schedules on one profile never skip each other's posts.
  • If a profile stops at Max posts per profile, the posts past that point are not returned later. Set the maximum above what one profile gets between runs.
  • The list lives in your Apify account, in a key-value store named threads-posts-scraper-monitor. Delete it to start afresh.

Output

One row per post. An example, with made-up values:

{
"post_id": "3100000000000000001",
"post_code": "DAbCdEfGhIj",
"post_fbid": "17900000000000001",
"url": "https://www.threads.com/@example.brand/post/DAbCdEfGhIj",
"text": "Our new launch is live today. Read more: example.com/launch",
"posted_at": "2026-10-13T18:28:06.000Z",
"is_edited": false,
"like_count": 4176,
"reply_count": 17,
"repost_count": 89,
"quote_count": 11,
"reshare_count": 51,
"like_counts_hidden": false,
"media_type": "carousel",
"image_urls": ["https://…/1.jpg", "https://…/2.jpg"],
"video_urls": [],
"image_alt_texts": ["A product on a white table"],
"media_width": 1080,
"media_height": 1350,
"has_audio": null,
"link_url": "https://example.com/launch",
"link_title": "Our launch",
"link_image_url": "https://…/preview.jpg",
"link_favicon_url": "https://…/favicon.png",
"text_links": ["https://example.com/launch"],
"mentioned_users": [
{ "username": "example.partner", "id": "70000000002", "profile_pic_url": "https://…/p.jpg" }
],
"topic": "Product News",
"topic_is_community": false,
"music_title": null,
"music_artist": null,
"music_song_id": null,
"music_audio_id": null,
"reply_control": "everyone",
"ai_detection_method": "NONE",
"is_spoiler": false,
"is_ghost_post": false,
"reply_to_username": null,
"reply_to_user_id": null,
"author_username": "example.brand",
"author_full_name": "Example Brand",
"author_id": "70000000001",
"author_fbid": "17800000000000001",
"author_is_verified": true,
"author_profile_pic_url": "https://…/avatar.jpg",
"author_is_meta_ai_bot": false,
"quoted_post_url": null,
"quoted_post": null,
"is_pinned": false,
"is_pinned_in_thread": false,
"thread_id": "3100000000000000001",
"thread_position": 1,
"profile_follower_count": 48210,
"profile_thread_count": 312,
"profile_biography": "Making things people like.",
"profile_bio_links": [{ "url": "https://example.com", "title": null, "is_verified": false }],
"profile_tags": ["Product News"],
"profile_pic_hd_url": "https://…/avatar_640.jpg",
"source_url": "https://www.threads.com/@example.brand"
}
FieldWhat it holds
post_idThreads' id for the post
post_codeThe short code in the post's link
post_fbidMeta's other id for the post
urlThe post's page
textThe post's text. null for a post with only media
posted_atWhen it was posted (UTC, ISO 8601)
is_editedtrue when the author edited the text
like_countLikes
reply_countDirect replies
repost_countReposts
quote_countQuotes
reshare_countShares (Threads leaves it out on some posts)
like_counts_hiddentrue when the author hid the post's like count
media_typetext, image, video or carousel
image_urlsThe post's images (for a carousel, one per slide; a video's cover image too)
video_urlsThe post's videos
image_alt_textsThe image descriptions Threads gives the post's images, when it has them
media_width, media_heightThe size of the post's image or video in pixels. null for a text post
has_audioFor a video, whether it has sound; null for a post with no video
link_urlThe web link the post shares, when it has one
link_titleThe title of that link's preview card
link_image_urlThe image of that link's preview card
link_favicon_urlThe site icon on that link's preview card
text_linksWeb links written in the post's text
mentioned_usersThe accounts the text names: username, id and profile_pic_url for each
topicThe post's topic tag, when it has one
topic_is_communitytrue when that topic is a Threads community
music_title, music_artistThe song on the post, when it has one
music_song_idThreads' id for that song
music_audio_idThreads' id for that song's audio
reply_controlWho may reply, as Threads names it (for example everyone)
ai_detection_methodThreads' AI-content label for the post; NONE when it has none
is_spoilertrue when the post's media is marked as a spoiler
is_ghost_posttrue for a ghost post (one set to disappear)
reply_to_usernameFor a follow-up, the account it answers (usually the profile itself)
reply_to_user_idThat account's id
author_usernameThe author's username
author_full_nameThe author's display name
author_idThreads' id for the author
author_fbidMeta's other id for the author
author_is_verifiedtrue when the author has the verified badge
author_profile_pic_urlThe author's profile picture
author_is_meta_ai_bottrue when the author is a Meta AI account
quoted_post_urlThe post it quotes, when it quotes one
quoted_postThat quoted post's own details (text, date, counts, media, author), in the same field names as a row
is_pinnedtrue when the author pinned it to their profile
is_pinned_in_threadtrue when the post is pinned under the post it answers
thread_idThe thread it belongs to: the same for a post and its author's follow-ups
thread_position1 for the thread's first post, 2, 3… for the author's follow-ups
profile_follower_countThe profile's followers when it was read
profile_thread_countThe thread count the profile shows (threads, not posts); null when Threads shows it rounded
profile_biographyThe profile's bio
profile_bio_linksThe links on the profile: url, title and is_verified for each
profile_tagsThe topic tags on the profile
profile_pic_hd_urlThe profile picture at its largest size
source_urlThe profile this post was read from

Not included: the replies other people wrote, the profile's reposts of other people's posts, view counts, polls, and the lyrics of a post's song.

How much does it cost?

No surcharges and no paid options; an item that fails is not charged.

You pay for what you get:

  • $2 per 1,000 posts ($0.002 a post). Each post is charged once per run.
  • No start fee, and nothing per profile.

So 300 posts from each of 2 profiles cost $1.20. If you set a maximum cost for a run, the Actor stops when it reaches it and keeps every post saved so far.

How long does a run take?

About 4 threads every couple of seconds. A profile with 200 posts takes about a minute or two.

Good to know

  • Pinned posts come first. A profile's pinned posts open its list whatever their date. With Only posts newer than set, an older pinned post is left out.
  • A profile's post count is in threads, not posts. The "N Threads" on a profile (profile_thread_count) counts threads; with follow-ups, you get more rows than that number. The very end of a long history can come up a few threads short of it.
  • Check your input first. A link that is not a Threads profile stops the run before anything is read, and the message names it.
  • One profile that cannot be read does not stop the run. A profile that does not exist or is private ends with a message, the others carry on, and the run's status lists the profiles that could not be read. The run fails only when no profile could be read. Such a profile is tried a few times before it is given up, which can add two or three minutes to the run.
  • Counts move. Likes, replies and followers are the numbers at the moment the post was read.
  • Remove repeats by post_id. A post whose counts change while a run pages past it can appear twice in one run, and a daily run reads recent posts again unless Only new posts is on.

More Actors from us

Use it from an AI agent or the API

One call starts a run and returns its items (Apify waits up to 300 seconds; for a longer run, start it with POST /v2/acts/…/runs and read its dataset):

POST https://api.apify.com/v2/acts/luzivanlt~threads-posts-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>

With the sample input as its JSON body:

{
"startUrls": ["https://www.threads.com/@nasa"],
"maxPostsPerProfile": 20
}

Its inputs, in the order of the input form:

InputWhat it takesDefault
startUrls (Profile links or usernames)Threads profiles to read: links such as https://www.threads.com/@nasa (threads.net links work too), or just the username (nasa or @nasa).—
onlyPostsNewerThan (Only posts newer than)Keep only posts from this date on: a date (YYYY-MM-DD, UTC) or a period such as "7 days", "2 weeks", "3 months" or "1 year".—
maxPostsPerProfile (Max posts per profile)Stop reading a profile after this many posts.100
onlyNewItems (Only new posts)Turn this on for a scheduled run, or a re-run of the same task: each run then returns only the posts it has not returned before, reading each profile back to a day before the last run that read it.—

Apify's MCP server, https://mcp.apify.com, lists it as luzivanlt/threads-posts-scraper. To give an AI agent this Actor as a tool, add the server to the agent's MCP config:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=luzivanlt/threads-posts-scraper"
}
}
}

The client signs in with OAuth, or add "headers": { "Authorization": "Bearer <APIFY_TOKEN>" }.

Charged per post delivered; the sample input above costs at most $0.04.

FAQ

Do I need a Threads or Instagram account? No. The Actor reads what anyone can see on a public Threads profile.

Can it read private profiles? No, only public ones.

Can I search Threads by keyword or hashtag? Not yet: this Actor reads profiles.

Can I run it from my own code, on a schedule, or with other apps? Yes. Like any Apify Actor, you can start it through the Apify API, run it on a schedule, and connect it to other apps with Apify's integrations and webhooks.

This Actor reads only public posts that anyone can see. Posts and profiles hold personal data, such as names, ids and pictures: check Meta's terms and the laws that apply to you (such as the GDPR) before you use the data. If you are unsure, ask a lawyer.

Support

Found a problem or missing a feature? Open an issue on the Issues tab and include the run's link.


This Actor is not affiliated with, endorsed by or sponsored by Threads, Meta or Instagram.