Twitter/X Engaged Audience Exporter · Replies + Retweeters
Pricing
from $0.45 / 1,000 unique engaged people
Twitter/X Engaged Audience Exporter · Replies + Retweeters
Build a deduplicated audience from public tweet replies and retweets, with explicit relationship edges, bounded profile enrichment, JSON/CSV exports, and honest partial or empty summaries.
Pricing
from $0.45 / 1,000 unique engaged people
Rating
0.0
(0)
Developer
Data Slayer
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
Share
Twitter/X Engaged Audience Exporter
Turn public tweet replies and retweets into a deduplicated audience plus explicit person-to-tweet relationship edges for research, outreach preparation, CRM imports, and engagement analysis.
Watch the demo
YouTube video coming soon.
What this Actor does
Paste up to 25 public X/Twitter post URLs or numeric tweet IDs. The Actor checks replies, retweets, or both, normalizes the public account details it can retrieve, collapses the same person across posts and engagement types, and writes two typed record kinds:
person: one row per unique public account found during the run.engagement_edge: one row per unique account-to-post reply or retweet relationship.
This is different from a raw comments export. A person who replied twice and retweeted the same post appears once in the audience table, while the distinct relationships remain available in the edge table.
Supported engagement types
| Type | Included | Notes |
|---|---|---|
| Replies | Yes | Returns public reply authors and, when available, reply text and thread identifiers. |
| Retweets | Yes | Returns public retweeter accounts. |
| Quotes | No | Quote-author coverage is not part of this version. |
| Likes | No | Liker lists are not part of this version. |
The Actor reports complete, partial, empty, unavailable, and failed tweet outcomes separately. “Complete” means all selected routes reached a normal stopping condition within the configured limits; it is not a claim that X exposes every historical engagement.
Input
| Field | Type | Default | Limits | Purpose |
|---|---|---|---|---|
tweetUrls | string[] | required | 1–25 | Public x.com or twitter.com status URLs, or numeric tweet IDs. Duplicate IDs are processed once. |
engagementTypes | string[] | reply, retweet | one or both | Select the relationship types to collect. |
maxPeoplePerTweet | integer | 250 | 1–1,000 | Bounds each selected engagement type for each input tweet. |
maxUniquePeople | integer | 1000 | 1–5,000 | Global cap after cross-post deduplication. |
includeProfileDetails | boolean | false | — | Add a bounded profile snapshot to unique-person rows. |
maxProfileLookups | integer | 100 | 1–500 | Maximum profile enrichment attempts when enrichment is enabled. |
Free-plan runs are limited to one tweet, 50 unique people, and no profile enrichment. Paid-plan limits follow the values above.
{"tweetUrls": ["https://x.com/apify/status/2021770553154285890","2021770553154285891"],"engagementTypes": ["reply", "retweet"],"maxPeoplePerTweet": 250,"maxUniquePeople": 1000,"includeProfileDetails": false,"maxProfileLookups": 100}
Output
The default dataset contains only paid value records. Run status and diagnostics are stored in the default key-value store under OUTPUT; status records are never inserted as billable dataset items.
Unique-person row
{"recordType": "person","personKey": "id:44196397","userId": "44196397","username": "example_user","name": "Example User","bio": "Public profile biography","profileUrl": "https://x.com/example_user","profileImageUrl": "https://pbs.twimg.com/profile_images/example.jpg","followersCount": 4200,"followingCount": 380,"verified": false,"blueVerified": false,"engagementTypes": ["reply", "retweet"],"sourceTweetIds": ["2021770553154285890"],"sourceTweetUrls": ["https://x.com/i/status/2021770553154285890"],"edgeCount": 2,"firstEngagedAt": "2026-09-20T11:23:45Z","lastEngagedAt": "2026-09-20T11:23:45Z","profile": null,"enrichmentStatus": "not_requested","collectedAt": "2026-09-21T00:00:00Z"}
Engagement-edge row
{"recordType": "engagement_edge","edgeId": "4e3a8ca84184ce3ea62d8d02be9f14ea","sourceTweetId": "2021770553154285890","sourceTweetUrl": "https://x.com/i/status/2021770553154285890","personKey": "id:44196397","userId": "44196397","username": "example_user","engagementType": "reply","engagementTweetId": "2021770553154285999","engagementTweetUrl": "https://x.com/i/status/2021770553154285999","parentTweetId": "2021770553154285890","conversationId": "2021770553154285890","text": "Useful launch notes—thanks for sharing.","engagedAt": "2026-09-20T11:23:45Z","replyDepth": 1,"collectedAt": "2026-09-21T00:00:00Z"}
null means the field was not available for that account or relationship. Counts are numbers when available. JSON arrays remain arrays; CSV exports flatten nested fields according to Apify’s export rules.
Run summary and failure behavior
Open the OUTPUT record in the run’s key-value store to see:
- accepted and duplicate input counts;
- complete, partial, empty, and failed tweet counts;
- successful and failed engagement-type checks;
- unique people and edges found versus saved;
- deduplicated edge count;
- profile enrichment outcomes;
- reached limits and stable functional error codes.
A private, deleted, or unavailable tweet is not presented as a successful empty result. If one selected engagement type works and another does not, the tweet is marked partial and usable records from the successful type remain available. Transient rate limits, timeouts, and service errors receive bounded retries. Repeated cursors terminate safely.
Pricing
This Actor uses pay-per-event pricing:
- one Actor-start event per run;
- one tweet-scan event only when at least one selected engagement source is successfully checked, including a valid empty result;
- one unique-person event per saved
personrow; - one edge event per saved
engagement_edgerow; - one profile-enrichment event only when optional profile details are successfully returned and added.
Failed lookups and status summaries are not billed as dataset results. Use Apify’s maximum-charge setting plus maxPeoplePerTweet, maxUniquePeople, and maxProfileLookups to control spend.
Common workflows
- Build a deduplicated launch-engager list from several campaign tweets.
- Join reply text to public account identities for sentiment or moderation analysis.
- Separate people who replied from people who retweeted.
- Load unique people into a CRM while retaining auditable source-post edges.
- Schedule repeated exports and compare snapshots downstream using stable tweet, user, and edge IDs.
Limitations and responsible use
- Only public data that is available at run time can be returned.
- Coverage can vary by post age, visibility, account privacy, deletion, and platform behavior.
- Limits prevent unbounded collection; a successful bounded run is not a completeness guarantee.
- This version does not return likes/likers or quote authors.
- This Actor is independent and is not affiliated with or endorsed by X Corp.
- Public profile and engagement data can still be personal data. You are responsible for a lawful purpose, data minimization, retention, and honoring applicable privacy and platform rules.
API and automation
Run the Actor from Apify Console, the Apify API, schedules, webhooks, or integrations. Results are available as JSON, CSV, Excel, and other dataset export formats supported by Apify. Filter recordType == "person" for the deduplicated audience and recordType == "engagement_edge" for the relationship graph.
Support
Open an issue on the Actor page with the run ID, the affected tweet ID, and the functional error code from OUTPUT. Do not post private credentials or personal access tokens.
FAQ
How much does it cost to run this Actor? Pricing is listed in the Pricing section above, charged per row returned. You only pay for the rows the Actor actually produces, so a small test run costs cents.
Do I need cookies or a login? No. This Actor reads public data only - no cookies, no account, no browser automation.
Can I schedule it? Yes. Run it from the Apify API, on a schedule, or via a webhook, and export results as JSON, CSV or Excel.
What if I need a slightly different output? Open an issue on the Actor's Issues tab describing the shape you need.
Related actors
More Twitter actors from the same portfolio. Apify only auto-recommends actors in the same category, so here are the rest of ours: