YepAPI
Twitter / X API

X / Twitter Quote Tweets API

Get the quote tweets of any X (Twitter) post with full text, authors, and engagement counts. Paginated JSON, $0.01 per call.

POST/v1/twitter/tweet-quotes
$0.01/call

Returns the tweets that quote a given tweet. Each item has is_quote: true and the original in quoted_tweet. Use it to track how a post is being discussed beyond its replies.

Usage

const res = await fetch('https://api.yepapi.com/v1/twitter/tweet-quotes', {
  method: 'POST',
  headers: {
    'x-api-key': 'YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"tweet": "2116173868326846654", "count": 20}),
});
const { data } = await res.json();
console.log(data);
curl -X POST https://api.yepapi.com/v1/twitter/tweet-quotes \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tweet": "2116173868326846654", "count": 20}'
import requests

res = requests.post(
    "https://api.yepapi.com/v1/twitter/tweet-quotes",
    headers={"x-api-key": "YOUR_API_KEY"},
    json={"tweet": "2116173868326846654", "count": 20},
)
print(res.json()["data"])

Request Body

ParameterTypeRequiredDescriptionDefault
tweetstringYesTweet ID (2116173868326846654) or a post URL (https://x.com/NASA/status/2116173868326846654)—
countnumberNoPage size hint, 1–10020
cursorstringNocursor from the previous response, to fetch the next page—

Response

{
  "ok": true,
  "data": {
    "cursor": "DAACCgACHV69WAgAJxAKAAMdXr1YB__Y8AgABAAAAAILAAUAAAD8RW1QQzZ3QUFBZlEvZ0dKTjB2R3AvQUFBQUJVZFhra0FYRmRncEIxZWYvdGVtekFGSFY0K2ZpWFdJTkVkWGlyYUxWb3hGQjFlZ0ZNamxsRWxIVjVDQ1ZGYWNQQWRYalVCbDFkZ3VoMWVOZ00zVnND…",
    "tweets": [
      {
        "author": {
          "avatar": "https://pbs.twimg.com/profile_images/1924973942655352835/0e0cCOnR_400x400.jpg",
          "banner": "https://pbs.twimg.com/profile_banners/15811630/1668574266",
          "created_at": "2008-08-11T18:39:29+00:00",
          "description": "@GirlsBTRS Artist Manager. I love music and fandom and am way too altruistic about it.",
          "followers_count": 1888,
          "following_count": 1802,
          "id": "15811630",
          "is_blue_verified": false,
          "likes_count": 208371,
          "listed_count": 26,
          "location": "Opinions are my own.",
          "media_count": 3219,
          "name": "Shelby Chargin",
          "pinned_tweet_ids": [],
          "protected": false,
          "tweet_count": 169424,
          "url": "https://x.com/ohhayshelby",
          "username": "ohhayshelby",
          "verified": false,
          "verified_type": null,
          "website": "http://girlsbtrs.com"
        },
        "bookmarks": 2474,
        "conversation_id": "2116182543229993316",
        "created_at": "2026-10-30T14:56:49+00:00",
        "hashtags": [],
        "id": "2116182543229993316",
        "in_reply_to_tweet_id": null,
        "in_reply_to_username": null,
        "is_quote": true,
        "is_retweet": false,
        "lang": "en",
        "likes": 78114,
        "media": [],
        "mentions": [],
        "possibly_sensitive": false,
        "quoted_tweet": {
          "author": {
            "avatar": "https://pbs.twimg.com/profile_images/1321163587679784960/0ZxKlEKB_400x400.jpg",
            "banner": "https://pbs.twimg.com/profile_banners/11348282/1788992290",
            "created_at": "2007-12-19T20:20:32+00:00",
            "description": "Making the seemingly impossible, possible. ✨",
            "followers_count": 92298687,
            "following_count": 115,
            "id": "11348282",
            "is_blue_verified": true,
            "likes_count": 17049,
            "listed_count": 96842,
            "location": "Pale Blue Dot",
            "media_count": 28221,
            "name": "NASA",
            "pinned_tweet_ids": [
              "2116263878807998722"
            ],
            "protected": false,
            "tweet_count": 74477,
            "url": "https://x.com/NASA",
            "username": "NASA",
            "verified": false,
            "verified_type": "Government",
            "website": "http://www.nasa.gov/"
          },
          "bookmarks": 3460,
          "conversation_id": "2116173868326846654",
          "created_at": "2026-10-30T14:22:21+00:00",
          "hashtags": [],
          "id": "2116173868326846654",
          "in_reply_to_tweet_id": null,
          "in_reply_to_username": null,
          "is_quote": false,
          "is_retweet": false,
          "lang": "en",
          "likes": 100148,
          "media": [
            {
              "alt_text": "Image description: A packed, sparkling starfield captured by our Hubble telescope — with strange new worlds potentially awaiting. Credit: ESA/Hubble and NASA, R. Cohen",
              "duration_ms": null,
              "height": 1200,
              "type": "photo",
              "url": "https://pbs.twimg.com/media/HV4o6wYXkAA3T9Q.jpg",
              "video_url": null,
              "width": 1600
            }
          ],
          "mentions": [],
          "possibly_sensitive": false,
          "quoted_tweet": null,
          "quotes": 531,
          "replies": 438,
          "retweeted_tweet": null,
          "retweets": 14918,
          "text": "We mourn the passing of Patrick Stewart, who inspired countless individuals at NASA (and beyond) to boldly go where no one has gone before. https://t.co/qnLWiLX9RW",
          "url": "https://x.com/NASA/status/2116173868326846654",
          "urls": [],
          "views": 1904085
        },
        "quotes": 7,
        "replies": 13,
        "retweeted_tweet": null,
        "retweets": 4731,
        "text": "Oh this has me FUCKED UP.",
        "url": "https://x.com/ohhayshelby/status/2116182543229993316",
        "urls": [],
        "views": 518928
      }
    ]
  }
}

Response Fields

FieldTypeDescription
okbooleanWhether the request succeeded
data.tweetsobject[]Quote tweets
data.tweets[].idstringTweet ID
data.tweets[].urlstringx.com URL of the tweet
data.tweets[].textstringFull text
data.tweets[].created_atstringISO 8601 timestamp
data.tweets[].langstring | nullLanguage code detected by X
data.tweets[].authorobjectAuthor profile — same fields as /v1/twitter/user
data.tweets[].likesnumberLike count
data.tweets[].retweetsnumberRepost count
data.tweets[].repliesnumberReply count
data.tweets[].quotesnumberQuote count
data.tweets[].bookmarksnumberBookmark count
data.tweets[].viewsnumber | nullView count
data.tweets[].conversation_idstringID of the thread's first tweet
data.tweets[].in_reply_to_tweet_idstring | nullTweet this one replies to
data.tweets[].in_reply_to_usernamestring | nullHandle this one replies to
data.tweets[].is_retweetbooleanThis is a repost — the original is in retweeted_tweet
data.tweets[].is_quotebooleanThis quotes another tweet — see quoted_tweet
data.tweets[].possibly_sensitivebooleanFlagged as sensitive media
data.tweets[].hashtagsstring[]Hashtags without #
data.tweets[].mentionsstring[]Mentioned handles
data.tweets[].urlsstring[]Expanded links
data.tweets[].mediaobject[]Photos, videos, GIFs: type (photo, video, animated_gif), url, video_url (MP4), duration_ms, width, height, alt_text
data.tweets[].quoted_tweetobject | nullThe quoted tweet, same shape
data.tweets[].retweeted_tweetobject | nullThe reposted tweet, same shape
data.cursorstring | nullCursor for the next page

Pagination

Each response includes a cursor. Send the same request again with that value in cursor to get the next page; cursor is null when there is nothing more (or the page came back empty). count is a page-size hint — X may return a few more or fewer items than you ask for. Every page is a separate $0.01 call.

Caching

Responses are cached for 10 minutes.

Errors

StatusCodeWhen
400VALIDATION_ERRORtweet is not a tweet ID or status URL
429RATE_LIMITED_UPSTREAMToo many requests in a short burst — retry after a few seconds
502 / 503UPSTREAM_ERROR / SERVICE_UNAVAILABLETemporary problem fetching data from X — retry later

Failed calls are not charged.

A tweet with no quotes returns 200 with an empty tweets list.

On this page