How to get Twitter / X profile
GET request to /v1/twitter/profile with your input. You get clean JSON back in seconds for 1 credit per call — no OAuth, scraping or platform SDKs. X profile: verified + blue/legacy/identity, displayName, avatar/banner, tipjar→contact{}, expanded website.How to get Twitter / X profile (step by step)
- 1
Get a free API key
Create a free Captapi account (100 credits, no card) and generate an API key from the dashboard.
- 2
Call the Twitter/X Profile API
Send an authenticated GET request to /v1/twitter/profile with your input. No OAuth, no scraping setup.
- 3
Read the JSON response
Parse the clean JSON response. Pass cache=true for a free 24h cache hit; default is always fresh.
Code example
curl "https://api.captapi.com/v1/twitter/profile?url=https%3A%2F%2Fx.com%2FNASA" \
-H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."What the response looks like
{
"success": true,
"data": {
"platform": "twitter",
"url": "https://x.com/NASA",
"id": "11348282",
"username": "NASA",
"displayName": "NASA",
"name": "NASA",
"bio": "Making the seemingly impossible, possible. ✨",
"location": "Pale Blue Dot",
"verified": true,
"isBlueVerified": true,
"isIdentityVerified": false,
"verification": {
"isBlueVerified": true,
"isIdentityVerified": false,
"verifiedType": "Government",
"reason": "This account is verified because it is a government or multilateral organization account. Learn more",
"verifiedSince": "2009-08-07T19:53:50.000Z"
},
"followers": 92239064,
"following": 119,
"fastFollowers": 0,
"normalFollowers": 92239064,
"tweetCount": 74288,
"likesCount": 16904,
"mediaCount": 28058,
"listedCount": 97014,
"pinnedTweetIds": [
"2082511887757881648"
],
"website": "http://www.nasa.gov/",
"contact": {
"links": [
"http://www.nasa.gov/"
]
},
"tipjarSettings": {
"is_enabled": false
},
"profileImage": "https://pbs.twimg.com/profile_images/1321163587679784960/0ZxKlEKB_400x400.jpg",
"bannerImage": "https://pbs.twimg.com/profile_banners/11348282/1775567134",
"profileImageShape": "Square",
"possiblySensitive": false,
"highlightedTweets": 265,
"creatorSubscriptionsCount": 0,
"businessAffiliatesCount": 89,
"createdAt": "2007-12-19T20:20:32.000Z"
}
}Billing metadata (credits charged, cache hit/miss) is returned in the X-Captapi-Credits and X-Captapi-Cache response headers.
Request parameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | Twitter/X profile URL or @handle, e.g. https://x.com/username. The URL platform must match this endpoint's platform. Do not pass cross-platform URLs, e.g. YouTube to TikTok, Instagram to Facebook, LinkedIn to X/Twitter, or Pinterest to Rumble. |
| cache | boolean | No | Set true to use the 1-hour profile cache (0 credits on hit). Default false — always fetch fresh. Prefer cacheMaxAge for 1d–30d. |
| cacheMaxAge | string | No | Max age of a cached response: 1d, 3d, 7d, 14d, or 30d. When set, enables caching with that TTL. |
Frequently asked questions
What does the Twitter/X Profile API do?
The Twitter/X Profile API lets you fetch profile or page details and audience stats from a public Twitter / X profile or page using one GET request to /v1/twitter/profile. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the Twitter/X Profile 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. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.
Do I need a Twitter / X 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 does the field list say tweetCount / profileImage / bannerImage?
It doesn't anymore. Live returns displayName, postCount, avatar, and banner. The old twins (name / tweetCount / profileImage / bannerImage / top-level isBlueVerified) are gone — the "(one release)" alias window is closed, not closing. Code against avatar / banner / postCount.
Is cache 24 hours or the "default TTL"?
cache=true uses the 1-hour profile TTL (0 credits on hit). Pass cacheMaxAge=1d|3d|7d|14d|30d for a longer window. Default is always fresh. The generic "24h cache" sentence does not apply to this endpoint.
Why is verified true when isBlueVerified is false?
verified is derived — the OR of isBlueVerified, isLegacyVerified, isIdentityVerified, and affiliate. It is not a separate Twitter field. Those four inputs are always keyed (affiliate is null when X has no highlight) so you can see which signal fired. A null bit is treated as false in the OR; it cannot hide a known badge.
Why is businessAffiliatesCount 0 on one account and null on another?
Same rule as the verification bits. Present none is 0. Omitted is null on the HTML fallback (the page does not carry the field). Guest GraphQL omits the empty business_account parent — we cannot tell "unknown" from "none" on that path, so omitted independent counts become 0. Read source + stages.graphqlStatus. Do not add null + 0; both counts are always keyed.
Are fastFollowers and profileImageShape part of the cross-platform contract?
No. The stable core is platform / id / username / url / displayName / bio / avatar / banner / followers / following / postCount / verified / createdAt. Twitter-surface extras stay at the top level (not under raw) so existing parsers keep working. They have no cross-platform twin and can change when X's guest payload changes. Do not treat profileImageShape as profile data.
Is the Twitter/X Profile 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. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.
Ready to get Twitter / X profile?
Start free with 100 credits — no credit card required.
Get your free API key