Threads Scraper - Profiles, Posts & Search avatar

Threads Scraper - Profiles, Posts & Search

Pricing

from $2.29 / 1,000 threads rows

Go to Apify Store
Threads Scraper - Profiles, Posts & Search

Threads Scraper - Profiles, Posts & Search

Scrape public Threads user posts, search posts, and profile matches. Extract post text, profile data, engagement metrics, media URLs, contacts, hashtags, and mentions. Export JSON, CSV, Excel.

Pricing

from $2.29 / 1,000 threads rows

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Threads Scraper extracts public Threads user posts, keyword search posts, and profile matches from Threads. Use it to collect post text, profile data, public engagement metrics, media URLs, bio contacts, hashtags, mentions, and URLs, then export the results from Apify as JSON, CSV, or Excel.

Paste a Threads username, keyword, hashtag, or profile discovery query into your AI assistant and ask it to run this Actor through the Apify API. It can schedule monitoring, fetch fresh rows, and pass the dataset to your CRM, spreadsheet, or research workflow.

Scrape Threads Profiles, User Posts, And Search Results

This Threads scraper supports three public-data workflows:

  • User posts: scrape recent public posts from up to 20 Threads profiles.
  • Search posts: search public Threads posts by keyword or hashtag with top or recent ordering.
  • Find profiles: discover up to 10 public account matches per keyword from Threads search/profile results.

You can run the Actor manually, call it through the Apify API, run it on Apify schedules, connect it to Apify integrations, and export datasets from Apify storage in JSON, CSV, Excel, XML, RSS, or HTML formats. Apify also offers free trial credits where applicable on the platform.

Threads Scraper Input

FieldTypeDescription
modestringScraping mode: user, search, or profiles.
usernamesarrayTarget usernames for user mode. Accepts zuck, @nike, or https://threads.com/@meta. Uses up to 20.
keywordsarrayKeywords or hashtags for search/profiles modes. In user mode, optional keywords flag matching posts without filtering them out. Uses up to 20.
search_filterstringSearch mode only. top returns popular public posts; recent favors newer public matches.
start_datestringSearch mode only. Date from which to keep posts, using YYYY-MM-DD or relative values such as 7 days.
end_datestringSearch mode only. Date up to which to keep posts, using YYYY-MM-DD or relative values such as 1 day.
max_postsintegerResults per user or search keyword. Find Profiles returns up to 10 profiles per keyword even when this value is higher.

How To Scrape Threads User Posts

  1. Set mode to user.
  2. Add one or more Threads usernames, handles, or profile URLs.
  3. Set max_posts to the number of public posts to collect per profile.
  4. Optionally add keywords to flag matching posts in keyword_match.
  5. Run the Actor and open the dataset.
{
"mode": "user",
"usernames": ["zuck"],
"max_posts": 50
}
{
"mode": "user",
"usernames": ["zuck", "instagram", "nike"],
"keywords": ["AI"],
"max_posts": 100
}

How To Search Threads Posts By Keyword Or Hashtag

  1. Set mode to search.
  2. Add one or more keywords; the # symbol is optional for hashtags.
  3. Choose top for notable public posts or recent for newer public matches.
  4. Optionally add start_date and end_date for recent windows.
  5. Export the dataset in JSON, CSV, or Excel.
{
"mode": "search",
"keywords": ["artificial intelligence", "#startup"],
"search_filter": "top",
"max_posts": 50
}
{
"mode": "search",
"keywords": ["AI"],
"search_filter": "recent",
"start_date": "7 days",
"max_posts": 50
}

Date filtering applies to search mode only. Because the Actor runs without logging in, it keeps matching public posts inside your requested date range from the results Threads currently exposes. It is best for recent windows such as the last 7 or 30 days.

How To Find Threads Profiles By Keyword

Use profiles mode to discover public account matches for a topic, business category, brand, or local query.

{
"mode": "profiles",
"keywords": ["coffee roaster", "specialty coffee"],
"max_posts": 10
}

For local account discovery, include the place name in the keyword, such as Taipei restaurant instead of only restaurant. Empty bio/contact fields mean the account did not publish that information or Threads did not expose it publicly.

Threads Scraper Output Data Fields

Every row includes record_type: post for user/search post rows or profile for profile discovery rows.

