Threads Scraper - Profiles, Posts & Search
Pricing
from $2.29 / 1,000 threads rows
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
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Threads Scraper - Profiles, Posts & Search
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
toporrecentordering. - 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
| Field | Type | Description |
|---|---|---|
mode | string | Scraping mode: user, search, or profiles. |
usernames | array | Target usernames for user mode. Accepts zuck, @nike, or https://threads.com/@meta. Uses up to 20. |
keywords | array | Keywords or hashtags for search/profiles modes. In user mode, optional keywords flag matching posts without filtering them out. Uses up to 20. |
search_filter | string | Search mode only. top returns popular public posts; recent favors newer public matches. |
start_date | string | Search mode only. Date from which to keep posts, using YYYY-MM-DD or relative values such as 7 days. |
end_date | string | Search mode only. Date up to which to keep posts, using YYYY-MM-DD or relative values such as 1 day. |
max_posts | integer | Results 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
- Set
modetouser. - Add one or more Threads usernames, handles, or profile URLs.
- Set
max_poststo the number of public posts to collect per profile. - Optionally add
keywordsto flag matching posts inkeyword_match. - 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
- Set
modetosearch. - Add one or more
keywords; the#symbol is optional for hashtags. - Choose
topfor notable public posts orrecentfor newer public matches. - Optionally add
start_dateandend_datefor recent windows. - 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.
| Field | Description |
|---|---|
record_type | post or profile. |
post_url, post_code | Direct post URL and Threads post identifier when available. |
text_content | Public post text. |
created_at, created_at_display, created_at_timestamp | Post timestamp formats when available. |
like_count, reply_count, repost_count, quote_count, share_count, view_count | Public engagement metrics when exposed by Threads. |
view_count_status | Whether public view count was available. |
has_media, media_type, media_url, media_urls, media_width, media_height, has_audio | Public media fields when available. |
hashtags, mentions, urls, mentioned_users | Entities parsed from post text and public metadata. |
is_pinned, is_edited, is_paid_partnership, is_reply, is_quote_post, is_repost | Public post status flags when available. |
reply_to_username, reply_control, quoted_post_url, reposted_post_url | Reply, quote, and repost context when available. |
language, topic_tag, location_name, location_id, link_title | Public metadata when Threads exposes it. |
username, display_name, profile_url, is_verified | Author or profile identity fields. |
followers_count, bio, profile_pic_url, profile_pic_hd_url | Public profile fields when available. |
fediverse_enabled, external_links, emails, phones, bio_links, profile_tags | Public profile/contact fields or values extracted from the public bio. |
podcast_name, podcast_url, podcast_platform | Public podcast fields when available. |
search_filter, search_keyword, keyword_match | Search or keyword-flagging context. |
scraped_at | Timestamp 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 ApifyClientclient = 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.
| Plan | Price |
|---|---|
| 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.
Is It Legal To Scrape Threads?
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.
Related Threads And Social Media Actors
- Threads Search Scraper for a focused keyword and hashtag search workflow.
- YouTube Search Scraper for YouTube search result collection.
- Pinterest Search Scraper for Pinterest keyword discovery.
- Truth Social Scraper for public Truth Social data.
- Product Hunt Scraper for Product Hunt product and launch research.
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.