Skip to main content
GET
View quote tweets with Twitter API & author fields
Repost records include retweetedAt, the repost event’s UTC ISO 8601 timestamp. It is null when that timestamp is unavailable. The API omits it for original posts. The nested original post keeps its own creation date. This field does not report every account that reposted a post. Request per-account timestamps with Get retweeters.
Requested result counts are upper bounds for paid authenticated calls. When remaining credits cannot cover the full page or ID list, Xquik returns fewer results. If zero paid results are affordable, it returns 402 insufficient_credits.
1 credit per tweet returned · All plans from $0.00012/credit · Supports guest paid reads
This route returns quote tweets for one original tweet. Each row includes the quoting tweet’s commentary, author, engagement counts, and media attachments. The route is GET /api/v1/x/tweets/{id}/quotes. A post X does not have returns 404 tweet_not_found, as Get tweet does. Quotes X still lists for a deleted post return as rows. A post without quotes returns an empty page. A 404 costs no credits. Pass next_cursor back unchanged as cursor. A page can be empty while has_next_page is true, so keep following next_cursor. A cursor in use returns 409 coverage_cursor_unavailable. Wait for Retry-After, then retry it once. A finished or expired cursor returns 410 coverage_cursor_gone. Restart without a cursor and deduplicate by id. A busy read returns 503. Retry after Retry-After.
The Node.js and Python snippets write JSON Lines quote rows plus a separate checkpoint. They do not write raw response pages. Store each mapped row and the latest next_cursor. A moderation queue, campaign report, research job, or agent handoff can then resume from the last completed page without duplicate rows.

Direct quote tweet handoff

Use GET /api/v1/x/tweets/{id}/quotes when a support, campaign, moderation, research, or agent workflow needs quote tweets as JSON rows. It returns one row for every quote tweet in the response. Store quoted_tweet_id, quote_id, text, author_id, author_username, author_name, author_followers, author_verified, author_profile_picture, created_at, engagement counts, media URLs, and a separate next_cursor checkpoint. Use sinceTime, untilTime, includeReplies, and tweet result filters to narrow the quote set before you export rows.

Quote rows

Store tweets[] as quote tweet rows for one source tweet.

Stable upserts

Store tweets[].id as quote_id with quoted_tweet_id for idempotent imports and moderation queues.

Author joins

Store tweets[].author.id, username, name, followers, verified, and profilePicture for CRM, research, and review tools.

Engagement metrics

Store likeCount, replyCount, retweetCount, quoteCount, viewCount, and bookmarkCount when returned.

Media context

Store media[].mediaUrl, entities, quoted_tweet, and retweeted_tweet when returned to keep attached context.

Window filters

Use sinceTime, untilTime, includeReplies, and tweet result filters to narrow campaign, support, or audit windows.

Next page

Store has_next_page and next_cursor, then pass next_cursor back as cursor only when has_next_page is true.

Credit-limited pages

Use tweets.length, not a requested page size, for row counts. Low balances can return fewer rows.
Direct quote tweet reads cost 1 credit per tweet returned. Low credit balances can return fewer tweets than a full page. Zero affordable results return 402 insufficient_credits.

Historical pages vs live quote alerts

Use this endpoint when you need existing quote tweets for one source tweet. Use monitors when future quote activity should arrive as stored events or signed webhook deliveries.

Historical quote pull

Call GET /x/tweets/{id}/quotes, store quote_id, and resume with next_cursor for one known source tweet.

Account quote monitor

Use POST /monitors with eventTypes: ["tweet.quote"] when one tracked account’s future quote tweets should produce events.

Keyword quote monitor

Use POST /monitors/keywords with eventTypes: ["tweet.quote"] when matching future quote tweets should produce events.

Signed webhook delivery

Use POST /webhooks with tweet.quote, verify signatures, and replay stored rows with GET /events.

Quote tweet questions

What are quote tweets?

A quote tweet is a new tweet containing commentary about an original tweet. X calls this format a Quote Post. This endpoint returns the quoting tweet, its author, and visible engagement. It never changes the original tweet.

