TwitterAPIs Docs
API ReferenceSearch

Twitter User Search API | Find Accounts by Keyword

Search the user directory by keyword. Matches against display name, handle, and bio. Useful for discovery, lead lists, and resolving partial handles into full profiles. Cost: $0.0008 per call.

User Search finds Twitter/X accounts by keyword, matching against display name, handle, and bio. Results are cursor-paginated full user objects, useful for discovery, lead lists, and resolving a partial handle into a full profile. Each call costs $0.0008, the standard read rate, with no OAuth required.

GET
/user/search

Authorization

bearerAuth
AuthorizationBearer <token>

Pass your API key as a bearer token on every request: Authorization: Bearer <API_KEY>.

In: header

Query Parameters

query*string

Keyword or partial handle to search for.

cursor?string

Pagination cursor from a previous response.

count?integer

Max items to return for this page. Default 20; clamped to 1-100.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/user/search?query=machine+learning&count=20"
{  "users": [    {      "id": "44196397",      "username": "elonmusk",      "name": "Elon Musk",      "description": "",      "followers_count": 211000000,      "verified": true    }  ],  "next_cursor": "DAABCgABF..."}
{  "error": "bad_request",  "message": "Missing or malformed parameter. Fix the request before retrying."}
{  "error": "unauthorized",  "message": "The API key is missing, malformed, or revoked. Check the Authorization header."}
{  "error": "insufficient_credits",  "message": "Your balance is exhausted. Top up your credits to continue."}
{  "error": "not_found",  "message": "The resource does not exist, for example a deleted tweet or a private account."}
{  "error": "rate_limited",  "message": "Too many requests. Back off and retry with exponential backoff."}
{  "error": "server_error",  "message": "Something failed on our side. Retry with backoff; if it persists, contact support."}

Pricing

UnitPrice
Per call$0.0008
Per 1,000 calls$0.80
Per 1,000 records (~20 per call)~$0.04

Each page of results is one $0.0008 read, so a deep discovery crawl spends per page. Page only as far as your list needs.

When to use

Use it for account discovery or lead building, for example finding profiles whose name or bio mentions machine learning.

Pagination

This endpoint is cursor-paginated and returns roughly 20 records per call. Pass the next_cursor from each response back as the cursor parameter to read the next page. Stop when the records array comes back empty: follower-graph endpoints return a non-null cursor even on the final page, so the empty array is the only reliable stop signal. See Pagination for the full loop.

FAQ

What fields does User Search match against?

It matches your keyword against the display name, the @handle, and the profile bio, then returns full user objects for each match.

Can I resolve a partial handle to a full profile?

Yes. Search the partial handle, then pass the resolved username to User Info by Username for the complete profile object.

How are results paginated?

Results come back cursor-paginated. Send the next_cursor from a response as the cursor parameter to fetch the next page.