Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
X (Twitter) Retweeters Scraper icon

X (Twitter) Retweeters Scraper

Export the accounts that retweeted any X (Twitter) post, with bio, follower counts, verification, location and join date. Paste post links or IDs.

18 runs on Apify $0.00014 per retweeter ($0.14 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust tweetUrls, maxItemsPerTweet, sessionCookies (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.00014 per retweeter = $0.14 per 1,000

You are charged forWhenPrice
RetweeterOne account that reposted the post, returned in the dataset. Notes and the sample row are not charged.$0.00014

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-10-03, and they are what you are actually charged.

Inputs

FieldWhat it doesType
tweetUrlsThe X posts whose reposters you want, one per line. A link such as https://x.com/NASA/status/2105417506991091764 works, from x.com or twitter.com, and so does the number at the end of it on its own. Up to 50 posts in one run.array
maxItemsPerTweetEach post stops after this many accounts. Left empty, it is 100. Every account is one charged row, so this also caps what one post can cost you.integer
sessionCookiesOptional. Put your own X account's cookie here and the run reads with your account. In Chrome, signed in to x.com: press F12, open Application, then Cookies, then https://x.com, and copy the values of auth_token and ct0. Enter them as one line in a list, like ["auth_token=1a2b3c...; ct0=4d5e6f..."]. Use an account you own and may automate; a spare account is safer than your main one. The value is stored encrypted.array

What you get

A structured dataset — each result includes fields like:

recordTypetweetIdpositionuserNamenamefollowersCountisVerifiedlocationdescriptionurlerrorCodetweetUrlerrornote

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

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.

Is scraping X legal?

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.