X Tweet Engagement Scraper - Replies, Quotes & Retweets avatar

X Tweet Engagement Scraper - Replies, Quotes & Retweets

Pricing

from $6.00 / 1,000 x engagement items

Go to Apify Store
X Tweet Engagement Scraper - Replies, Quotes & Retweets

X Tweet Engagement Scraper - Replies, Quotes & Retweets

Scrape all engagement on any X (Twitter) post — replies, quote tweets, and retweeters — with author, follower & metric fields. No cookies. MCP-ready.

Pricing

from $6.00 / 1,000 x engagement items

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

1

Bookmarked

19

Total users

5

Monthly active users

5 days ago

Last modified

Share

This Apify Actor is built for analysts, operators, and AI agents that start from a specific X post and need its public engagement in one run. It accepts tweet URLs or numeric tweet IDs and returns one dataset record per engagement item, with each row meaning one reply, one quote tweet, or one retweeter. The most useful fields are engagementType, the parent tweet reference, engagement text when present, author identity and profile fields, engagement counts, ranking mode, provider provenance, and scrape timestamps. The outcome is a normalized dataset for review, export, or downstream automation through Apify and Apify MCP.

Best fit and connected workflows

Use this Actor when your workflow begins with a known X post and you want the public conversation and amplification around that post in a single structured result set.

It fits well for:

  • reply review, when you want the public responses under one tweet
  • quote analysis, when you want commentary attached to the source post
  • amplification review, when you want the retweeter list and author profile fields
  • agent workflows in Apify MCP, where one tool call can return structured engagement records

X Tweet Engagement Scraper - Replies, Quotes & Retweets is designed as a focused workflow.

Practical scenario

Maya, a social media manager, has the URL of a launch tweet and wants to review public engagement around it. She supplies the tweet URL, keeps all engagement types enabled, and leaves ranking on Relevance. The dataset returns rows with engagementType, authorUsername, authorName, authorFollowers, authorVerified, text, and likeCount for replies and quotes, plus author-only rows for retweeters. Maya can sort by author size, read the commentary, and decide which accounts to flag for follow-up.

Input

This Actor accepts an array of tweet URLs or numeric IDs. One input can include up to 50 tweet targets.

FieldTypeRequiredDescription
tweetUrlsarrayYesTweet URLs or numeric IDs for the X posts whose engagement you want to collect. Default example: https://x.com/OpenAI/status/2065225362544726371.
engagementTypesarrayNoChoose any of reply, quote, and retweet. Defaults to all three. Retweet rows contain author fields only because a retweet carries no text.
rankingModestringNoReply and quote ranking: Relevance, Recency, or Likes. Defaults to Relevance.
maxItemsintegerNoCaps total dataset rows across all tweets and types. Defaults to 100 and supports up to 5000.
maxPagesPerTypeintegerNoPagination depth per engagement type per tweet. Defaults to 3 and supports up to 50.
includeRawbooleanNoAdds the raw provider object to each dataset row for debugging or custom parsing.
dedupeItemsbooleanNoSkips duplicate engagement across pages and tweets. Defaults to true.

Valid focused JSON example:

{
"tweetUrls": [
"https://x.com/OpenAI/status/2065225362544726371"
],
"engagementTypes": [
"reply",
"quote",
"retweet"
],
"rankingMode": "Relevance",
"maxItems": 20,
"maxPagesPerType": 3,
"includeRaw": false,
"dedupeItems": true
}

Output

The main output is a dataset of X engagement records. Each row is a flat object with a parent tweet reference, an engagement type discriminator, author and post fields, and execution provenance.

FieldTypeDescription
engagementTypestringreply, quote, or retweet.
parentTweetIdstringTweet ID supplied as input.
parentTweetUrlstringCanonical URL for the tweet whose engagement was scraped.
positioninteger1-based position within the run after normalization and dedupe.
tweetIdstringX status ID of the reply or quote tweet. Null for retweets.
tweetUrlstringCanonical URL of the reply or quote tweet. Null for retweets.
textstringReply or quote text, including expanded long-form note text when available. Null for retweets.
createdAtstringISO timestamp when the reply or quote tweet was posted.
languagestringLanguage code returned by X.
conversationIdstringConversation root ID returned by X.
quotedTweetIdstringFor quote tweets, the ID of the tweet being quoted.
authorUsernamestringEngaging account's X handle without @.
authorNamestringEngaging account's display name.
authorIdstringNumeric X user ID of the engaging account.
authorUrlstringCanonical X profile URL of the engaging account.
authorVerifiedbooleanWhether the engaging account is verified when available.
authorFollowersintegerFollower count of the engaging account.
authorFollowingintegerFollowing count of the engaging account.
authorBiostringPublic profile bio of the engaging account.
authorProfileImageUrlstringProfile image URL of the engaging account.
replyCountintegerReply count attached to the engagement item when available.
retweetCountintegerRetweet count attached to the engagement item when available.
quoteCountintegerQuote count attached to the engagement item when available.
likeCountintegerLike count attached to the engagement item when available.
viewCountintegerView count attached to the engagement item when available.
bookmarkCountintegerBookmark count attached to the engagement item when available.
hashtagsarray[string]Hashtags parsed from the engagement item.
mentionsarray[string]Mentions parsed from the engagement item.
urlsarray[string]URLs parsed from the engagement item.
mediaUrlsarray[string]Media URLs parsed from the engagement item.
sourcestringPosting client or app source when available.
rankingModestringRanking requested for replies and quotes in this run.
providerstringProvider used for the result.
providerPageintegerProvider page number within this run.
scrapedAtstringISO timestamp when the record was emitted.
rawobjectRaw provider item, included only when includeRaw is enabled.

