For the newest posts of 2 to 20 users, use getBatchUserTweets. For more, use createExtraction with tweet_search_extractor & targetUsernames. Omit mode for automatic maximum coverage. Pass next_cursor unchanged. Unprefixed cursors are legacy. The first page opens with the pinned tweet, flagged isPinned, unless replies are included. Rows stay newest first. x.com's Posts tab groups self-threads & hides reposts. Send retweets=exclude to drop reposts.
Request
- Base URL: https://xquik.com
- URL: https://xquik.com/api/v1/x/users/{id}/tweets
- Auth: one of:
- API key in header x-api-key
- HTTP bearer
- none
Path parameters
User ID, username with or without @, or URL-encoded profile URL, such as x.com/nasa or x.com/i/user/11348282. A number is a user ID. Writes look up a username's ID before sending. Anything else gets 400 invalid_user_id.
Query parameters
Cursor from the previous response. Existing unprefixed cursors keep legacy standard behavior. Pages can be empty before more rows. Follow next_cursor. Also read as next_cursor, next_token, pagination_token or continuation_token.
Optional legacy pagination override. Search-only filters such as keywords apply only without it.
Automatic pages accept 1-300 Tweets, standard pages 1-100. Default 20. Follow next_cursor for more pages. Its aliases are limit, count, max_results, maxItems, max_items & per_page.
Inclusive ISO bound for Tweet creation time, such as 2026-09-25T19:20:41Z. Unix seconds also work. A time without an offset is UTC.
Exclusive ISO bound for Tweet creation time. Unix seconds also work. A time without an offset is UTC.
Include reply tweets unless replies specifies another mode.
Include each reply's parent tweet as parentTweet on the reply. A reply whose parent X does not return comes without it. Search-only filters such as keywords do not apply with it.
Filter by author username.
Filter replies sent to a username.
Filter tweets mentioning a username.
Filter by language. Its alias is lang.
Start date in YYYY-MM-DD format, as a UTC day.
End date in YYYY-MM-DD format, as a UTC day, inclusive, so its own posts count.
Filter media. Its aliases are has_video & has_media.
Whole number from 0.
Minimum likes. Its aliases are minFaves, min_likes & min_faves.
Whole number from 0.
Minimum retweets threshold.
Whole number from 0.
Minimum replies threshold.
Whole number from 0.
Minimum quote count threshold.
Whole number from 0.
Minimum view count threshold.
Whole number from 0.
Minimum bookmark count threshold.
Whole number from 0.
Maximum likes threshold. maxLikes & max_likes also work.
Whole number from 0.
Maximum retweets threshold.
Whole number from 0.
Maximum replies threshold.
Whole number from 0.
Maximum quotes threshold.
Only return tweets from Blue-verified authors.
Keep only Tweets with this card type, such as poll2choice_text_only. Tweet search checks each Tweet's card.
X search no longer supports source. A Tweet search with it answers 424 & charges nothing.
X search no longer supports excludeSource. A Tweet search with it answers 424 & charges nothing.
X search no longer supports geocode. A Tweet search with it answers 424 & charges nothing.
Return Tweets whose IDs exceed this ID.
Return Tweets at or below this ID.
A place name. A country, such as United States, works like placeCountry & keeps Tweets tagged there. A city keeps Tweets about it.
X search no longer supports within. A Tweet search with it answers 424 & charges nothing. Use near alone.
Keeps Tweets from a recent window, such as 90m or 7d. Use a whole number & s, m, h or d.
Only return native reposts.
Enable the safe-search filter.
X no longer searches filter:news.
Words the Tweets must match, in X search syntax.
Search within a list ID.
Search within a place ID.
Search within a country code.
Geo point radius, such as -73.99 40.73 25mi.
Geo bounding box, such as -74.1 40.6 -73.9 40.8.
Raw advanced search query appended as-is.
Only return tweets from verified authors.
Reply mode. Exclude keeps own-thread replies.
Only when the caller requests a repost mode.
Only when the caller requests a quote mode.
Match this literal phrase, including any hyphens.
Words or quoted phrases to exclude. Separate with spaces, commas, or lines.
Words or quoted phrases where any one can match. Separate with spaces, commas, or lines.
Hashtags separated by spaces, commas, or lines.
Cashtags separated by spaces, commas, or lines.
URL substring or domain filter.
Conversation ID filter.
Only replies to this tweet ID.
Only quotes of this tweet ID.
Only retweets of this tweet ID.
Fields to keep in each row, comma-separated. Use dots for nested fields, such as author.username. A list keeps the field in each item. Case & underscores do not matter. A row that lacks a field leaves it out. Cursors, counts & diagnostics always stay. An unknown name answers 400 unknown_field with the valid names, before any read. The price stays the same. SDK row types then hold only the named fields. A longer URL fails at the edge before Xquik reads it.
Fields to drop from each row, comma-separated. It takes the same names as fields. With fields, it drops from the kept fields. A longer URL fails at the edge before Xquik reads it.
Response
User tweets list
Example response
{
"tweets": [
{
"id": "2102761519985332442",
"text": "This galaxy is a little extra.\n\nMeet Messier 106, a spiral galaxy with an extra set of arms. These two additional arms are made of gas heated up by jets from the galaxy’s central black hole. The jets’ superheated shockwaves are depicted in royal blue by @chandraxray. https://t.co/421Lzs0r0c",
"retweetCount": 1364,
"replyCount": 271,
"likeCount": 9775,
"quoteCount": 85,
"viewCount": 962488,
"bookmarkCount": 599,
"conversationId": "2102761519985332442",
"contentDisclosure": {
"aiGenerated": {
"hasAiGeneratedMedia": false
}
},
"displayTextRange": [
0,
267
],
"edit": {
"editableUntilMsecs": "1790175988000",
"editTweetIds": [
"2102761519985332442"
]
},
"entities": {
"hashtags": [],
"urls": [],
"user_mentions": [
{
"id_str": "12415722",
"indices": [
254,
266
],
"name": "Chandra Observatory",
"screen_name": "chandraxray"
}
]
},
"isNoteTweet": false,
"isPinned": false,
"isQuoteStatus": false,
"isReply": false,
"isRetweet": false,
"isTranslatable": false,
"lang": "en",
"possiblySensitive": false,
"source": "<a href=\"https://www.sprinklr.com\" rel=\"nofollow\">Sprinklr</a>",
"type": "tweet",
"url": "https://x.com/NASA/status/2102761519985332442",
"viewState": "EnabledWithCount",
"createdAt": "Wed Sep 23 14:06:28 +0000 2026",
"media": [
{
"altText": "A spiral galaxy, laying diagonally at a three-quarters profile view. Its center is a luminous yellow that stretches out into a pinwheel of wispy blue and red arms. The disc itself is decorated with a smattering of stars and dark dust.",
"availabilityStatus": "Available",
"displayUrl": "pic.x.com/421Lzs0r0c",
"expandedUrl": "https://x.com/NASA/status/2102761519985332442/photo/1",
"focusRects": [
{
"h": 1146,
"w": 2047,
"x": 0,
"y": 419
},
{
"h": 1565,
"w": 1565,
"x": 0,
"y": 0
},
{
"h": 1565,
"w": 1373,
"x": 0,
"y": 0
},
{
"h": 1565,
"w": 783,
"x": 0,
"y": 0
},
{
"h": 1565,
"w": 2047,
"x": 0,
"y": 0
}
],
"height": 1565,
"id": "2102761515958833152",
"indices": [
268,
291
],
"mediaKey": "3_2102761515958833152",
"mediaUrl": "https://pbs.twimg.com/media/HS6CdTYWkAAp0e1.jpg",
"sizes": {
"large": {
"h": 1565,
"resize": "fit",
"w": 2047
},
"medium": {
"h": 917,
"resize": "fit",
"w": 1200
},
"small": {
"h": 520,
"resize": "fit",
"w": 680
},
"thumb": {
"h": 150,
"resize": "crop",
"w": 150
}
},
"type": "photo",
"url": "https://t.co/421Lzs0r0c",
"width": 2047
}
],
"author": {
"id": "11348282",
"username": "NASA",
"name": "NASA",
"followers": 92376233,
"following": 115,
"verified": true,
"isBlueVerified": true,
"isVerified": true,
"profilePicture": "https://pbs.twimg.com/profile_images/1321163587679784960/0ZxKlEKB_normal.jpg",
"coverPicture": "https://pbs.twimg.com/profile_banners/11348282/1788992290",
"profileBannerUrl": "https://pbs.twimg.com/profile_banners/11348282/1788992290",
"description": "Making the seemingly impossible, possible. ✨",
"location": "Pale Blue Dot",
"createdAt": "Wed Dec 19 20:20:32 +0000 2007",
"statusesCount": 74336,
"mediaCount": 28160,
"protected": false,
"url": "http://www.nasa.gov/",
"favouritesCount": 17003,
"isTranslator": false,
"possiblySensitive": false,
"verifiedType": "Government",
"profile_bio": {
"description": "Making the seemingly impossible, possible. ✨",
"entities": {
"description": {},
"url": {
"urls": [
{
"display_url": "nasa.gov",
"expanded_url": "http://www.nasa.gov/",
"indices": [
0,
23
],
"url": "https://t.co/9NkQJKAnuU"
}
]
}
}
},
"hasGraduatedAccess": true,
"parodyCommentaryFanLabel": "None",
"profileDescriptionLanguage": "en",
"profileImageShape": "Square",
"profileTranslatorType": "regular",
"superFollowEligible": false
}
},
{
"id": "2102425682286412261",
"text": "Sept. 22 marks the fall equinox. That means day and night are nearly equal in length around the world, and in the Northern Hemisphere, fall begins. In the Southern Hemisphere, spring begins on this day. https://t.co/laEQ0JajuN",
"retweetCount": 1258,
"replyCount": 200,
"likeCount": 7566,
"quoteCount": 98,
"viewCount": 961825,
"bookmarkCount": 322,
"conversationId": "2102425682286412261",
"contentDisclosure": {
"aiGenerated": {
"hasAiGeneratedMedia": false
}
},
"displayTextRange": [
0,
202
],
"edit": {
"editableUntilMsecs": "1790095918000",
"editTweetIds": [
"2102425682286412261"
]
},
"entities": {
"hashtags": [],
"urls": [],
"user_mentions": []
},
"isNoteTweet": false,
"isPinned": false,
"isQuoteStatus": false,
"isReply": false,
"isRetweet": false,
"isTranslatable": false,
"lang": "en",
"possiblySensitive": false,
"source": "<a href=\"https://www.sprinklr.com\" rel=\"nofollow\">Sprinklr</a>",
"type": "tweet",
"url": "https://x.com/NASA/status/2102425682286412261",
"viewState": "EnabledWithCount",
"createdAt": "Tue Sep 22 15:51:58 +0000 2026",
"media": [
{
"altText": "A satellite's-eye view from October 2022 of the Adirondack Mountains of northeast New York during fall. The leaves on trees are a fiery orange and red. Some trees remain green. White fluffy clouds are visible at the edges of the image.",
"availabilityStatus": "Available",
"displayUrl": "pic.x.com/laEQ0JajuN",
"expandedUrl": "https://x.com/NASA/status/2102425682286412261/photo/1",
"focusRects": [
{
"h": 1801,
"w": 3216,
"x": 0,
"y": 1187
},
{
"h": 2988,
"w": 2988,
"x": 0,
"y": 0
},
{
"h": 2988,
"w": 2621,
"x": 0,
"y": 0
},
{
"h": 2988,
"w": 1494,
"x": 0,
"y": 0
},
{
"h": 2988,
"w": 3216,
"x": 0,
"y": 0
}
],
"height": 2988,
"id": "2102425671280553984",
"indices": [
203,
226
],
"mediaKey": "3_2102425671280553984",
"mediaUrl": "https://pbs.twimg.com/media/HS1RAkdW8AAY1Mp.jpg",
"sizes": {
"large": {
"h": 1903,
"resize": "fit",
"w": 2048
},
"medium": {
"h": 1115,
"resize": "fit",
"w": 1200
},
"small": {
"h": 632,
"resize": "fit",
"w": 680
},
"thumb": {
"h": 150,
"resize": "crop",
"w": 150
}
},
"type": "photo",
"url": "https://t.co/laEQ0JajuN",
"width": 3216
}
],
"author": {
"id": "11348282",
"username": "NASA",
"name": "NASA",
"followers": 92376233,
"following": 115,
"verified": true,
"isBlueVerified": true,
"isVerified": true,
"profilePicture": "https://pbs.twimg.com/profile_images/1321163587679784960/0ZxKlEKB_normal.jpg",
"coverPicture": "https://pbs.twimg.com/profile_banners/11348282/1788992290",
"profileBannerUrl": "https://pbs.twimg.com/profile_banners/11348282/1788992290",
"description": "Making the seemingly impossible, possible. ✨",
"location": "Pale Blue Dot",
"createdAt": "Wed Dec 19 20:20:32 +0000 2007",
"statusesCount": 74336,
"mediaCount": 28160,
"protected": false,
"url": "http://www.nasa.gov/",
"favouritesCount": 17003,
"isTranslator": false,
"possiblySensitive": false,
"verifiedType": "Government",
"profile_bio": {
"description": "Making the seemingly impossible, possible. ✨",
"entities": {
"description": {},
"url": {
"urls": [
{
"display_url": "nasa.gov",
"expanded_url": "http://www.nasa.gov/",
"indices": [
0,
23
],
"url": "https://t.co/9NkQJKAnuU"
}
]
}
}
},
"hasGraduatedAccess": true,
"parodyCommentaryFanLabel": "None",
"profileDescriptionLanguage": "en",
"profileImageShape": "Square",
"profileTranslatorType": "regular",
"superFollowEligible": false
}
}
],
"has_next_page": true,
"next_cursor": "DAAHCgABHTK6Vr___-sLAAIAAAATMjEwMTc3MDE4NjE1NjA1Mjk1OQgAAwAAAAIAAA",
"filtered_count": 0
}Changes
- warning
added the new
topup_in_progressenum value to the/////response property for the response status - warning
added the new
topup_in_progressenum value to the//////response property for the response status - warning
added the new
topup_in_progressenum value to the/response property for the response status - warning
added the new
topup_in_progressenum value to the/response property for the response status - warning
added the new
topup_in_progressenum value to the/response property for the response status - warning
added the new
topup_in_progressenum value to the/response property for the response status - warning
added the new
topup_in_progressenum value to the/response property for the response status - warning
added the new
topup_in_progressenum value to the/response property for the response status - warning
added the new
topup_in_progressenum value to the/response property for the response status - warning
added the new
topup_in_progressenum value to the/response property for the response status - warning
added the new
topup_in_progressenum value to the/response property for the response status - warning
added the new
topup_in_progressenum value to the/response property for the response status - warning
added the new
topup_in_progressenum value to the//response property for the response status - warning
added the new
topup_in_progressenum value to the//response property for the response status - warning
added the new
topup_in_progressenum value to the//response property for the response status - warning
added the new
topup_in_progressenum value to the//response property for the response status - warning
added the new
topup_in_progressenum value to the//response property for the response status - warning
added the new
topup_in_progressenum value to the//response property for the response status - warning
added the new
topup_in_progressenum value to the//response property for the response status - warning
added the new
topup_in_progressenum value to the//response property for the response status - warning
added the new
topup_in_progressenum value to the//response property for the response status - warning
added the new
topup_in_progressenum value to the//response property for the response status - warning
added the new
topup_in_progressenum value to the//////response property for the response status - warning
added the new
topup_in_progressenum value to the///////response property for the response status - warning
added the new
topup_in_progressenum value to the//////response property for the response status - warning
added the new
topup_in_progressenum value to the///////response property for the response status
- warning