ThreadsExplainer

Threads API: what Meta's API returns and how to get any public profile as JSON

Meta's Threads API reads your own account. On standard access, profile lookup covers only some official Meta accounts. Any public profile: 1 credit.

5 min read

Short answer

  • Meta's official Threads API publishes and reads for the account that authorized your app. Its keyword search covers only your own posts until Meta approves the permission.
  • On standard access, Meta's profile lookup works only for some official Meta accounts, such as @threads. Each user gets 1,000 lookups per rolling 24 hours.
  • ToolzerHub returns public Threads profiles, posts and search results as JSON with one API key. 1 credit per call, $0.99 to $1.90 per 1,000 profiles, 100 free credits a month.
On this page

You want Threads data from accounts you do not run: a competitor's follower count, a creator's latest posts, what people write about a keyword. Meta publishes an official Threads API. Most of it works only on the account that logged in to your app.

What the official API gives you

The Threads API is built for publishing. Meta's overview says you may use it "to enable people to create and publish content on a person's behalf on Threads". With that person's access token you can post, reply, moderate replies, read mentions and read insights.

Reading is tied to the same account. The profile reference says: "You may only fetch the profile of the app-scoped user." The posts endpoint lists "all threads created by the app-scoped user."

Since July 2025 Meta also has a Profile Discovery API for other accounts. GET /profile_lookup returns a public profile's name, bio, follower count, verified flag and 7-day likes, reposts and views counts. GET /profile_posts returns a paginated list of that profile's posts. Both need the threads_profile_discovery permission.

Keyword search (GET /keyword_search) can cover public posts too. It sorts by TOP or RECENT, filters by date, media type and author, and returns up to 100 results per call. It needs threads_keyword_search.

Where it stops

Profile Discovery is real but gated. Meta's profiles page says: "With standard access, only some of the official Meta accounts can be looked up." The page says these "include" @meta, @threads, @instagram and @facebook.

The Threads pages do not say how to look up anyone else. Meta's general access-levels page says Advanced Access "must be approved on an individual permission and feature basis through the App Review process", and Business Verification is required. The endpoint also lists two limits:

  • "Only returns public profiles with at least 100 followers."
  • "A user can send a maximum of 1,000 requests within a rolling 24-hour period."

Keyword search has the same shape. Until threads_keyword_search is approved, "the search will be performed only on posts owned by the authenticated user." After approval, public posts are searchable, up to 2,200 queries per user per rolling 24 hours. The keyword search guide lists every parameter and has a script that exports results with like counts. To read public profiles and posts without any API, see how to scrape Threads with Python.

Get any public profile in one request

ToolzerHub returns public Threads profiles, posts and search results as JSON. You need one API key. There is no Meta developer app, no OAuth flow and no Threads login.

bash
curl "https://api.toolzerhub.com/v1/threads/profile?username=threads" \
  -H "x-api-key: $TOOLZERHUB_API_KEY"

Static API example, run 2026-10-07. The call returned one profile, trimmed here to five fields.

json
{
  "data": {
    "username": "threads",
    "full_name": "Threads",
    "id": "63082166531",
    "follower_count": 6962731,
    "is_verified": true
  }
}

We used @threads because Meta lists it among the accounts its standard access can look up, so you can compare both responses. The same call takes any public username.

  • username accepts a handle, an @handle or a full profile URL.
  • id is the Threads user ID. Pass it as user_id to GET /v1/threads/profile/posts, then send each response's page_info.end_cursor as end_cursor for the next page.
  • The Threads ID is not the account's Instagram ID. An Instagram ID returns an empty result.

What it costs

  • Every Threads call costs 1 credit. A profile call returns one profile, so 1,000 profiles is 1,000 credits.
  • Plans start at $29 a month for 20,000 credits ($1.45 per 1,000) and go down to $0.99 per 1,000 on Business; one-time packs start at $19 for 10,000 credits and never expire. That is $0.99 to $1.90 per 1,000 profiles.
  • Free accounts get 100 credits a month, which is 100 profile lookups for testing.

Next step

Read the Threads API page for all four endpoints and their limits, or get a free API key and run the request above.

Use Meta's API to publish, moderate replies or read insights for accounts you run. We do none of that, and Meta's docs list quotas, not a price. If your app has advanced access, Meta's lookup adds 7-day likes, reposts and views counts, and its keyword search returns up to 100 results per call with date and author filters. Our search returns one page of about 20 posts.

Not affiliated with Meta Platforms, Inc. or Threads.

Details

Official API, from Meta's docs:

  • Rate limit: "Calls within 24 hours = 4800 * Number of Impressions", with impressions counted as at least 10.
  • Publishing: 250 API-published posts and 1,000 replies per profile per 24-hour moving period.
  • Profile Discovery launched on 2025-07-14. Its follower minimum dropped from 1,000 to 100 on 2025-11-20.
  • Keyword search returns an empty array for keywords Meta has "deemed sensitive or offensive".
  • oEmbed returns embed HTML for one public post in an html field, up to 1,000 requests an hour.

ToolzerHub endpoints under /v1/threads, 1 credit each:

  • profile: a public profile by username, @handle or URL.
  • profile/posts: a profile's posts by user_id, paged with end_cursor.
  • post: one post by URL. include_replies=true adds its public replies.
  • search: posts (serp_type=default) or tag results (serp_type=tags) for q. One page with no cursor: about 20 posts per query when we measured it on 2026-08-19. It is not an archive.
  • Private accounts and removed posts are not available.

Parameters and errors for each endpoint are in the Threads reference.

Sources

Get this data from your own code

The Threads API returns it as JSON with one x-api-key header. 100 free credits monthly.