X · Handle
User Tweets
Send a handle, get their posts. Costs 3 credits a post
01
Request
POST /api/x/tweets/handle with your bearer API key.
handle takes the handle however you have it. nasa, @nasa and https://x.com/nasa all name the same account, and X’s own pages — home, search, i — are refused rather than fetched and parsed as somebody’s timeline.
| handle | nasa, @nasa, or a profile link |
| pagination_token | the previous response’s token; leave out for the first page |
Three credits per returned post. Each call fetches one page. If the wallet cannot cover that page, the call fails and its charge is refunded. X decides how many posts are returned.
02
Response sample
Response example for handle: netflix
▸ ▾ profile {} — profile fields beside data.posts
{
"id": "16573941",
"name": "Netflix",
"handle": "@netflix",
"verified": true,
"blue_verified": true,
"bio": "deborah & rashida & shaquille & amir & hazel & kojo",
"location": "California, USA",
"website": "http://netflix.com/netflixandchills",
"joined": "2008-10-03T04:16:17Z",
"followers": 29280761,
"following": 2241,
"post_count": 67849,
"media_count": 26218,
"avatar": "https://pbs.twimg.com/profile_images/1996301804053868544/Xrwvbe1q_normal.jpg",
"banner": "https://pbs.twimg.com/profile_banners/16573941/1790866557"
}▸ ▾ posts [] — one post from the captured JSON page
[
{
"id": "2105679740917129669",
"url": "https://x.com/netflix/status/2105679740917129669",
"posted_at": "2026-10-01T15:22:26Z",
"text": "RT @yugyienz: BOW DOWN TO MOTHER",
"lang": "en",
"author_name": "Netflix",
"author_handle": "@netflix",
"author_url": "https://x.com/netflix",
"author_avatar": "https://pbs.twimg.com/profile_images/1996301804053868544/Xrwvbe1q_normal.jpg",
"author_verified": true,
"reply_count": 0,
"reposts": 1,
"likes": 0,
"quotes": 0,
"bookmarks": 0,
"views": 12588,
"conversation_id": "2105679740917129669",
"in_reply_to_id": null,
"in_reply_to_user_id": null,
"photos": [],
"videos": [],
"quoted_text": null,
"possibly_sensitive": null,
"context": null,
"quoted_post_id": null,
"reposted_post_id": "2105675866533724508",
"hashtags": [],
"mentions": [
{
"id_str": "995924951357014017",
"indices": [
3,
12
],
"name": "laves 🦀",
"screen_name": "yugyienz"
}
],
"links": null
}
]▸ ▾ pagination {} — pass the token from your own response unchanged; this example is abbreviated
{
"has_next_page": true,
"pagination_token": "…"
}03
Fields
Profile fields sit beside data.posts. Missing values are null; counts are numbers and verification is boolean. Text keeps emoji. Send data.pagination.pagination_token unchanged with the same handle to fetch another page.
profile {}
posts []
pagination {}