How does a Twitter API view quote tweets?

Pass the original tweet’s numeric ID through the path. Store every returned quote_id before requesting next_cursor. Keep the original tweet ID beside each row for attribution, deduplication, and campaign reporting.

Why are some quote tweets not showing?

X controls which quote tweets each request exposes. Deleted, protected, withheld, blocked, or unavailable tweets may not appear. Filters can also remove otherwise visible rows. A missing row cannot confirm zero quote activity.

How do quote tweets differ from replies and reposts?

A quote tweet adds its author’s commentary and references the original tweet. A repost shares the original without added commentary. The replies endpoint returns tweets from the original conversation. Use retweeters for reposting profiles.

How can teams analyze quote tweets?

Store text, author, creation time, engagement counts, and media URLs. Keep the source relationship separate. Use both tweet IDs as the deduplication key. Use monitors and signed webhooks for future quote alerts.

Path parameters

string
required
Post ID or URL-encoded post URL, such as x.com/nasa/status/20. See path IDs.

Query parameters

string
Pagination cursor from next_cursor in a previous response. Leave it empty for the initial request. Pass a cursor only when has_next_page is true.
string
Legacy pagination override. Use standard when required by an older client. Search filters such as keywords apply only without it.
integer
Tweets per page. Range: 1-100. Defaults to 20.
string
Unix timestamp in seconds. Only return quotes after this time.
string
Unix timestamp in seconds. Only return quotes before this time.
A reply that quotes the tweet is part of the default result, as in the Quotes view on X. Send replies=exclude to drop such replies.

Tweet result filters

These optional filters apply to tweets[] returned by this route. They keep the same quoted tweet. Xquik filters rows after it fetches each page. Selective filters can return fewer rows than an unfiltered page.
boolean
Keep replies that quote the post. Automatic pages keep them unless this is false. Standard pages keep them only when it is true. Explicit replies takes precedence.
string
Filter to posts from this username. The @ prefix is optional.
string
Filter to replies directed to this username.
string
Filter to posts that mention this username.
string
Only include posts with this language code.
string
Include posts created on or after this date or timestamp.
string
Include posts up to this date or timestamp. A date is a UTC day, inclusive, so its own posts count.
string
Use images, videos, gifs, media, links, or none.
integer
Require this minimum like count.
integer
Require this minimum repost count.
integer
Require this minimum reply count.
integer
Require this minimum quote count.
integer
Require this minimum view count.
integer
Require this minimum bookmark count.
integer
Allow this maximum like count. Missing counts pass.
integer
Allow this maximum repost count. Missing counts pass.
integer
Allow this maximum reply count. Missing counts pass.
integer
Allow this maximum quote count. Missing counts pass.
boolean
When true, only return posts from Blue-verified authors.
boolean
When true, only return posts from verified authors.
string
Use include, exclude, or only for replies. This setting overrides includeReplies when the endpoint supports both.
string
Use include, exclude, or only for reposts.
string
Match this literal phrase, including any hyphens.
string
Exclude comma-separated or whitespace-separated terms.
string
Require at least 1 comma-separated or whitespace-separated term.
string
Match these hashtags. Separate values with commas or spaces.
string
Match these cashtags. Separate values with commas or spaces.
string
Use include, exclude, or only for quote posts.
string
URL substring or domain that must appear in tweet URL entities.
string
Filter to tweets in this conversation thread.
string
Only include replies to this tweet ID.
string
Filter to quote tweets of this tweet ID.
string
Filter to retweets of this tweet ID.
string
Keep only Tweets with this card type, such as poll2choice_text_only. Tweet search checks each Tweet’s card.
string
X search no longer supports source. A Tweet search with it answers 424 & charges nothing.
string
X search no longer supports excludeSource. A Tweet search with it answers 424 & charges nothing.
string
X search no longer supports geocode. A Tweet search with it answers 424 & charges nothing.
string
Match this place name.
string
X search no longer supports within. A Tweet search with it answers 424 & charges nothing. Use near alone.
boolean
When true, enable X safe-search filtering.
boolean
X no longer searches filter:news, so leave this unset.
string
Return Tweets whose IDs exceed this ID.
string
Return Tweets at or below this ID.
boolean
When true, only return native reposts.
string
Match Tweets from this recent window, such as 90m or 7d. Use a whole number & s, m, h or d.
string
Words the Tweets must match, in X search syntax.
string
Search within this X place ID. Search places finds the ID by name.
string
Search within this country code.
string
Geo point radius in X search syntax, such as -73.99 40.73 25mi.
string
Geo bounding box in X search syntax, such as -74.1 40.6 -73.9 40.8.
string
Raw X search operators appended to the final search query.
string
Search within this X List ID.

