Threads Hashtag Scraper avatar

Threads Hashtag Scraper

Pricing

from $2.20 / 1,000 posts

Go to Apify Store
Threads Hashtag Scraper

Threads Hashtag Scraper

Monitor any Threads hashtag or keyword: full caption, author, timestamp, likes, replies, reposts, links and media, 26 columns per row, to CSV or Excel. Track brand mentions and find influencers by hashtag. 15-25 posts per hashtag, stated up front. Posts with no caption are never charged for.

Pricing

from $2.20 / 1,000 posts

Rating

0.0

(0)

Developer

Stable

Stable

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Share

Give it a hashtag. Get back the posts Threads is showing on that tag right now — the full caption, who wrote it, when, and how many likes and replies it has — as a flat table you can open in a spreadsheet. Search phrases work the same way, for topics people write about without tagging.

No login, no cookies, no browser automation.

Two things before you run it. A hashtag returns 15 to 25 posts and there is no second page — that is Threads' own limit, and volume comes from listing more hashtags, not from a bigger number in the input. And you are charged only for a post that has text: a caption-less photo still arrives with its image URL and costs nothing. Both are explained in full below.

What one row looks like

Copied out of a real run, not written by hand — run the Actor on coffee and you will get rows in exactly this shape.

{
"recordType": "post",
"postUrl": "https://www.threads.net/@bjoerncarlos_/post/DFHxXWmIFT4",
"text": "Coffee Lovers ☕\ncoffeetime",
"username": "bjoerncarlos_",
"userFullName": "Björn Carlos | Fitness & Lifestyle",
"userIsVerified": false,
"userUrl": "https://www.threads.net/@bjoerncarlos_",
"postedAt": "2025-01-22T08:37:42Z",
"likeCount": 765,
"replyCount": 76,
"repostCount": 0,
"quoteCount": 0,
"hashtags": "",
"topicTag": "coffeetime",
"mentions": "",
"linkUrl": "",
"mediaType": "image",
"mediaCount": 1,
"imageUrl": "https://scontent.cdninstagram.com/v/t51.75761-15/474245934_...",
"videoUrl": "",
"isReply": false,
"postId": "3551023940293907704",
"userId": "63223801492",
"shortcode": "DFHxXWmIFT4",
"query": "coffee",
"queryType": "hashtag"
}

Twenty-six columns on every row, in the same order, every time. A field Threads did not publish comes back empty — never guessed, never "N/A".

columnwhat it is
recordTypealways post, so rows stay identifiable if you merge this export with another
postUrlthe public link to the post
textthe caption, in full, exactly as written
username, userFullName, userIsVerified, userUrlwho posted it
postedAtwhen, as ISO 8601 UTC — sortable in any spreadsheet
likeCount, replyCount, repostCount, quoteCountengagement, as integers
hashtagsthe #tags written in the caption, comma-separated
topicTagthe topic tag the author attached, which Threads keeps separate from the caption
mentions@handles mentioned, in their canonical spelling
linkUrlthe first link in the post
mediaTypetext, image, carousel, video or audio
mediaCount, imageUrl, videoUrlhow many attachments and where they are
isReplywhether the post is a reply to another
postId, userId, shortcodestable ids, for joining against your own data
query, queryTypewhich hashtag or phrase found this post

Four ready-made views are included — Posts, Engagement, Authors, Media — so the export has the columns for the job without editing.


Input

{
"hashtags": ["coffee", "specialtycoffee", "coffeeshop"],
"searchQueries": ["small business marketing"],
"maxPosts": 0,
"onlyWithText": false
}
field
hashtagsone per line. The # is optional; a pasted threads.net/tag/... URL works too
searchQueriesone topic per line — coffee, small business marketing. Threads matches topics, not sentences: measured in a single run, coffee returned 21 posts, small business marketing returned 20, and best coffee in Lisbon returned none at all. If a phrase comes back empty it is genuinely unmatched, not blocked — try a shorter, plainer term
maxPostsa ceiling for the whole run, across every line of input — not a per-hashtag figure. 0 means everything available
onlyWithTextdrop caption-less photos from the export as well as from the bill

The same post appearing under two of your hashtags is stored once and charged once.


Recipes

Four jobs this is actually bought for. Each is the whole input.

Watch what people say about your brand. Names get written as plain words far more often than as tags, so give it both. {"hashtags": ["yourbrand"], "searchQueries": ["yourbrand"], "onlyWithText": true}

Find creators posting on your topic. Sort the export by likeCount, take userUrl for the ones worth contacting. {"hashtags": ["homebarista", "specialtycoffee", "coffeeroasting"]}

