Search tweets with minLikes, normalized likeCount, media & cursors
Changed onTweets include authors, like counts, media, URLs & cursors. Omit mode for maximum coverage. Reuse next_cursor with unchanged filters.
Request
- Base URL: https://xquik.com/api/v1
- URL: https://xquik.com/api/v1/x/tweets/search
- Auth: one of:
- API key in header x-api-key
- HTTP bearer
- none
Query parameters
Query, Tweet ID, or URL. Alias query. Hyphens negate terms. Use exactPhrase for literals. from: & -from: take a handle or a user ID, also in an OR group. Valid bounds apply per page. since: & until: dates are UTC days, written YYYY-MM-DD. 25/12/2026 & 12/25/2026 also work, since each has 1 reading. 04/01/2026 has 2 & answers 424 with the form to write. since_time: & until_time: take Unix seconds or an ISO 8601 time. list: takes a public List's ID. A private List answers 404 list_not_found. X searches up to 512 characters. A longer query answers 424 before any read, unless a term of its first OR group fits alone. When each OR alternative has -filter:replies, Xquik drops every reply X sends. Dropped replies cost nothing.
Latest lists posts newest first. Top keeps X's engagement ranking within each read. Xquik reads several of X's views, so a later page can hold a post X ranks higher. Top skips posts X shows above a ranked reply that cannot match the query. They cost nothing. Any case works. Photos, Videos & Media read Latest with mediaType images, videos or media, unless mediaType is set. People & Lists answer 400 & point to /x/users/search & /x/lists/search. Aliases result_type, sort_order, type, search_type, product, category & section.
Omit mode for resumable maximum coverage. Standard keeps legacy pagination. Coverage returns diagnostics once and rejects cursors.
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.
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.
Most unique matches to return after filtering. Default 20. Explicit coverage defaults to 2000. At the deadline it returns kept rows & diagnostics. Xquik bills only returned rows. A low credit balance can cut results. A balance that covers 0 rows returns 402. Its aliases are pageSize, count, max_results, maxItems, max_items & per_page.
Filter by author username.
Filter replies sent to a username.
Filter tweets mentioning a username.
Filter by language. Its alias is lang.
Start date as a UTC day, written YYYY-MM-DD. 25/12/2026 & 12/25/2026 also work, since each has 1 reading. A date that fits both orders reads month first, so 04/01/2026 is 1 April.
End date as a UTC day, inclusive, so its own posts count. It takes the same date forms as sinceDate.
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.
Only return tweets from verified authors.
Reply mode. Exclude drops every reply, own-thread replies too.
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.
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.
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
Search results
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
- info
added the optional property
//////////////to the response with the status - info
added the optional property
////////////////to the response with the status - info
added the optional property
////////////////to the response with the status - info
added the optional property
////////////////to the response with the status - info
added the optional property
//////////////////to the response with the status - info
added the optional property
////////////////////to the response with the status - info
added the optional property
////////////////////to the response with the status - info
added the optional property
////////////////////to the response with the status
- info
- 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