Which tweet engagement endpoint?

Quote tweets

Use GET /x/tweets/{id}/quotes for tweet rows that quote one source tweet.

Tweet replies

Use GET /x/tweets/{id}/replies when you need reply tweet rows under the source tweet.

Retweeters

Use GET /x/tweets/{id}/retweeters for user profiles that reposted one source tweet.

Tweet likers

Use GET /x/tweets/{id}/favoriters for user profiles that liked one source tweet.

Saved exports

Use Create extraction with toolType=quote_extractor when you need a saved job or CSV, JSON, or XLSX export.

Search handoff

Use Search tweets when you need keyword, operator, or structured-filter discovery across many source tweets.

Headers

string
Full account key. Sessions and OAuth also work.
string
Bearer xq_your_guest_key_here for paid_reads.

Response

200 OK

object[]
Array of quote tweets. Tweet object fields.
string
This value is the tweet ID.
string
This value contains the tweet text.
string
This value identifies the tweet type when available.
string
This value contains the ISO 8601 creation timestamp.
boolean
Whether this is a Note Tweet. Omitted if unavailable.
boolean
Whether the author pinned this post to their profile. Omitted if unavailable.
boolean
Whether the tweet is a reply. Omitted if unavailable.
string
This ID identifies the tweet receiving the reply.
string
User ID being replied to. Omitted if unavailable.
string
Username being replied to. Omitted if unavailable.
string
Conversation thread ID. Omitted if unavailable.
number
This value records the like count when available.
number
This value records the repost count when available.
number
This value records the reply count when available.
number
This value records the quote tweet count when available.
number
This value records the view count when available.
number
This value records the bookmark count when available.
string
Permalink URL on X. Omitted if unavailable.
string
The tweet’s language code appears here when X returns it.
string
Client used to post the tweet. Omitted if unavailable.
number[]
Start and end offsets for rendered tweet text. Omitted if unavailable.
boolean
Whether replies are limited. Omitted if unavailable.
boolean
Whether this tweet quotes another tweet. Omitted if unavailable.
boolean
Whether this row is a retweet. text carries the original post in full.
object
Parsed entities. Omitted if unavailable.
object
X can return paid partnership and AI-generated media labels here. Paid partnership state appears in advertising.isPaidPromotion. AI media state appears in aiGenerated.hasAiGeneratedMedia. X may omit this object.
object
Tweet author profile. Omitted if unavailable. Author object fields.
string
Author user ID.
string
Author handle without @.
string
Author display name.
number
This value records the author’s follower count when available.
boolean
Whether the author is verified. Omitted if unavailable.
string
Author profile image URL. Omitted if unavailable.
object[]
This array contains media attachments when available. Media object fields.
string
Direct media URL.
object[]
Available video renditions with bitrate, content type, and URL. Omitted for images.
string
Media type.
string
Shortened URL from the tweet text.
object
Embedded quoted tweet. Omitted if not a quote tweet.
object
Original retweeted tweet. Omitted if not a retweet.
boolean
Whether more results are available.
string
Cursor for the next page.

401 Unauthenticated

Anonymous requests receive WWW-Authenticate: Bearer. This is not a Payment challenge.

402 Payment required

Account keys receive account options. A guest wallet receives a checkout option. Confirm any payment action.