Threads
GET /v1/threads/search-users

Threads Search Users API

Threads user discovery from keyword search — id, handle, avatar, verified. Flat 1 credit.

1 credit per request
TL;DR
Threads user discovery from keyword search — id, handle, avatar, verified. Flat 1 credit. The Threads Search Users API (Threads) is a single authenticated GET request to /v1/threads/search-users that responds with clean JSON and costs 1 credit. Pass cache=true for a free 24h cache hit; default is always fresh. Start with 100 free credits — no credit card.

What is the Threads Search Users API?

Pass a keyword and get distinct Threads authors who appear in Meta's keyword post search as clean JSON: id (pk when embedded), username, displayName, url, verified, profileImage, and followers (usually null on this surface — call Threads Profile for counts). Flat 1 credit (parity with TikTok search-users and ScrapeCreators). This is not a semantic people-search: users are unique authors of posts that matched the keyword on Top SERP, so handles may not contain the query. Pass cache=true for the 24h shared cache (0 credits on hit).

What you get

  • Distinct authors from keyword post search
  • id + username + displayName + url + verified
  • profileImage when Meta embeds it; followers keyed (often null)
  • Flat 1 credit

Platform limits

Honest ceilings from the upstream platform surface — not Captapi bugs. Unexpected truncation here is usually the platform, not us.

  • Not a Users-tab GraphQL people search — authors are derived from post SERP hits. Handle/bio may not mention your query.
  • followers is usually null here; use /threads/profile for follower counts and bioLinks.

Try it

Open in Playground

Fill in the parameters below and copy a ready-to-run request, or open the live Playground to run it against your account (no API key paste).

Parameters

Sign in to run live
curl "https://api.captapi.com/v1/threads/search-users?q=tech" \
  -H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."

Edit the parameters and the code updates instantly. Switch languages and hit copy.

Example response

{
  "success": true,
  "data": {
    "query": "tech",
    "totalReturned": 5,
    "users": [
      {
        "id": "63419899106",
        "username": "3dfreelancing",
        "displayName": "DesignX3D",
        "url": "https://www.threads.net/@3dfreelancing",
        "verified": false,
        "profileImage": "https://scontent-fml20-1.cdninstagram.com/v/t51.2885-19/358048371_611813460748673_7424252667534087950_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-fml20-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2gEuCNzOQBL3WLzHjDVRIUD7nfx3k_HdX2EBkqaiTQ4PmTXyR_B_-1b8j4rN_XouC9U&_nc_ohc=ClRgc8VdrWUQ7kNvwGYy0bX&_nc_gid=BMY7SQQ5QtTZglymKPVK5A&edm=APs17CUBAAAA&ccb=7-5&oh=00_AQFt9IQAYLyjaUWIxFVZ1Soax9syl38lEYeCSesfZ69jGQ&oe=6A77DF17&_nc_sid=10d13b",
        "followers": null
      },
      {
        "id": "69067321051",
        "username": "sgt.edsmia",
        "displayName": "Eds Mia",
        "url": "https://www.threads.net/@sgt.edsmia",
        "verified": false,
        "profileImage": "https://scontent-fml20-1.cdninstagram.com/v/t51.82787-19/616077711_17908752390297052_8918972735608639981_n.jpg?stp=dst-jpg_s150x150_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDIyLmMyIn0&_nc_ht=scontent-fml20-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gEuCNzOQBL3WLzHjDVRIUD7nfx3k_HdX2EBkqaiTQ4PmTXyR_B_-1b8j4rN_XouC9U&_nc_ohc=PVTn-IDWAVsQ7kNvwFHmDGu&_nc_gid=BMY7SQQ5QtTZglymKPVK5A&edm=APs17CUBAAAA&ccb=7-5&oh=00_AQFFSvfmo4CklK7KwP_B_B-6LlLzoy9Vf5bVT9IRy_MtTQ&oe=6A77D171&_nc_sid=10d13b",
        "followers": null
      }
    ]
  }
}

Billing metadata is returned in response headers: X-Captapi-Credits (credits charged), X-Captapi-Cache (hit or miss), and X-Captapi-Source. Failed requests (4xx/5xx) are never charged. See the full list of error codes in the error reference.

Response structure

A successful call returns success, cached, creditsUsed, and a data object with the following fields:

Top-level fields

  • queryThe search query you sent.
  • totalReturnedNumber of items returned in this response.

Users

Each item in users contains:

  • idMeta user pk when embedded on the search hydrate; null if the author blob omits it.
  • usernameAccount username / handle.
  • displayNameDisplay name of the account. Canonical across profile endpoints (prefer over name).
  • urlCanonical URL of the item.
  • verifiedtrue/false when Meta embeds the badge flag; null when omitted (unknown).
  • profileImageAvatar URL when Meta embeds it on the search-post author card.
  • followersFollower count when present on the author blob — usually null on search; use Threads Profile for counts.

Parameters

NameTypeRequiredDescription
qstringYesKeyword to find Threads users / creators (min 2 characters).
limitintegerNoMax items to return (default 20, max 100). Flat 1 credit per call.
cachebooleanNoSet true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh. Envelope includes cached + cachedAt on hits.

Authentication: send your key as Authorization: Bearer capt_live_.... A typical call costs 1 credit. Pass cache=true for a free 24h cache hit; default is always fresh.

Using an AI agent? This endpoint is the MCP tool threads_search_users via @captapi/mcp. Set it up →

How it works

  1. 1. Sign up — get 100 free credits, no card required.
  2. 2. Create a key from your dashboard.
  3. 3. Send one request to /v1/threads/search-users and parse the JSON response.

Use cases

Trend Discovery

Find trending content by keyword or hashtag.

Content Sourcing

Build feeds and playlists programmatically.

Monitoring

Track topics, brands, and competitors.

Research

Sample large sets of content for analysis.

Frequently asked questions

What does the Threads Search Users API do?+

The Threads Search Users API lets you search and return matching results from a public Threads query using one GET request to /v1/threads/search-users. It returns clean JSON — no OAuth or infrastructure setup required.

How many credits does the Threads Search Users API cost?+

Each successful call costs 1 credit. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Hits include cached + cachedAt. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.

Do I need a Threads API key or OAuth?+

No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.

Why is this 1 credit when older docs said ~14?+

Flat 1 credit — parity with TikTok search-users and ScrapeCreators Threads search/users. The old ~14 figure was a per-result extended-path rate at default limit 20; success is always billed at the published flat price now.

Why don't the usernames match my query?+

This is not a semantic people-search. Users are distinct authors of posts that matched the keyword on Meta's Top SERP — the handle or bio may not contain the query. For follower counts and bio, call Threads Profile with the returned url.

Why is followers null?+

Search post authors rarely embed follower_count. The key stays present as null for a stable parser — use /v1/threads/profile for counts.

Is the Threads Search Users API suitable for production use?+

Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Hits include cached + cachedAt. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.

More Threads APIs

Ready to use the Threads Search Users API?

Sign up, grab your key, and make your first call in 60 seconds.