Follow a launch day. Schedule the same run hourly; new posts appear on the tag page as they are published, and duplicates are stored once. {"hashtags": ["yourlaunchtag"], "maxPosts": 0}

Fill a topic feed. Twenty lines of input is twenty requests and roughly 300–500 posts, which is a day's worth of material for one subject. {"hashtags": ["ai", "machinelearning", "llm", "opensource"]}


What it costs

$2.20 per 1,000 posts, charged per post that has text. A post with no caption is returned with its image URL and costs nothing.

A three-line run — two hashtags and one phrase — returned 53 posts in 17 seconds. At this rate that is about $0.12, and the first 100 posts are free while you evaluate.

Across 85 posts measured on five different tag and search pages, every one of them had text, so in practice you are paying for what you get. The point of the rule is the case where you are not.

Free plan: everything works the same on the free tier — there is no reduced mode, no locked fields and no smaller row. The free trial covers the first 100 posts, which is four or five hashtags.

One request per hashtag returns about 900 KB, so a twenty-hashtag run moves roughly 18 MB and finishes in well under two minutes.


What it does not do

Stated here rather than discovered on your invoice.

  • No paging. 15–25 posts per hashtag is what Threads offers: the tag page says in its own response that it has no further results, so asking for 5 000 posts from one hashtag returns about 20. Volume comes from listing more hashtags and more phrases — twenty hashtags is twenty requests and roughly 300–500 posts. To follow a hashtag over time, schedule the run daily; new posts appear on the tag page as they are published.
  • No follower counts. The tag page does not carry them, and fetching each author's profile to add one column would multiply the cost of a run several times over. If you need follower counts, take the userUrl column into a profile scraper.
  • No replies or comment threads. Only the posts listed on the tag or search page itself.
  • No private or login-only content. Public posts only.
  • Media URLs expire. Threads' image and video links are signed and time-limited. Download what you need soon after the run; the postUrl stays valid.

Notes

Posts are returned in the order Threads lists them, which is its own relevance ranking rather than strict reverse-chronological order. postedAt is there to sort by if you want time order.

Every run writes a RUN_SUMMARY record next to the dataset: how many posts were stored, how many carried text, which hashtags came back empty, how much traffic the run used, and whether Threads offered a next page on any of them. If a run returns nothing, it fails loudly and says which of the two reasons applied — an empty hashtag or a refusal — rather than reporting an empty success.


FAQ

Do I need a Threads or Instagram account?

No. No login, no cookies, no API key and no browser. The Actor reads the public tag and search pages the same way a logged-out visitor does.

How many posts can one hashtag give me?

15 to 25, and there is no second page. That is Threads' own limit, not a setting — the tag page states in its own response that it has no further results. Asking for 5,000 posts from one hashtag still returns about 20.

Two ways, and they combine. List more hashtags and phrases — twenty lines is twenty requests and roughly 300–500 posts. And schedule the run: new posts appear on the tag page as they are published, so a daily run accumulates what a single run cannot.

Why did my search phrase return nothing?

Threads matches topics, not sentences. Measured in one run: coffee returned 21 posts, small business marketing returned 20, and best coffee in Lisbon returned none. An empty phrase is genuinely unmatched, not blocked — shorten it to a plainer term.

How much does 1,000 posts cost?

$2.20. You are charged per post that has text; a caption-less photo arrives with its image URL and costs nothing. The first 100 posts are free while you evaluate.

Does it work on the free Apify plan?

Yes, with no reduced mode, no locked fields and no smaller row. Apify's free plan includes $5 of monthly credit, and the 100-post free trial covers four or five hashtags.

Can I get follower counts for the authors?

No. The tag page does not carry them, and fetching every author's profile to add one column would multiply the cost of a run several times over. Take the userUrl column into a profile scraper if you need them.

No — Threads signs them and they expire. Download what you need soon after the run. The postUrl stays valid indefinitely.

The same post appears under two of my hashtags. Am I billed twice?

No. It is stored once and charged once, with query showing which input found it first.

Other scrapers we maintain

Same engine, same pricing model, same promise: flat rows, stated limits, and no charge for a row that came back empty.

Google Maps Contact ScraperLocal businesses by category and city — phone, website, split address and opening hours.
Local Business Phone ScraperThe same job from directory sources, with Better Business Bureau accreditation on the row.
YouTube Influencer ScraperCreators by niche, with the website and socials they publish and a subscriber filter.
Telegram Channel Messages ScraperPosts from public channels — text, views, reactions and media links, no account needed.
RedNote Xiaohongshu Profile ScraperPublic RedNote creator profiles in bulk — followers, bio, IP location and their notes.
ATS Jobs ScraperOpen roles straight from company career pages on Greenhouse, Lever, Ashby and Workday.