FieldDescription
record_typepost or profile.
post_url, post_codeDirect post URL and Threads post identifier when available.
text_contentPublic post text.
created_at, created_at_display, created_at_timestampPost timestamp formats when available.
like_count, reply_count, repost_count, quote_count, share_count, view_countPublic engagement metrics when exposed by Threads.
view_count_statusWhether public view count was available.
has_media, media_type, media_url, media_urls, media_width, media_height, has_audioPublic media fields when available.
hashtags, mentions, urls, mentioned_usersEntities parsed from post text and public metadata.
is_pinned, is_edited, is_paid_partnership, is_reply, is_quote_post, is_repostPublic post status flags when available.
reply_to_username, reply_control, quoted_post_url, reposted_post_urlReply, quote, and repost context when available.
language, topic_tag, location_name, location_id, link_titlePublic metadata when Threads exposes it.
username, display_name, profile_url, is_verifiedAuthor or profile identity fields.
followers_count, bio, profile_pic_url, profile_pic_hd_urlPublic profile fields when available.
fediverse_enabled, external_links, emails, phones, bio_links, profile_tagsPublic profile/contact fields or values extracted from the public bio.
podcast_name, podcast_url, podcast_platformPublic podcast fields when available.
search_filter, search_keyword, keyword_matchSearch or keyword-flagging context.
scraped_atTimestamp when the row was collected.

Threads Scraper Output Example

{
"record_type": "post",
"post_url": "https://www.threads.com/@example_creator/post/EXAMPLE01",
"post_code": "EXAMPLE01",
"text_content": "Launching a new research note today...",
"created_at": "2026-01-12T18:00:30+00:00",
"created_at_display": "2026-01-12 18:00 UTC",
"created_at_timestamp": 1768240830,
"like_count": 268,
"reply_count": 81,
"repost_count": 12,
"quote_count": 4,
"share_count": 22,
"view_count": 41651,
"view_count_status": "available",
"has_media": false,
"media_type": "text",
"media_url": "",
"media_urls": [],
"hashtags": [],
"mentions": [],
"urls": [],
"scraped_at": "2026-04-25T10:00:00+00:00",
"username": "example_creator",
"display_name": "Example Creator",
"profile_url": "https://www.threads.com/@example_creator",
"is_verified": true,
"followers_count": 54000,
"bio": "Research notes and product updates",
"external_links": ["https://example.com"],
"emails": [],
"phones": [],
"search_filter": null,
"search_keyword": null,
"keyword_match": null
}

Use Threads Scraper With Python

Install the Apify Python client and call the Actor:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("parsebird/threads-scraper").call(
run_input={
"mode": "search",
"keywords": ["AI"],
"search_filter": "recent",
"max_posts": 30,
}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Use Threads Scraper With JavaScript

Install the Apify JavaScript client and call the Actor:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('parsebird/threads-scraper').call({
mode: 'profiles',
keywords: ['coffee roaster'],
max_posts: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

How Much Does Threads Scraper Cost?

What is the pricing model?
This Actor uses pay per event pricing. You pay for each pushed Threads row.

PlanPrice
Free, Bronze, Silver$2.49 per 1,000 results
Gold$2.29 per 1,000 results

Are platform features included?
The event price includes normal Apify platform usage for this Actor. You can still use scheduling, API access, integrations, and dataset exports.

Does this Actor collect private Threads data?
No. It is designed to collect only public data that Threads exposes without login.

What should I check before using the data?
Review the Threads terms, applicable privacy laws, and your own use case. Do not use scraped data for spam, harassment, or unlawful profiling.

Why are some fields empty?
Threads can change what it shows publicly over time. Some public posts may not expose every engagement, media, author, or profile field. Very new, deleted, private, restricted, or partially available posts may return incomplete fields. Search ranking may include broadly related posts, and a keyword can return fewer rows than requested when fewer matching public results are available.

FAQ

Can I scrape multiple Threads users in one run?
Yes. User mode accepts up to 20 usernames, handles, or Threads profile URLs per run.

Can I search both keywords and hashtags?
Yes. In search mode, AI and #AI are both accepted.

Does max_posts raise the Find Profiles limit?
No. Profiles mode returns up to 10 account matches per keyword because Threads public profile discovery is capped by what the site exposes.

Can I monitor Threads keywords periodically?
Yes. Use mode: "search" with search_filter: "recent" and run it with Apify schedules.

Why did I get fewer rows than requested?
Threads may expose fewer public posts or profiles for a term at run time, especially for specific phrases, older content, private accounts, restricted content, or narrow date windows.