Twitter User About API | Extended Profile Data
Read a profile's full About object: identity, bio, location, linked website, avatar, verification and identity-verification flags, professional account type and categories, follower and following counts, the account creation date, and X's "About this account" transparency panel (account country, how the account was created, and username-change history). Cost: $0.0008 per call.
User About reads a profile's extended About object: identity, bio, location, linked website, avatar, verification and identity-verification flags, the professional account type and categories, follower and following counts, the account creation date, and X's "About this account" transparency panel (account country, how the account was created, and username-change history). Use it when you need the richer business, verification, and transparency metadata beyond the standard profile. One $0.0008 read.
Authorization
bearerAuth Pass your API key as a bearer token on every request: Authorization: Bearer <API_KEY>.
In: header
Query Parameters
Handle without the leading @. Required: unlike the other user reads, this endpoint cannot be called with user_id alone.
Numeric user ID. Not currently a substitute for username on this endpoint: a user_id-only request fails upstream. Resolve the ID to a handle with GET /user/info_by_id and pass username.
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.
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/user_about?username=stripe&user_id=44196397&fields=id%2Ctext%2Ccreated_at%2Cauthor.username&compact=1"{ "about": { "id": "13334762", "username": "stripe", "name": "Stripe", "description": "Payments infrastructure for the internet.", "location": "San Francisco, CA", "url": "https://stripe.com", "is_blue_verified": true, "verified": true, "verified_type": "Business", "professional_type": "Business", "professional_categories": [ "Software Company" ], "followers_count": 312000, "following_count": 412, "created_at": "Tue Feb 12 18:02:11 +0000 2008", "profile_image_url": "https://pbs.twimg.com/profile_images/1841086032213626880/example_normal.jpg", "is_identity_verified": false, "verified_since": null, "account_based_in": "United States", "created_via": "United States App Store", "username_changes": { "count": 0, "last_changed_at": null }, "created_country_accurate": true, "location_accurate": true, "learn_more_url": "https://help.twitter.com/managing-your-account/about-twitter-verified-accounts" }}{ "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.", "top_up_url": "https://www.twitterapis.com/dashboard/buy-credits?utm_source=api&utm_medium=402"}{ "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
| Unit | Price |
|---|---|
| Per call | $0.0008 |
| Per 1,000 calls | $0.80 |
When to use
Use it for richer profile metadata, for example reading a brand account's professional category and linked website.
Related endpoints
- User Info by Username: Fetch a full profile by @handle.
- User Info by ID: Fetch a full profile by numeric user ID.
- User Affiliates: List the affiliated sub-accounts of an organization profile.
FAQ
How is User About different from User Info?
User About adds extended fields: linked website, professional account type and categories, and verification flags like verified_type, beyond the standard profile.
Does it show whether an account is a business?
Yes. It returns professional_type and professional_categories, plus verified_type, which distinguish business and professional accounts.
What identifier does it take?
Pass the username (the handle without the leading @). It returns the full About object for that profile.
User Info by ID GET
Resolve a numeric user ID into the full user object. Use this when you already have the stable ID (handles can change, IDs do not). Cost: $0.0008 per call.
User Media GET
Fetch the media tweets posted by a user, cursor-paginated. Returns the tweet objects from the account's Media tab, with media URLs included under extended_entities.media. The tab occasionally surfaces a link-or-card tweet with no attachment, so guard on extended_entities before reading it. Cost: $0.0008 per call.