Illustrative JSON record:

{
"engagementType": "quote",
"parentTweetId": "2065225362544726371",
"parentTweetUrl": "https://x.com/OpenAI/status/2065225362544726371",
"position": 1,
"tweetId": "2065226000000000000",
"tweetUrl": "https://x.com/example/status/2065226000000000000",
"text": "A short quote tweet with commentary.",
"createdAt": "2026-01-15T12:34:56.000Z",
"language": "en",
"conversationId": "2065225362544726371",
"quotedTweetId": "2065225362544726371",
"authorUsername": "example",
"authorName": "Example User",
"authorId": "123456789",
"authorUrl": "https://x.com/example",
"authorVerified": true,
"authorFollowers": 12000,
"authorFollowing": 340,
"authorBio": "Public profile bio",
"authorProfileImageUrl": "https://pbs.twimg.com/profile_images/example.jpg",
"replyCount": 4,
"retweetCount": 18,
"quoteCount": 2,
"likeCount": 31,
"viewCount": 900,
"bookmarkCount": 1,
"hashtags": ["example"],
"mentions": ["openai"],
"urls": ["https://example.com"],
"mediaUrls": ["https://pbs.twimg.com/media/example.jpg"],
"source": "X for iPhone",
"rankingMode": "Relevance",
"provider": "SociaVault",
"providerPage": 1,
"scrapedAt": "2026-01-15T12:35:10.000Z"
}

How it works

The Actor uses a server-side public-data provider, so it runs without X login or cookies from you. It fetches engagement for each supplied tweet, paginates each engagement type with provider cursors up to maxPagesPerType, normalizes the provider payload into the flat dataset schema, deduplicates rows when enabled, and writes the final records to the Apify dataset.

Replies and quote tweets are returned as tweet objects with text and metrics. Retweets are returned as user objects with author fields only, because a retweet carries no text. Run summary data is written to the key-value store under OUTPUT and RUN_SUMMARY.

Pricing

X Tweet Engagement Scraper - Replies, Quotes & Retweets uses Pay per event pricing together with Apify platform usage. The primary charged event is one X engagement item for each public engagement row saved to the dataset. There is also a one-time Actor start event. Apify platform usage is billed separately according to the live execution settings and platform usage model.

A simple example written in words: if a run saves one hundred engagement rows, the event-based part of the execution includes one hundred X engagement item events, plus the single start event. For current pricing details and the live cost view for this Actor, check the Pricing tab on the Actor page.

Use with AI agents (MCP)

This Actor is available through Apify MCP as a tool for retrieving structured X engagement data from a specific tweet target. The exact Actor identity is khadinakbar/x-tweet-engagement-scraper.

Tool description: given tweet URLs or IDs, it returns normalized public engagement records for replies, quote tweets, and retweeters, with provenance fields for downstream reasoning.

A realistic MCP prompt:

Scrape public engagement for this X post and return replies, quote tweets, and retweeters as structured records. Keep the output normalized, include author fields, and use the default relevance ranking for replies and quotes.

Output interpretation:

  • engagementType routes each row to reply, quote, or retweet handling
  • parentTweetUrl and parentTweetId preserve provenance
  • authorUsername, authorName, and authorFollowers provide author context
  • text and metrics are present for replies and quotes
  • provider, providerPage, and scrapedAt help trace where a row came from

Scope and pagination guidance:

  • tweetUrls keeps the tool focused on a known post
  • maxPagesPerType sets the depth per engagement type
  • maxItems sets the total row cap and the billing cap for saved engagement items

Apify API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const input = {
tweetUrls: ['https://x.com/OpenAI/status/2065225362544726371'],
engagementTypes: ['reply', 'quote', 'retweet'],
rankingMode: 'Relevance',
maxItems: 20,
maxPagesPerType: 3,
includeRaw: false,
dedupeItems: true,
};
const run = await client.actor('khadinakbar/x-tweet-engagement-scraper').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Loaded ${items.length} dataset items`);
console.log(items);

Best results and outcome guidance

Use one tweet target when you want a clear engagement snapshot for a single post. Use multiple tweet URLs when you want to compare engagement across a small set of posts in one run. Keep engagementTypes aligned with the analysis goal: replies for discussion, quotes for commentary, retweets for amplification, or all three for a full engagement view. Raise maxPagesPerType when you want deeper public pages per type, and use maxItems to set the total row cap.

Continue the workflow

Design note

I found that retweet rows are schema-distinct from reply and quote rows: tweetId, tweetUrl, and text are described as null for retweets, while the author fields remain available. That contract detail makes engagementType especially important for downstream parsing.

FAQ

Can this Actor collect engagement for more than one X post?
Yes. Pass up to 50 tweet URLs or IDs in tweetUrls, and the Actor will collect engagement for each supplied post in one run.

Which engagement types are available?
The input supports reply, quote, and retweet. The default input collects all three.

How are replies and quotes ordered?
Use rankingMode to choose Relevance, Recency, or Likes for replies and quotes. The retweeter list is unaffected by that setting.

What if I only need replies?
The current workflow is focused on engagement around a post. A replies-only workflow is referenced in the broader actor family in the current README history.

What if I need tweet content rather than engagement?
The current README history references a tweet-content workflow for URL or ID-based tweet retrieval.

What if I need profile or follower workflows?
The current README history references profile and follower workflows for account-centric collection.

Responsible use

This Actor processes publicly available X data through a third-party public-data provider. Use the output in a way that respects X terms, applicable privacy rules, and local data-protection requirements. When working with personal data, keep your use aligned with your lawful basis, retention policy, and the context in which the data was collected.