TwitterAPIs Docs
API ReferenceFollower Graph

Followers You Know API

Return the followers of the account named by user_id that the account behind your registered session also follows: the mutual-connection overlap from your perspective. Returns full user objects, cursor-paginated. Requires a registered session and a numeric user_id. Cost: $0.0008 per call.

GET user/followers_you_know returns the followers of a target account, identified by user_id, that the authenticated caller's own account also follows. It surfaces the mutual-connection overlap between the caller and the target, returning full user objects with cursor-based pagination via next_cursor and has_more.

GET
/user/followers_you_know

Authorization

bearerAuth
AuthorizationBearer <token>

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

In: header

Query Parameters

user_id*string

Numeric ID of the target account to compute shared followers against.

count?integer

Items per page. Defaults to 20; documented cap 100. NOTE: X returns this list in fixed chunks, so a small count may still return up to a full page (~100). Treat count as an upper-bound hint, not an exact limit; paginate with the cursor for more.

cursor?string

Pagination cursor from a previous response's next_cursor.

fields?string

Comma-separated list of dotted field paths to keep in the response (one parameter, never repeated), applied to every object in the returned lists and to nested objects (for example fields=id,text,author.username; the list's own name may prefix a path, fields=tweets.id). A path prefix that lands on an array applies to each element (media.media_url_https). Pagination and envelope keys (next_cursor, cursor, has_more, count, partial, error, message, reason) are always kept. Unknown paths are ignored; up to 50 paths of up to 6 segments. Projection never changes status codes or billing, and applies to data reads only: account, feedback, session status, monitor (other than deliveries), webhook and stream-compat reads return their bodies unchanged.

compact?string

Set to 1 (or true) to apply the built-in compact preset: ids, url, text, created_at, lang, the engagement counts, the is_retweet/is_reply/is_quote flags, conversation ids, the author's id/username/name/followers_count/verification, and the quoted or retweeted tweet's id/url/author username. The preset trims what it recognises and leaves alone what it would empty, so it never turns a body into {}. Combine with fields to add paths on top of the preset. Typically cuts a tweet page by 70 to 90 percent for LLM tool callers.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/user/followers_you_know?user_id=44196397&fields=id%2Ctext%2Ccreated_at%2Cauthor.username&compact=1"
{  "count": 1,  "next_cursor": "1353384573435056128|2071116068906074107",  "users": [    {      "id": "1353384573435056128",      "username": "cryptorover",      "name": "Crypto Rover",      "description": "#Bitcoin Crypto YouTuber",      "followers_count": 1596989,      "following_count": 555,      "verified": true,      "tweet_count": 70185,      "location": "Bitcoin",      "created_at": "Sun Jan 24 16:50:08 +0000 2021",      "profile_image_url": "https://pbs.twimg.com/profile_images/1891433835675475969/J-TloTb6_normal.png"    }  ]}
{  "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": "forbidden",  "message": "X refused this resource for the acting account: on a read, the account is not a participant in the DM thread, the target is protected or has blocked it, or the session was attestation-blocked for calling from a datacenter or rotating IP; on a write, the account is not authorized for the action or has no logged-in session. The credentials are still valid, so do not re-register."}
{  "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

When to use

Use this endpoint when you need the intersection of a target account's followers with the accounts your own registered session follows, for example to show "people you both follow" on a profile. Reach for the plain Followers or Following endpoints instead when you need a target account's full follower or following list with no filtering against your own session.

Notes

  • Needs a registered session for the account you are reading (POST /customer/session). This endpoint does not accept per-call inline credentials: x-auth-token and x-ct0 headers are ignored here. Returns 409 session_required if no session is registered, 401 session_dead when the session has expired.
  • Like the other follower-graph endpoints, next_cursor can stay non-null on the final page; stop when the users array is empty.

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

How is this different from the regular Followers or Following endpoints in the Follower Graph category?

Followers or Following returns every follower or followed account of a single user with no filtering. This endpoint intersects two sets: the followers of user_id and the accounts your registered session follows. Use it only when you need the overlap, not the full follower list.

How do I know if there are more results, and what does each page cost?

Check has_more in the response; if true, pass the value from next_cursor as the cursor parameter on your next request. Each call costs $0.0008 regardless of how many users are returned, and count (default 20) controls page size, so fewer, larger pages reduce total cost for a full walk.

Was this page helpful?