X Twitter Replies Scraper - [No Cookies]
Pricing
from $8.00 / 1,000 x/twitter reply scrapeds
X Twitter Replies Scraper - [No Cookies]
Scrape public X/Twitter replies from tweet URLs or IDs with author profiles, metrics, media, language, and cursors. MCP optimized. $8.00/1K replies.
Pricing
from $8.00 / 1,000 x/twitter reply scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
X Twitter Replies Scraper - No Cookies
X Twitter Replies Scraper - No Cookies is an Apify Actor for working with public replies on specific X/Twitter posts. It accepts tweet URLs or numeric tweet IDs, returns one dataset record per reply, and includes reply text, timestamps, language, conversation identifiers, author profile fields, engagement counts, media URLs, and provider metadata. The output is shaped for analytics, downstream enrichment, and AI-agent workflows through Apify, including Apify MCP.
Best fit and connected workflows
This Actor fits workflows centered on a known tweet or set of tweets where the goal is to collect public reply data in a normalized table.
Common routes include:
- Reply monitoring for a brand, campaign, product launch, or announcement post
- Conversation analysis for public social listening and sentiment review
- Community and creator research around a specific post
- Support triage based on visible public responses
- AI-agent workflows that need structured reply records with author and engagement fields
If your workflow starts from a tweet URL or tweet ID and ends with reply-level data, this Actor gives you a focused path from input to dataset rows.
Practical scenario
A community manager has a tweet URL from a product announcement and wants to review the public response before the next meeting. They enter the tweet URL, keep the default relevance ranking, and run the Actor.
The dataset returns fields such as replyUrl, text, createdAt, authorUsername, authorName, authorFollowers, likeCount, retweetCount, replyCount, viewCount, and language. The manager can then sort the replies, identify visible themes, and export the dataset for reporting or follow-up work.
Input
The Actor accepts these input fields:
| Field | Type | Purpose | Notes |
|---|---|---|---|
tweetUrls | array | Tweet URLs or IDs to scrape | Required. Accepts full X/Twitter URLs or numeric tweet IDs. |
rankingMode | string | Reply ordering | Relevance, Recency, or Likes. Defaults to Relevance. |
maxReplies | integer | Total reply rows to save | Hard cap across all input tweets. Default 100, max 5000. |
maxPagesPerTweet | integer | Pagination safety valve | Default 10, max 100. |
startCursor | string | Continue from a previous run | Paste the cursor from RUN_SUMMARY.nextCursors. |
includeRaw | boolean | Include raw provider payload | Useful for debugging field drift or custom parsing. |
dedupeReplies | boolean | Skip duplicate replies | Default is enabled. |
Valid focused JSON example:
{"tweetUrls": ["https://x.com/OpenAI/status/2065225362544726371"],"rankingMode": "Relevance","maxReplies": 100,"maxPagesPerTweet": 10,"startCursor": "","includeRaw": false,"dedupeReplies": true}
Output
Each dataset item is one public reply record.
| Field | Type | Meaning |
|---|---|---|
parentTweetId | string | Tweet ID supplied as input. |
parentTweetUrl | string | Canonical URL of the source tweet. |
rankingMode | string | Ordering used for the run. |
position | integer | 1-based row position after normalization and dedupe. |
replyId | string | Reply status ID. |
replyUrl | string | Canonical X/Twitter URL for the reply. |
text | string | Full public reply text. |
createdAt | string | Reply timestamp in ISO format. |
language | string | Language code from X/Twitter. |
conversationId | string | Conversation root ID. |
inReplyToTweetId | string | Tweet ID this reply responds to. |
authorUsername | string | Reply author's handle without @. |
authorName | string | Reply author's display name. |
authorId | string | Numeric author ID. |
authorUrl | string | Canonical author profile URL. |
authorVerified | boolean | Verification status when available. |
authorFollowers | integer | Follower count. |
authorFollowing | integer | Following count. |
authorBio | string | Public bio text. |
authorProfileImageUrl | string | Profile image URL. |
replyCount | integer | Reply count on the reply post. |
retweetCount | integer | Retweet count on the reply post. |
quoteCount | integer | Quote count on the reply post. |
likeCount | integer | Like count on the reply post. |
viewCount | integer | View count on the reply post. |
bookmarkCount | integer | Bookmark count on the reply post. |
hashtags | array | Hashtags found in the reply. |
mentions | array | Mentions found in the reply. |
urls | array | URLs found in the reply. |
mediaUrls | array | Media URLs found in the reply. |
source | string | Posting client or app source when available. |
provider | string | Provider used for the result. |
providerPage | integer | Provider page number in the run. |
scrapedAt | string | Time the record was emitted. |
raw | object | Raw provider item when includeRaw is enabled. |
Illustrative dataset record:
{"parentTweetId": "2065225362544726371","parentTweetUrl": "https://x.com/OpenAI/status/2065225362544726371","rankingMode": "Relevance","position": 1,"replyId": "2065226000000000001","replyUrl": "https://x.com/example/status/2065226000000000001","text": "Great update, looking forward to trying this.","createdAt": "2026-01-01T12:00:00.000Z","language": "en","conversationId": "2065225362544726371","inReplyToTweetId": "2065225362544726371","authorUsername": "example","authorName": "Example User","authorId": "123456789","authorUrl": "https://x.com/example","authorVerified": false,"authorFollowers": 1200,"authorFollowing": 340,"authorBio": "Public profile bio.","authorProfileImageUrl": "https://pbs.twimg.com/profile_images/example.jpg","replyCount": 0,"retweetCount": 0,"quoteCount": 0,"likeCount": 12,"viewCount": 340,"bookmarkCount": 1,"hashtags": [],"mentions": [],"urls": [],"mediaUrls": [],"source": "X for iPhone","provider": "SociaVault","providerPage": 1,"scrapedAt": "2026-01-01T12:00:05.000Z"}
How it works
This Actor uses provider-backed access for public X/Twitter replies and runs without cookies. The manifest indicates provider retries, cursor pagination, normalized dataset records, and telemetry written to OUTPUT and RUN_SUMMARY. The input schema supports multiple tweet URLs or IDs, ranking modes, pagination controls, a continuation cursor, raw payload output, and reply deduplication.
Pricing
X Twitter Replies Scraper - No Cookies uses Pay per event plus Apify platform usage.
- One charge occurs when the Actor starts.
- Each saved public reply is billed as a separate event.
A simple example: if a run starts once and saves one hundred and twenty replies, the charge includes one start event plus one hundred and twenty reply events. For the current event details and platform usage information, see the live Pricing tab in Apify Console.
Use with AI agents (MCP)
This Actor is usable through Apify MCP as a structured reply-scraping tool. The exact Actor identity is khadinakbar/x-twitter-replies-scraper.
Use it when an agent needs:
- a tweet URL or tweet ID as the starting point,
- one record per public reply,
- author and engagement fields for reasoning or enrichment,
- dataset output that can be read back by downstream tools.
Scrape public replies for this tweet URL, return the dataset rows, and summarize the reply authors, engagement counts, and any visible media URLs.
Output interpretation:
datasetpoints to the reply records collection.summaryandrunSummaryprovide run-level status and cursor information.providerandproviderPageshow where each row came from.scrapedAtis the emission timestamp for the record.rawappears only whenincludeRawis enabled.
Provenance and scope:
- Records come from public reply data exposed through the provider-backed X/Twitter reply endpoint.
- The dataset is normalized into one row per reply.
startCursorcontinues a previous thread of pagination using the saved cursor value.
Pagination and cost guidance:
maxPagesPerTweethelps set how deep the Actor can page within one conversation.maxRepliescaps the total saved rows across all input tweets and acts as a billing and dataset cap.dedupeReplieskeeps repeated reply rows out of the dataset unless you intentionally want overlap inspection.
Apify API example
JavaScript example with APIFY_TOKEN and dataset readback:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/x-twitter-replies-scraper').call({tweetUrls: ['https://x.com/OpenAI/status/2065225362544726371'],rankingMode: 'Relevance',maxReplies: 20,maxPagesPerTweet: 5,includeRaw: false,dedupeReplies: true,});const datasetItems = await client.dataset(run.defaultDatasetId).listItems();console.log(datasetItems.items);
Best results and outcome guidance
For clearer datasets, start with a specific tweet URL or ID and keep the input set tightly scoped to the posts you want analyzed. Use Relevance for the default conversation ordering, Recency for newer replies first, and Likes when engagement ordering is the most useful view. Set maxReplies to match the number of rows you want saved, and raise maxPagesPerTweet only when you want deeper pagination within a single tweet conversation.
If you are continuing a prior run, reuse the saved cursor from RUN_SUMMARY.nextCursors for the same tweet and ranking mode. Keep includeRaw off for routine exports and enable it when you want provider payload visibility for parsing or debugging.
Focused standalone workflow
X Twitter Replies Scraper - No Cookies is designed as a focused standalone workflow for the public input and structured output contract described above.
Design note
I found that the output contract includes both providerPage and scrapedAt as required fields, which makes each record traceable to a specific page and emission time.
FAQ
Can I use this Actor with a tweet URL or a numeric tweet ID?
Yes. The tweetUrls field accepts either full X/Twitter URLs or numeric tweet IDs.
Which reply ordering should I choose?
Relevance returns the default conversation ranking, Recency surfaces newer replies first, and Likes prioritizes liked replies.
How can I continue a run from a previous page?
Use startCursor with the exact cursor value saved in RUN_SUMMARY.nextCursors.
What appears in the dataset for each reply?
Each row includes reply identity, text, timestamps, author profile fields, engagement metrics, language, provider metadata, and optional raw provider data.
Is this Actor suitable for quote tweets or profile timelines?
This Actor is built for replies to specific tweets. Quote tweets, retweeters, keyword search, and profile timelines are outside this workflow.
Responsible use
Use this Actor for public X/Twitter reply data only, and respect X/Twitter terms, applicable laws, and platform policies. Review and process public content responsibly, especially when handling user-generated text, profile data, or downstream AI analysis.