Threads API alternative: posts, profiles and keyword search as JSON

You can read public Threads data with five REST calls: one post by URL, a user profile by handle, the recent posts of a user, a keyword search of posts and a search for users. Every call returns JSON and only needs one API key header, so there is no access token to request, refresh or keep alive. You pay per successful call instead of a monthly tier.

Buy credits

Use cases

Endpoints and cost

EndpointWhat it returnsCredits/callUSD/call (Freelance plan)
/v1/threads/postPost1$0.0017
/v1/threads/userProfile1$0.0017
/v1/threads/searchSearch by Keyword1$0.0017
/v1/threads/search_usersSearch Users1$0.0017
/v1/threads/user_postsPosts1$0.0017

Endpoint details

/v1/threads/post

Post 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.

ParameterTypeRequiredDescription
urlstringyesThe URL of the post to get
trimbooleannoSet to true for a trimmed down version of the response
cache_max_agestringnoIf we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp).

Sample response (trimmed):

{
 "post": {
  "id": "3656367813102434565_63055343223",
  "pk": "3656367813102434565",
  "caption": {
   "text": "Spoiler alert: We're testing a way for you to hide spoilers in your Threads posts.",
   "pk": "17978979272714446",
   "has_translation": null
  },
  "code": "DK-BydcJHkF",
  "like_count": 96439,
  "taken_at": 1750093031,
  "user": {
   "pk": "63055343223",
   "friendship_status": null,
   "profile_pic_url": "https://scontent-hou1-1.cdninstagram.com/v/t51.2885-19/452737457_1313286386312102_744138929735022550_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_ht=scontent-hou1-1.cd...",
   "username": "zuck",
   "id": "63055343223",
   "full_name": "Mark Zuckerberg",
   "transparency_label": null,
   "transparency_product": null,
   "transparency_product_enabled": false,
   "is_verified": true,
   "text_post_app_is_private": false,
   "has_onboarded_to_text_post_app": true
  }
 },
 "comments": [
  {
   "id": "3658534918151603488_74973899807",
   "pk": "3658534918151603488",
   "caption": {
    "text": "意味分からない",
    "pk": "18306832783208063",
    "has_translation": true
   },
   "code": "DLFuh_SygUg",
   "like_count": 0,
   "taken_at": 1750351370,
   "user": {
    "pk": "74973899807",
    "friendship_status": null,
    "profile_pic_url": "https://scontent-hou1-1.cdninstagram.com/v/t51.2885-19/491446152_17850244230449803_8764028655689505242_n.jpg?stp=dst-jpg_s150x150_tt6&_nc_ht=sconten

/v1/threads/user

Profile 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.

ParameterTypeRequiredDescription
handlestringyesThreads username
cache_max_agestringnoIf we have a response in the cache that is this many days old or newer, return the cached response (0 credits, with "cached": true and a "cached_at" timestamp).

/v1/threads/search

Search by Keyword 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.

ParameterTypeRequiredDescription
querystringyesKeyword to search for
start_datestringnoStart date to search for
end_datestringnoEnd date to search for
trimbooleannoSet to true for a trimmed down version of the response

/v1/threads/search_users

Search Users 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.

ParameterTypeRequiredDescription
querystringyesUsername to search for

/v1/threads/user_posts

Posts 1,000 calls = 1,000 credits = $1.67 on the Freelance plan.

ParameterTypeRequiredDescription
handlestringyesThreads username
trimbooleannoSet to true for a trimmed down version of the response

Example: curl

curl -H "X-Scapi-Key: $SCAPI_KEY" "https://api.scrapall.bipsport.com/scapi/v1/threads/post"

Example: Python

import os, requests
r = requests.get("https://api.scrapall.bipsport.com/scapi/v1/threads/post",
    headers={"X-Scapi-Key": os.environ["SCAPI_KEY"]})
print(r.json())

FAQ

Do I need a Threads API access token?

No. You only send your Scrapall API key in the request header. There is no app review, no OAuth flow and no token to refresh, and only public posts and profiles are read.

Can I search Threads posts by keyword?

Yes. The search endpoint takes a keyword and returns matching public posts as JSON. A separate endpoint searches for users, so you can build lists of accounts around a topic.

Can I get the recent posts of a user?

Yes. Call the user posts endpoint with the public handle to get the recent posts of that account as JSON. Use the profile endpoint with the same handle to read the public profile details.

Which fields come back for a Threads post?

The post endpoint takes the public post URL and returns the caption together with like_count, view_counts and reshare_count. Keyword search returns up to 10 posts per call with caption text, like count and reshare count, and you can limit results with start_date and end_date.

How is it billed?

Each successful call is billed from your credit balance, with no monthly tier. The exact cost per endpoint is shown in the cost table on this page and comes from the live price list.

How do I pay and get my API key?

Open the Buy page, pick the Freelance plan and pay in USDT on TRC20 or ERC20. The key is shown once, right after the payment is confirmed on-chain.

How many credits does one call use?

The cost table on this page lists credits per call for each endpoint. The Freelance plan is $45 for 27,000 credits per 30 days.

Get an API key and credits

Full reference: all threads endpoints.