X (Twitter) Retweeters Scraper - Who Reposted a Post avatar

X (Twitter) Retweeters Scraper - Who Reposted a Post

Pricing

from $0.13 / 1,000 retweeters

Go to Apify Store
X (Twitter) Retweeters Scraper - Who Reposted a Post

X (Twitter) Retweeters Scraper - Who Reposted a Post

See who reposted (retweeted) an X (Twitter) post. Paste post links or ids and get one row per account: handle, name, bio, follower and following counts, posts, verification, location, website and join date, plus X's own repost count. $0.14 per 1,000 accounts.

Pricing

from $0.13 / 1,000 retweeters

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Paste links to X posts and get the accounts that reposted each one, as full profiles: bio, follower and following counts, post count, verification, location, website and join date, one row per account. Every row also says which post it came from and how many reposts X counts on it.

The awkward part: X decides how much of a post's repost list it hands over, and the run stops where X's list stops. Each row carries X's own count, so you can see straight away whether you got everyone.

InputX post links, or just the post ids
OutputOne full profile per account that reposted: handle, name, bio, followers, following, posts, verification type, location, website, join date, and the post's own repost count
Ceiling1,000 accounts per post, 50 posts and 5,000 accounts per run
Account neededNone from you
Price$0.14 per 1,000 accounts, flat on every plan. The free plan's $5 a month covers about 35,000

🔍 What X (Twitter) Retweeters Scraper does

Each post gets a quick check first: does X still have it, and how many reposts does it count? A post that was deleted, or that nobody reposted, ends there with a free labelled row, and its list is never read.

Then the list itself is read page by page, 20 accounts at a time, until it reaches the number you asked for or X's list runs out. An account shows up once per post, however many times X repeats it. position is the account's place in the list as the run read it.

Reposts only. A quote post is a different list on X and is not in here.

📋 What data you get from each reposting account

What you getField
The post this account reposted, and X's repost count on ittweetId, tweetUrl, tweetRetweetCount
The account's place in X's listposition
X's numeric id, the handle, the display name and the profile linkuserId, userName, name, url
The biodescription
Followers, following, posts, media posts and likes givenfollowersCount, followingCount, tweetsCount, mediaCount, likesCount
Whether there is a tick, and which kindisVerified, verifiedType
Protected or notisProtected
Location, website and join datelocation, website, createdAt
The 400px avatarprofileImageUrl
When the row was readscrapedAt

▶️ How to scrape the retweeters of an X post

  1. Open X (Twitter) Retweeters Scraper and click Try for free.
  2. Paste post links into Post links or IDs, one per line.
  3. Set Max accounts per post.
  4. Click Start.
  5. Download the dataset as JSON, CSV or Excel, or pull it from the Apify API.

Want to see the columns first? Start it with no links. You get one labelled sample row, and it is not charged.

💰 How much does it cost to scrape X retweeters?

$0.14 per 1,000 accounts. Flat on every Apify plan, no volume tiers. On the free plan, the $5 Apify gives you each month covers about 35,000 accounts.

You pay for accounts delivered and nothing else. The sample row, every diagnostic row, a repeat of an account already delivered for the same post, and accounts X lists but will not show are all free. maxItemsPerTweet times the number of posts is the most a run can deliver, so keep it small while you try things out.

📥 What you give it

{
"tweetUrls": [
"https://x.com/NASA/status/2105417506991091764",
"2106124556205252700"
],
"maxItemsPerTweet": 200
}
FieldDefaultWhat it is
tweetUrlsnoneUp to 50 posts, one per line. Links from x.com or twitter.com work, including ones with /photo/1 or ?s=20 on the end, and so does the bare number. The form opens with one NASA post filled in.
maxItemsPerTweet100How many accounts to take from each post, 1 to 1,000. You pay per account, so this is your budget per post.
sessionCookiesnoneOptional. Your own X account as auth_token=...; ct0=..., both halves. With it, the run reads with your account. Marked secret.
proxyConfigurationnoneOptional, and the form fills in Apify's default. Only change it to send the run through servers of your own.

Anything in tweetUrls that is not a post link or id is skipped and listed in one free BAD_INPUT row. If it looks like a pasted cookie, the row says so without repeating it.

📤 What you get back

One row, trimmed. Here @NASA is one of the accounts that reposted a post by @NASASpox:

{
"recordType": "retweeter",
"tweetId": "2106124556205252700",
"tweetUrl": "https://x.com/NASASpox/status/2106124556205252700",
"tweetRetweetCount": 54,
"userId": "11348282",
"userName": "NASA",
"name": "NASA",
"url": "https://x.com/NASA",
"description": "Making the seemingly impossible, possible.",
"followersCount": 92378917,
"followingCount": 115,
"tweetsCount": 74372,
"mediaCount": 28176,
"likesCount": 17013,
"isVerified": true,
"verifiedType": "government",
"isProtected": false,
"location": "Pale Blue Dot",
"website": "http://www.nasa.gov/",
"profileImageUrl": "https://pbs.twimg.com/profile_images/1321163587679784960/0ZxKlEKB_400x400.jpg",
"createdAt": "2007-12-19T20:20:32.000Z"
}
FieldHow to read it
tweetRetweetCountHow many reposts X counted on that post when the run read it. Compare it with your row count.
positionThe account's place in the list as the run read it, starting at 1.
userIdX's numeric id. It survives a handle change.
verifiedTypeblue, business or government, and null with no tick.
websiteTaken out of the t.co wrapper, so it is the real address. null when there is none.
locationWhatever the person typed as location, and null if blank.
mediaCount, likesCount, verifiedType, isProtected, websiteSome rows have these five as null and the rest of the row as usual. There null means unknown, not zero or false. isVerified is always filled, so use it for the tick.

🧾 Reading the output

Three kinds of row can land in your dataset.

RowHow to spot itBilled
An accountrecordType: "retweeter"yes
The sample rowrecordType: "sample", _sample: trueno
A post that could not be readrecordType: "diagnostic", _diagnostic: true, an errorCodeno

Filter on recordType == "retweeter" and you have your data. Free rows carry charged: false.

CodeWhat it means
NOT_FOUNDX has no such post, or its account is private or suspended.
NO_RESULTSX counts no reposts on the post, or listed nobody.
RATE_LIMITEDX asked the run to slow down. The row says when to try that post again.
SESSION_REFUSEDX turned down the cookie you gave.
BLOCKEDX did not hand over the list this time.
NETWORKThe connection failed while reading that post.
BAD_INPUTEntries in tweetUrls that are not post links or ids.
CHARGE_LIMIT, TIME_LIMIT, RUN_CAPThe run stopped at your spending limit, its time limit or the run's cap.
UNEXPECTED_ERRORSomething broke inside the run. It is not charged.

A post that stopped partway keeps the accounts it already delivered, and the row says how many. The Output tab has a second view, Posts that could not be read, with the columns that explain a free row: the code, what happened and what to do next.

💡 What people use it for

  • You ran a "repost to enter" giveaway and want the entrants with their follower counts and join dates, so the throwaway accounts are easy to spot.
  • A launch post took off and you want to know who carried it, sorted by followersCount.
  • A post on your topic got traction, and the accounts that reposted it are a ready-made list of people who care about that subject.
  • Dozens of brand-new accounts with a handful of followers reposting the same post is a pattern worth seeing in a spreadsheet; createdAt and followersCount show it.

From a viral post to what its biggest reposters say, in three steps:

  1. Run this actor on the post's link.
  2. Sort the rows by followersCount and copy the top userName values.
  3. Put them into Tweet Scraper as twitterHandles to read what each of those accounts posts.

🚧 What it does not do

  • No likes. Since 2024 X shows who liked a post only to its author.
  • No quote posts. Those are a separate list on X.
  • No repost times. X's list does not say when each account reposted.
  • Only what X hands over. On a big post the list can end before X's own count; the row count against tweetRetweetCount shows how far it got. Accounts X will not show are skipped, uncharged.
  • No emails or phone numbers. Only what X puts on a public profile.
  • Limits: 50 posts, 1,000 accounts per post and 5,000 accounts per run.

🧭 Which X scraper do you need?

If you wantUse
Who reposted a postThis one
The accounts that follow a handle, or that it followsX (Twitter) Followers Scraper
Tweets matching a keyword or an advanced searchTwitter (X) Search Scraper
A profile's timeline, or single tweets by linkTweet Scraper
Follower counts, bio and verification for handles you already haveTwitter Profile Scraper
Everything posted into a curated X listTwitter (X) List Scraper

❓ Questions people ask

Do I need an X account or an API key to see who reposted a post?

No. The cookie field is optional and a normal run does not need it.

Why did I get fewer accounts than the repost count?

X decides how much of the list to show. Some accounts come back as "not available" instead of a profile; those are skipped and not charged.

Can I get the accounts that liked a post?

No. X stopped showing that list to anyone but the post's author in 2024.

Does it post, like or follow anything?

No. It only reads.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/twitter-retweeters-scraper. Either way the run happens on your Apify account at the same price.

This reads public profiles and public repost lists, never private accounts or messages. Results can still contain personal data, which GDPR and similar laws cover, so have a reason for collecting it. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Include the post links you used and the run ID, and paste any errorCode you got back, since that usually says what happened straight away.