How to Scrape Threads Data: Official API, Limits and Python
To scrape Threads data, start with Meta's Threads API: it is free, but searching other people's public posts needs the threads_keyword_search permission through App Review, and looking up other profiles needs threads_profile_discovery, which returns only public profiles with at least 100 followers. Unofficial clients have not lasted, so for profiles, user posts and keyword search without App Review, a hosted API is the practical route.
Threads has an official API, but it was built for publishing and for reading your own account. Reading anyone else needs two permissions that go through Meta's App Review. This guide shows exactly what each permission allows, what the limits mean in practice, and the other routes when you can't wait for review. For vendor comparisons, see best Threads scrapers.
What Threads data is public
| Object | Fields |
|---|---|
| Profile | Username, name, bio, avatar, follower count, verified badge |
| Post | Text, time, link, media, likes, replies, reposts, quotes, whether it is a reply or quote |
| Search | Public posts matching a keyword, ranked top or recent |
The official Threads API: two permissions decide everything
| Permission | Before App Review | After App Review | Limit |
|---|---|---|---|
threads_keyword_search | Searches only posts owned by the signed-in user | Searches public posts | 2,200 queries per user per rolling 24 hours, across all apps |
threads_profile_discovery | Looks up only some official Meta accounts such as @meta and @threads | Looks up public profiles with at least 100 followers | 1,000 requests per user per rolling 24 hours |
Both also need threads_basic. Sources: keyword search and profile discovery docs.
A keyword search after approval:
curl "https://graph.threads.com/v1.0/keyword_search?q=espresso&search_type=RECENT&fields=id,text,media_type,permalink,timestamp,username,has_replies,is_quote_post,is_reply&limit=100&access_token=YOUR_TOKEN"
search_typeisTOP(default) orRECENT.limitdefaults to 25 and tops out at 100.sincecan be no earlier than 1688540400, which is 5 July 2023, the week Threads launched.- Every query counts for 24 hours, even repeats of the same keyword. Queries with no results do not count.
A profile lookup returns follower_count plus likes_count, quotes_count, reposts_count and views_count for the past 7 days. Note the singular follower_count; Instagram's Graph API uses followers_count. The docs list no endpoint for reading another profile's full post history.
What the limits mean in practice
Say you monitor 40 brand keywords with RECENT search every hour. That is 40 x 24 = 960 queries a day, under the 2,200 cap. Every 15 minutes it becomes 3,840, over the cap. Because the cap is per user across all apps, a second tool on the same account eats into your budget too. Rules of thumb:
- Poll each keyword no more often than its volume justifies. Low-volume keywords can run daily.
- Use
sinceset to your last run so each page holds only new posts. - Dedupe by post
idacross keywords; one post often matches several.
App Review needs a working app that uses the permission, so budget time for it. The steps are in Threads API: official vs alternatives and Is the Threads API free?
Why unofficial Threads scrapers did not last
The best-known unofficial client, junhoyeo/threads-api (about 1,600 stars), was archived on 8 September 2023. Its README says development was "halted and discontinued due to communication received from Meta Platforms, Inc." yt-dlp's supported sites list has no Threads extractor. Do-it-yourself scripts that drive a headless browser and read the page's embedded JSON exist, but they break when Meta changes the page, and Meta's terms forbid collecting data "using automated means (without our prior permission)".
This is not legal advice. Terms and law change, and the answer depends on where you are and what you do with the data. Our guide to the main web scraping cases has the background.
The research route
Researchers at qualifying non-profit or academic organizations can use the Meta Content Library, which has no fees. Threads data is in the web tool only and covers posts from public profiles with 100 or more followers.
A hosted API: profiles, posts and search without review
This script runs a daily keyword monitor and appends new posts to a JSON Lines file. Responses are stored whole, so you can pick fields later:
import json, datetime, requests
KEY = "YOUR_KEY"
KEYWORDS = ["espresso machine", "pour over"]
today = datetime.date.today().isoformat()
with open("threads_posts.jsonl", "a", encoding="utf-8") as out:
for q in KEYWORDS:
r = requests.get("https://scrapeio.com/v1/threads/search",
params={"query": q, "start_date": today},
headers={"x-api-key": KEY}, timeout=60).json()
if r.get("success"):
out.write(json.dumps({"keyword": q, "pulled": today, "data": r["data"]}) + "\n")
Two keywords a day is 60 calls a month, about $0.11 at $1.88 per 1,000 credits.
Fields worth keeping per Threads post
- Post id and permalink, stored as text.
- Username of the author, and their follower count on the day you pulled the post.
- Timestamp in UTC, plus your pull time.
- Whether it is a reply or a quote, so you can count original posts separately.
- Likes, replies, reposts and quotes, read at the same post age for every post you compare.
- The keyword that matched, if it came from search, so you can measure each keyword's volume.
Which route fits
| You need | Use |
|---|---|
| Your own account's posts and insights | Official API, no review needed |
| Keyword monitoring at modest volume, long term | Official API after App Review |
| Profiles under 100 followers, or a profile's post history | Hosted API |
| A study across Meta's apps | Meta Content Library, if you qualify |
Doing it with ScrapeIO
ScrapeIO's Threads profile API, Threads user posts API, Threads search API and Threads post API cost 1 credit a call and need no Meta app. See the Threads platform page and the Threads MCP server.
FAQ
Does Threads have an API?
Yes. Meta's Threads API publishes posts and reads your own account. Searching other users' posts and looking up other profiles need permissions approved in App Review.
Can I scrape Threads without logging in?
The official API always needs a signed-in user's token. A hosted API needs only its own key.
Is it legal to scrape Threads?
Meta's terms forbid automated collection without permission. The legal answer depends on your country, your method and your use, so get advice for commercial work.
How many searches does the Threads API allow?
2,200 keyword queries per user in a rolling 24 hours, shared across all apps, with up to 100 posts per query.
Why does the Threads API not find a profile?
Before approval it only finds some official Meta accounts. After approval it returns only public profiles with at least 100 followers, and the username must match exactly.
Sources
Checked on 9 November 2026 from each vendor's own pages. Prices and limits change; follow the links before you decide.
- https://developers.facebook.com/docs/threads/keyword-search
- https://developers.facebook.com/documentation/threads/threads-profiles.md
- https://github.com/junhoyeo/threads-api
- https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md
- https://transparency.meta.com/researchtools/meta-content-library/
- https://www.facebook.com/terms.php
100 free credits, no card. Credits never expire.
Get API key