# X (Twitter) Scraper: Posts, Followers, Emails | No Login (`pro100chok/x-twitter-all-in-one-scraper`) Actor

All-in-one X (Twitter) scraper: search posts, profiles, followers, following, replies, likers, reposters, quotes, lists, communities, leads and trends. Advanced search filters, e-mail finder and deep pagination. Pay per result. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/pro100chok/x-twitter-all-in-one-scraper.md
- **Developed by:** [Raven](https://apify.com/pro100chok) (community)
- **Categories:** Social media, Lead generation, Automation
- **Stats:** 6 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.14 / 1,000 posts

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## X (Twitter) Scraper — Posts, Profiles, Followers, Replies & Emails

Scrape **X (Twitter)** posts, profiles, followers, replies, likers, reposters, quotes, lists, communities and trends — **from $0.14 per 1,000 results**. Nine modes in one Actor, an advanced-search query builder, an e-mail finder and cursor pagination that reaches the end of a timeline. **No X login, no API key, no code, no proxies to configure.**

![X (Twitter) scraper — posts, profiles, followers, replies, trends and emails in one Actor](https://raw.githubusercontent.com/PRO100CHOK/apify-readme-assets/main/x-twitter-all-in-one-scraper/hero.png)

<table>
<tr>
<td colspan="4" style="padding:10px 14px;background:#1D9BF0;border:none;border-radius:4px 4px 0 0">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">Raven &middot; Social media scrapers</span>
<span style="color:#BFE3FB;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;X &middot; Threads &middot; Instagram &middot; Reddit &middot; TikTok &middot; YouTube</span>
</td>
</tr>
<tr>
<td style="background:#E1F2FD;padding:10px 12px;border:1px solid #E4E4E7;border-top:none;border-right:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-xceXp1af5loSHSbgu-MR4B1GPIwz-38055b58-9488-43f1-b6c4-08f40fda9976.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/pro100chok/x-twitter-all-in-one-scraper" style="color:#0B6FB0;text-decoration:none;font-weight:700;font-size:13px">X&nbsp;(Twitter)</a></span><br>
<span style="color:#0B6FB0;font-size:11px;font-weight:600">&#10148; You are here</span>
</td>
<td style="background:#F2F9FE;padding:10px 12px;border:1px solid #E4E4E7;border-top:none;border-right:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-ghOKnIbTDC0SWZw8d-u6S7UJLN3o-Gemini_Generated_Image_67uo2167uo2167uo.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/pro100chok/threads-scraper-usage" style="color:#18181B;text-decoration:none;font-weight:700;font-size:13px">Threads</a></span><br>
<span style="color:#71717A;font-size:11px">Posts, profiles, replies</span>
</td>
<td style="background:#F2F9FE;padding:10px 12px;border:1px solid #E4E4E7;border-top:none;border-right:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-7fyOP12UzHR5Zlnc5-dmuwhmDVDL-31c88c54-bc51-4767-8869-e9ce3ea0ae19.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/pro100chok/instagram-scraper-all-in-one" style="color:#18181B;text-decoration:none;font-weight:700;font-size:13px">Instagram</a></span><br>
<span style="color:#71717A;font-size:11px">Profiles, posts, reels, comments</span>
</td>
<td style="background:#F2F9FE;padding:10px 12px;border:1px solid #E4E4E7;border-top:none;vertical-align:top;width:25%">
<span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-Uj3ZMPy7TF7mva0cS-PQKMvMQ1RE-45304cad-3e49-4813-9159-c5068e73bdf3.png" width="20" height="20" style="vertical-align:middle;border-radius:4px"> &nbsp;<a href="https://apify.com/pro100chok/reddit-scraper-all-in-one" style="color:#18181B;text-decoration:none;font-weight:700;font-size:13px">Reddit</a></span><br>
<span style="color:#71717A;font-size:11px">Posts, comments, media, leads</span>
</td>
</tr>
</table>

### What does this X (Twitter) Scraper do?

It is an **unofficial X (Twitter) API alternative**: you give it keywords, @handles, post links or list URLs, and it returns clean, structured JSON — the same data a signed-in person sees on x.com, without the developer portal, the billing tiers or the per-endpoint quotas.

Most X scrapers on the store do exactly one job — tweets, or followers, or trends. This one replaces the shelf:

| Mode | What you put in | What comes back |
|---|---|---|
| **Search posts** | keywords or a full advanced-search query | posts matching the query, newest first or top-ranked |
| **Profiles** | usernames or profile URLs | one row per account, 40+ fields, e-mails optional |
| **Posts from profiles** | usernames or profile URLs | posts, replies, media, likes, highlights or articles |
| **Post + replies** | post URLs or ids | the post plus the reply thread under it |
| **Post engagement** | post URLs or ids | who reposted it, who liked it, who quoted it |
| **Followers / following** | usernames or profile URLs | followers, following, verified followers, mutuals, paid subscribers |
| **List** | `x.com/i/lists/<id>` | the list's posts, or every account on it |
| **Community** | `x.com/i/communities/<id>` | the community's posts or its members |
| **Trends** | a region, or nothing at all | trending topics with rank, category and post volume |

You can paste `@handle`, `handle`, `https://x.com/handle`, a `twitter.com` link, a post URL, a bare numeric id or a plain keyword — the Actor reads it the way the selected mode means it.

### Why use this X scraper instead of the official X API?

- ✅ **Nine modes in one Actor** — no stitching four subscriptions together.
- ✅ **One row per post or per account**, flat fields that survive a CSV export.
- ✅ **95 documented output fields** across posts, profiles and trends.
- ✅ **Long posts arrive complete** — not truncated at the old character limit.
- ✅ **Quoted and reposted originals are nested in full**, so you never re-fetch them.
- ✅ **Media with direct file URLs** — photos, GIFs, and the highest-bitrate MP4 for videos.
- ✅ **E-mail finder** reads addresses out of bios and the site a profile links to, including `name (at) domain (dot) com` spellings.
- ✅ **"About this account"** — the country an account is based in, where it signed up from, and how many times the username changed.
- ✅ **Deep pagination** — ask for 10,000 followers and the cursors are walked to the end, de-duplicated.
- ✅ **Results stream as they arrive** — abort a long run and everything collected so far is already saved.
- ✅ **Failed inputs never become rows and are never charged.**

#### How this Actor compares

| | Official X API | Typical X scrapers | This Actor |
|---|---|---|---|
| **Price per 1,000 posts** | ❌ $5.00 (pay-per-use, $0.005 per post read) | ⚠️ $0.15–$0.40 | ✅ **$0.20 free plan, $0.14 paid** |
| **Free tier** | ❌ Discontinued | ⚠️ Usually capped at 5–20 items | ✅ $5 monthly Apify credits |
| **Setup** | ❌ Developer account, app, OAuth keys | ⚠️ Often needs your cookies or a third-party key | ✅ Nothing — press Start |
| **Coverage** | ⚠️ Posts and users; no likers, no trends | ⚠️ Usually one job per Actor | ✅ 9 modes |
| **Followers / likers / reposters** | ❌ Not on pay-per-use | ⚠️ Separate paid Actor | ✅ Included |
| **E-mail discovery** | ❌ No | ⚠️ Rare | ✅ Built in |
| **Export** | ⚠️ JSON only | ✅ JSON, CSV, Excel | ✅ JSON, CSV, Excel, XML, HTML, RSS |

X's own API moved to pay-per-use in February 2026: **$0.005 per post read**, a 2,000,000-read monthly ceiling, and no free tier. The $200 Basic and $5,000 Pro plans are closed to new signups, and above the ceiling the only option is Enterprise. At $0.005 a read, 1,000 posts cost **$5.00** — this Actor returns the same 1,000 posts for **$0.20**, or **$0.14** on a paid Apify plan.

The official API is still the right tool if you need to **post** to X, or need a real-time filtered stream. For reading public data at scale, it is 25–36× the price.

### What data can you extract from X (Twitter)?

#### Post fields

| Field | What it is |
|---|---|
| `id`, `url`, `text`, `lang`, `createdAt`, `source` | identity, full text (long posts included), language, timestamp, posting app |
| `replyCount`, `repostCount`, `likeCount`, `quoteCount`, `bookmarkCount`, `viewCount` | the six engagement counters X exposes |
| `conversationId`, `isReply`, `inReplyToId`, `inReplyToUserId`, `inReplyToUsername` | thread position |
| `isQuote`, `quotedPostId`, `quotedPostUrl`, `quotedPost` | the quoted post, nested in full |
| `isRepost`, `repostedPost` | the original of a repost, nested in full |
| `hashtags`, `cashtags`, `mentions`, `links` | entities, with t.co links already expanded |
| `media` | `type`, `url`, `videoUrl`, `hlsUrl`, `width`, `height`, `durationMs`, `altText`, `bitrate` |
| `card` | link preview title, description, domain, image — and `card.poll` with vote counts |
| `place`, `community`, `communityNote` | geotag, community context, Community Note |
| `isLongPost`, `isEdited`, `editableUntil`, `isPinned`, `isThreadPart`, `possiblySensitive` | post state |
| `author` | nested account block: username, name, bio, followers, following, counts, verification |

#### Profile fields

| Field | What it is |
|---|---|
| `id`, `username`, `url`, `name`, `description`, `descriptionLanguage`, `location` | identity and bio |
| `website`, `descriptionLinks` | outbound links, expanded from t.co |
| `emails` | addresses found in the bio and, optionally, on the linked site |
| `followers`, `following`, `postsCount`, `mediaCount`, `likesCount`, `highlightsCount` | audience and output |
| `creatorSubscribersCount`, `affiliatesCount` | paid subscribers and affiliated accounts |
| `isVerified`, `isBlueVerified`, `verifiedType`, `isIdentityVerified`, `verifiedSince`, `verifiedReason` | the full verification picture |
| `isVerifiedOrganization`, `affiliateLabel`, `affiliateUrl`, `affiliateBadge` | organisation and affiliate badges |
| `profilePicture`, `coverPicture`, `profileImageShape` | avatar at full resolution, banner |
| `createdAt`, `pinnedPostIds`, `isProtected`, `possiblySensitive`, `canDm`, `canMediaTag` | account state |
| `professionalType`, `professionalCategories`, `parodyLabel`, `withheldInCountries` | account classification |
| `about` | `accountBasedIn`, `createdCountry`, `connectedVia`, `usernameChanges`, `usernameLastChangedAt` |
| `relation`, `relationOf` | how the account relates to your input — `follower`, `following`, `like`, `repost` |

#### Trend fields

`name`, `url`, `postCount`, `category`, `groupedTrends`, `rank`, `location`. Paid placements are filtered out, so every row is an organic trend.

### How to scrape X (Twitter) step by step

1. **Open the Actor** and click **Try for free**. Every new Apify account gets **$5 in free credits each month** — no credit card needed.
2. **Pick what to scrape** in the first field: Search posts, Profiles, Followers / following, and so on.
3. **Fill the list below it** with your keywords, @handles, profile URLs, post links or list URLs.
4. **Set Max results per entry.** This is per keyword and per profile, not per run — three keywords at 100 each returns up to 300 rows.
5. **Press Start.** Rows appear within seconds and keep streaming.
6. **Download** from the Storage tab as JSON, CSV, Excel, XML, HTML or RSS — or read the dataset straight from the API.

That is the whole form. The search filters are optional, and the extra data — the "About this account" panel, e-mail addresses, the search term on every row — is on from the start.

### How to use X advanced search without learning the syntax

Search mode accepts X's full advanced-search language, and it also builds it for you. Set **Minimum likes**, **Posted after**, **Language**, **Only posts with video**, **Only verified accounts** — and the Actor compiles them into a proper query.

Operators you type yourself are kept as they are, so both of these work:

- form fields: `minLikes: 100`, `onlyVideo: true`, `start: 2026-01-01`
- raw operators in the list: `apify (scraping OR crawling) -filter:replies lang:en`

Supported through the form: `from:`, `to:`, `@`, `since:`, `until:`, `lang:`, `min_faves:`, `min_retweets:`, `min_replies:`, `filter:verified`, `filter:blue_verified`, `filter:media`, `filter:images`, `filter:videos`, `filter:native_video`, `filter:links`, `filter:quote`, `filter:spaces`, `filter:news`, `filter:safe`, `filter:hashtags`, `filter:mentions`, `-filter:replies`, `-filter:nativeretweets`, `near:`, `within:`, `geocode:`, `list:`, `conversation_id:`.

### How to find e-mail addresses on X profiles

Turn on **Find e-mail addresses** in the Extra data section. For every account returned, the Actor:

1. reads the bio, the display name and the expanded bio links for addresses;
2. follows the profile's own website link once and reads the page;
3. understands obfuscated spellings such as `hello (at) brand (dot) com`.

It works in every mode that returns accounts — including **Followers / following**, which turns a competitor's audience into a contact list. Addresses found on a linked site are billed as a separate event and only when one is actually found; addresses already visible in the bio cost nothing extra.

### How to get more than the first page

Every mode walks X's cursors to the end of the data and de-duplicates as it goes — set **Max results per entry** to `10000` and you get 10,000 rows, not the first 20.

**Several entries are read at once.** A run opens up to five X sessions, each on its own
account and its own address, and they take entries off one shared queue — so a list of
profiles or keywords is worked through about five times faster than one session could, and
a lane that draws short entries comes back for more instead of idling. Nothing to set up:
it happens whenever the list has more than one entry.

Two limits are X's, not ours, and no scraper can go past them:

- a profile timeline stops at roughly the **last 3,200 posts**; use **Search posts** with a date range to reach older ones;
- **search** has a per-window request quota. When it is hit, the Actor waits for the window to reset if that is quick, and otherwise finishes the target with what it has and says so in the log.

### Input parameters

| Field | Type | Default | What it does |
|---|---|---|---|
| `scrapeType` | string | `search` | Pick what you want. This also decides what goes into the list below. |
| `targets` | array |  | One list for every mode — what you put in it depends on the choice above: |
| `maxItems` | integer | `100` | Maximum number of results for each entry in the list above — per keyword, per profile or per post. Set 0 for n … |
| `searchType` | string | `latest` | For Scrape Type: Search posts. `Latest` returns newest first and goes deepest, `Top` returns what X ranks high … |
| `postsFrom` | string | `posts` | For Scrape Type: Posts from profiles. Which tab of the profile to read. |
| `connectionType` | string | `followers` | For Scrape Type: Followers / following. Which set of accounts to collect. |
| `engagementType` | string | `reposters` | For Scrape Type: Post engagement. Reposters and likers come back as accounts; quotes come back as posts. |
| `listContent` | string | `posts` | For Scrape Type: List. Whether to return the list's posts or the accounts on it. |
| `communityContent` | string | `posts` | For Scrape Type: Community. Whether to return the community's posts or its members. |
| `fromUsers` | array |  | Restrict a search to posts written by these usernames. Adds `from:` to the query. |
| `toUsers` | array |  | Restrict a search to replies addressed to these usernames. Adds `to:` to the query. |
| `mentioningUsers` | array |  | Restrict a search to posts that mention these usernames. |
| `start` | string |  | Only posts published on or after this date, as YYYY-MM-DD. |
| `end` | string |  | Only posts published before this date, as YYYY-MM-DD. |
| `tweetLanguage` | string |  | For Scrape Type: Search posts. Keeps only posts X detected as written in this language, picked from a list. |
| `minLikes` | integer |  | Only posts with at least this many likes. |
| `minRetweets` | integer |  | Only posts with at least this many reposts. |
| `minReplies` | integer |  | Only posts with at least this many replies. |
| `onlyVerifiedUsers` | boolean | `false` | Only posts from accounts with a verification badge. |
| `onlyTwitterBlue` | boolean | `false` | Only posts from accounts subscribed to X Premium. |
| `onlyMedia` | boolean | `false` | Only posts that carry an image, a video or a GIF. |
| `onlyImage` | boolean | `false` | Only posts that carry at least one image. |
| `onlyVideo` | boolean | `false` | Only posts that carry a video. |
| `onlyLinks` | boolean | `false` | Only posts that link out to another site. |
| `onlyQuote` | boolean | `false` | Only posts that quote another post. |
| `excludeReplies` | boolean | `false` | Drop replies from the results and keep standalone posts only. |
| `excludeReposts` | boolean | `false` | Drop reposts from the results and keep original posts only. |
| `geoNear` | string |  | Only posts sent near a place, e.g. `London`. Combine with the radius below. |
| `geoWithin` | string |  | Radius around the place above, e.g. `15mi` or `25km`. |
| `inList` | string |  | Restrict a search to the members of an X list, given as the list id. |
| `includeAbout` | boolean | `true` | Adds the panel X shows under the profile: the country the account is based in, where it signed up from, how ma … |
| `findEmails` | boolean | `true` | Reads contact addresses out of the bio and, when the profile links to a site, off that page too. Addresses wri … |
| `includeReplies` | boolean | `true` | For Scrape Type: Post + replies. Off returns just the post itself, which is one request instead of many. |
| `includeSearchTerms` | boolean | `true` | For Scrape Type: Search posts. Adds the keyword and the compiled query to every row, which makes multi-keyword … |
| `language` | string | `en` | Language X answers in, picked from the list of 50 X supports. It shows up in labels and in the trends region; … |
| `useOurAccounts` | boolean | `true` | Run with a logged-in X session from our own account pool — no cookies needed from you. Each account is leased  … |
| `cookies` | string |  | Optional — only needed if you prefer your own session over ours (it takes priority when set). Paste it in any  … |

### Ready-to-paste input recipes

#### Track a keyword with an engagement floor

```json
{
  "scrapeType": "search",
  "targets": ["web scraping", "\"data extraction\""],
  "searchType": "latest",
  "maxItems": 1000,
  "minLikes": 10,
  "tweetLanguage": "en",
  "excludeReplies": true,
  "includeSearchTerms": true
}
```

#### Pull a profile's whole timeline for a date range

```json
{
  "scrapeType": "search",
  "targets": ["from:NASA"],
  "searchType": "latest",
  "maxItems": 5000,
  "start": "2026-01-01",
  "end": "2026-06-30"
}
```

#### Build a contact list from a competitor's followers

```json
{
  "scrapeType": "connections",
  "targets": ["https://x.com/apify"],
  "connectionType": "followers",
  "maxItems": 5000,
  "findEmails": true
}
```

#### Read a post and everyone who amplified it

```json
{
  "scrapeType": "postEngagement",
  "targets": ["https://x.com/apify/status/2087572956683567110"],
  "engagementType": "reposters",
  "maxItems": 2000
}
```

#### Get a post with its full reply thread

```json
{
  "scrapeType": "postDetail",
  "targets": ["https://x.com/apify/status/2087572956683567110"],
  "includeReplies": true,
  "maxItems": 500
}
```

#### Enrich a list of accounts with bios, counts and e-mails

```json
{
  "scrapeType": "profile",
  "targets": ["apify", "@NASA", "https://x.com/github"],
  "includeAbout": true,
  "findEmails": true
}
```

#### Watch an X List and the videos posted in it

```json
{
  "scrapeType": "list",
  "targets": ["https://x.com/i/lists/1585430245762441216"],
  "listContent": "posts",
  "maxItems": 500
}
```

#### Today's trends

```json
{
  "scrapeType": "trends",
  "targets": ["worldwide", "news", "sports"],
  "maxItems": 50
}
```

### Output examples

#### A post

```json
{
  "type": "post",
  "id": "2101017747249344961",
  "url": "https://x.com/mucker/status/2101017747249344961",
  "text": "Four AI builders. One prompt. Built live.\n\nPetros Hong (@apify), RJ Moscardon (AI_Migos), @AlexCinovoj (TechTide AI) & Chris Sheng (LeadrPro) go head-to-head\n\nNo polished demos. Just live building.\n\nRSVP: https://t.co/VPlXRt4wRq",
  "lang": "en",
  "createdAt": "2026-09-18T18:37:20Z",
  "source": "Twitter Web App",
  "replyCount": 0,
  "repostCount": 0,
  "likeCount": 0,
  "quoteCount": 0,
  "bookmarkCount": 0,
  "viewCount": 73,
  "conversationId": "2101017747249344961",
  "isReply": false,
  "possiblySensitive": false,
  "editableUntil": "2026-09-18T19:37:20Z",
  "mentions": [
    { "username": "apify", "id": "3510729917" },
    { "username": "AlexCinovoj", "id": "1900642474755801088" }
  ],
  "links": [
    { "url": "https://partiful.com/e/LYw0DkfxLT1XVqROaDCf", "displayUrl": "partiful.com/e/LYw0DkfxLT1X…" }
  ],
  "media": [
    { "type": "photo", "id": "2101017225222057984", "url": "https://pbs.twimg.com/media/….jpg", "width": 1600, "height": 900 }
  ],
  "author": {
    "id": "1553780000000000000",
    "username": "mucker",
    "name": "Mucker",
    "followers": 3241,
    "isBlueVerified": true
  },
  "scrapedAt": "2026-09-18T20:48:11Z"
}
```

#### A profile

```json
{
  "type": "user",
  "id": "3510729917",
  "username": "apify",
  "url": "https://x.com/apify",
  "name": "Apify",
  "description": "Thousands of Actors to automate your business, get real-time web data, and integrate your apps and agents.",
  "descriptionLanguage": "en",
  "location": "The Interwebz",
  "website": "https://apify.com",
  "descriptionLinks": ["http://apify.com", "http://mcp.apify.com", "http://github.com/apify"],
  "createdAt": "2015-09-01T08:38:01Z",
  "followers": 15862,
  "following": 300,
  "postsCount": 4891,
  "mediaCount": 1230,
  "likesCount": 4376,
  "highlightsCount": 48,
  "affiliatesCount": 3,
  "isBlueVerified": false,
  "verifiedType": "Business",
  "verifiedSince": "2024-01-12T16:54:11Z",
  "verifiedReason": "This account is verified because it's an official organization on X.",
  "isProtected": false,
  "profilePicture": "https://pbs.twimg.com/profile_images/2036008913192316928/yuW3cobE.png",
  "coverPicture": "https://pbs.twimg.com/profile_banners/3510729917/1784551662",
  "pinnedPostIds": ["2087572956683567110"],
  "professionalType": "Business",
  "about": {
    "accountBasedIn": "Czechia",
    "locationAccurate": true,
    "connectedVia": "Web",
    "usernameChanges": 3
  },
  "scrapedAt": "2026-09-18T20:51:02Z"
}
```

#### A trend

```json
{
  "type": "trend",
  "name": "Resident Evil",
  "url": "https://x.com/search?q=Resident%20Evil&src=trend_click",
  "category": "Gaming · Trending",
  "postCount": 42100,
  "rank": 1,
  "location": "worldwide",
  "scrapedAt": "2026-09-18T20:51:21Z"
}
```

### How much does it cost to scrape X (Twitter)?

Pay per result. You are charged for the rows you actually receive, and nothing else.

| Event | Free plan | Paid plans |
|---|---|---|
| **Post** — one post row | $0.20 / 1,000 | **from $0.14 / 1,000** |
| **Profile** — one account row | $0.20 / 1,000 | **from $0.14 / 1,000** |
| **Trend** — one trending topic | $0.20 / 1,000 | **from $0.14 / 1,000** |
| **E-mail found** — only when a linked site yields an address | $0.20 / 1,000 | **from $0.14 / 1,000** |
| **Actor start** — once per run | $0.001 | $0.0001 |

**Worked examples** (start fee included):

| What you scrape | Results | Cost (free plan) | Cost (paid plan) |
|---|---|---|---|
| A keyword search | 1,000 posts | **$0.20** | **$0.14** |
| A profile's whole timeline | 3,200 posts | **$0.64** | **$0.45** |
| An account's followers | 10,000 accounts | **$2.00** | **$1.40** |
| A post and its reply thread | 500 posts | **$0.10** | **$0.07** |
| Today's trends | 50 topics | **$0.01** | **$0.01** |

**$5 of free Apify credits ≈ 24,900 results a month**, at no cost and with every feature switched on.

Three things worth knowing:

- **Inputs that return nothing are not charged** and do not become rows. A suspended account or a deleted post is reported in the log, not in your dataset.
- **Bio e-mails are free.** The separate e-mail event is charged only when following a profile's own link is what produced the address.
- **The price is all-in.** There is no start fee beyond the one above, no per-query fee and no separate line for anything else.

Cap a run before you start it with **Max results per entry**, or set a hard ceiling with Apify's **Max total charge** on the run.

### Integrations

The Actor runs on Apify, so everything on the platform works with it out of the box:

- **Make**, **Zapier**, **n8n**, **Google Sheets**, **Slack**, **Airtable**, **GitHub** and [1,000+ other tools](https://docs.apify.com/platform/integrations)
- **Webhooks** to push each finished run into your own endpoint
- **Schedules** for daily or hourly monitoring
- **API clients** for [JavaScript](https://docs.apify.com/api/client/js) and [Python](https://docs.apify.com/api/client/python), plus a plain [REST API](https://docs.apify.com/api/v2)

```bash
curl "https://api.apify.com/v2/datasets/<datasetId>/items?format=csv&clean=true"
```

### Use it with AI agents (MCP)

Every Apify Actor is exposed through the [Apify MCP server](https://mcp.apify.com), so Claude, ChatGPT, Cursor and any other MCP-aware agent can run this scraper as a tool and read the dataset back — no glue code.

Point your agent at `https://mcp.apify.com` and ask it in plain language:

> "Find the 200 most recent English posts about AI agents with at least 50 likes, then pull the profile and e-mail of everyone who posted them."

That is one Search posts run followed by one Profiles run with the e-mail finder on — the agent chains them itself.

### Popular use cases

- **Lead generation** — turn a competitor's followers into a contact list with bios, links and e-mails.
- **Brand and reputation monitoring** — schedule a keyword search and watch mentions, sentiment drivers and the accounts amplifying them.
- **Competitive intelligence** — pull a rival's whole timeline and see which framing they repeat, and which posts actually travel.
- **Influencer research** — verify audience size, verification type, account age and the country an account is based in before you pay anyone.
- **AI, RAG and LLM datasets** — build a clean, de-duplicated corpus of posts on a topic, with full long-post text.
- **Academic and social research** — reproducible date-ranged samples with entities, engagement and thread structure.
- **Finance and cashtag tracking** — follow `$TICKER` chatter and the reposters who spread it.
- **Event and community monitoring** — read an X List or a Community and everyone posting in it.

### Is it legal to scrape X (Twitter)?

Scraping publicly available data is generally legal. This Actor reads only what a signed-in person can see on x.com — it does not touch direct messages, protected accounts or anything else behind a permission wall.

Results can still contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. You are responsible for how you use the output.

Apify's own guide is a good starting point: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

### FAQ

#### Do I need an X (Twitter) API key?

No. There is nothing to register and no developer account to apply for. Press Start.

#### Do I need to log in or paste my cookies?

No. The Actor authenticates itself. If you would rather use your own session you can paste cookies in the Authentication section — any shape works, including just an `auth_token` value — and they take priority.

#### How does this compare to the official X API?

X's API moved to pay-per-use in 2026: $0.005 per post read, capped at 2 million reads a month, with the free tier discontinued and the $200 Basic plan closed to new signups. That is $5.00 per 1,000 posts against $0.20 here, or $0.14 on a paid Apify plan. The official API is still the right choice if you need to post to X or need a real-time filtered stream.

#### Is `maxItems` per run or per input?

Per input entry. Three keywords with `maxItems: 100` returns up to 300 rows.

#### Will I be charged for inputs that return nothing?

No. A suspended account, a deleted post or a query with no matches produces no row and no charge. It is reported in the run log with the input that caused it.

#### Why did I get fewer posts than I asked for?

Either the query genuinely has fewer matches, or you hit one of X's own ceilings — a profile timeline stops at roughly the last 3,200 posts. Use Search posts with a date range to reach further back, and widen the query before scaling a schedule.

#### Can I scrape a private or protected account?

No. Protected accounts are not visible to the Actor, and it will not attempt to access them.

#### Can I export to CSV, Excel or Google Sheets?

Yes. Every run's dataset downloads as JSON, CSV, Excel, XML, HTML or RSS from the Storage tab, and the Google Sheets integration writes it straight into a spreadsheet.

#### Can I get e-mail addresses?

Where accounts publish them, yes. The e-mail finder reads bios and the site a profile links to, including obfuscated `name (at) domain (dot) com` spellings. It cannot reveal an address nobody has published — X does not expose account e-mails.

#### How far back can I search?

X's search index covers the full public archive, so a date range can reach back years. Long ranges are best split into shorter windows, which also keeps each run's result count predictable.

#### Can I schedule this to run daily?

Yes — use Apify **Schedules**, and connect a webhook or the Google Sheets integration so each run lands where you need it.

#### Can an AI agent run this?

Yes. The Actor is available through the [Apify MCP server](https://mcp.apify.com), so any MCP-aware agent can call it and read the results.

#### Do I need my own proxies?

No. Proxying is handled for you and included in the price — there is nothing to configure and nothing to bring.

#### What happens if a run is stopped halfway?

Everything already collected stays in the dataset. Results are pushed as they arrive rather than at the end, so an aborted or timed-out run keeps its data.

#### Which fields can be missing?

Anything an account or post does not have. Empty values are dropped rather than written as `null`, so a row contains only the fields that actually carry data — `media` appears only on posts with attachments, `about` only when you ask for it, `emails` only where an address was found.

### Feedback & support

Found a bug, or need a field that is not there yet? Open an issue on the **Issues** tab of this Actor — it is the fastest route, and it lets you attach the run that went wrong. Feature requests are welcome.

### More scrapers by Raven

**Social media & ads**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-ghOKnIbTDC0SWZw8d-u6S7UJLN3o-Gemini_Generated_Image_67uo2167uo2167uo.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Threads Full Scraper](https://apify.com/pro100chok/threads-scraper-usage)** — Posts, profiles and replies from Threads
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-7fyOP12UzHR5Zlnc5-dmuwhmDVDL-31c88c54-bc51-4767-8869-e9ce3ea0ae19.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Meta Instagram Scraper API](https://apify.com/pro100chok/instagram-scraper-all-in-one)** — Profiles, posts, reels and comments
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-JqqB6QS6amqcpfgE3-BLZ8dE1o0T-5ca2b9db-4363-49b9-839f-c0fc336567a0.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[TikTok Profile API Scraper](https://apify.com/pro100chok/tiktok-profile-pro)** — TikTok profiles with contacts and emails
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-ZgqqqOMdHEIwgTqnj-smOdJXIFrK-fbb7fc8c-edf1-44ae-8f44-ca61ca354c26.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[YouTube Scraper API](https://apify.com/pro100chok/youtube-scraper-all-in-one)** — Videos, shorts, comments and channel emails
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-Uj3ZMPy7TF7mva0cS-PQKMvMQ1RE-45304cad-3e49-4813-9159-c5068e73bdf3.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Reddit Scraper API](https://apify.com/pro100chok/reddit-scraper-all-in-one)** — Posts, comments, media and leads
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-whxpPO8sOs8OF6dd0-3xUlLeWRav-92d40d46-7a32-4031-bf05-04b3338d5b30.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Pinterest Full Scraper](https://apify.com/pro100chok/pinterest-scraper-all-in-one)** — Pins, profiles and boards
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-Z01iuGOkBqJUvTaUn-xpWgbgKXLn-8ae33b0d-b338-4184-a1cd-2565a3f82a98.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Facebook Ads Library Scraper](https://apify.com/pro100chok/meta-ads-library-scraper)** — Facebook and Instagram ad spy
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-r3YXQ95TB2FiMAMDE-axc45dF2Ib-07102fe5-6a1e-49bd-9c3a-673f350ea628.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[RedNote Xiaohongshu 小红书 Scraper API](https://apify.com/pro100chok/rednote-xiaohongshu-scraper)** — Xiaohongshu notes and transcripts

**SEO & lead generation**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-pC8gsptNv2RwJm0QE-W9y7YrikQ2-Gemini_Generated_Image_sweylvsweylvswey.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Ahrefs All-in-One SEO Scraper](https://apify.com/pro100chok/ahrefs-seo-tools)** — DR, backlinks, keywords and traffic
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-9FWL3X6mVI2izVfeJ-4DKlEMxqE4-26ac0cec-e6fd-4020-abbb-d4d8885f3bf1.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Semrush Full API SEO Scraper](https://apify.com/pro100chok/semrush-scraper)** — Traffic, authority, backlinks and keywords
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-aqPbs3KeH9aD8b22w-7uDzdHiNaF-9358b53b-cd06-42f2-bc53-6c5ac7d9558c.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[SimilarWeb Fast Scraper](https://apify.com/pro100chok/similarweb-scraper)** — Website traffic, rankings and analytics
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-1X9ZSt3urlN5pptAO-Nyu91cUNLw-9d50dd18-fb66-400e-85c7-413263018bd8.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Website Contact Scraper](https://apify.com/pro100chok/extract-emails)** — Bulk emails, phones and socials from any site
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-3INlwRjD5teX8k2Xd-7pqry4x2wP-ff4c675d-3247-4187-a7b5-44dde2e01f49.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Google Jobs Scraper](https://apify.com/pro100chok/google-jobs-scraper)** — Job listings with salary and employer contacts

**Reviews & business data**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-w0yugQzf3ETbRbAC2-ehi6JwVR72-ae55cffc-cd6e-481f-bb22-f89a349f7287.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Google Maps Scraper API](https://apify.com/pro100chok/google-maps-scraper)** — Places with emails, reviews and photos
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-lFLILoeJarJWgpyfA-hW3U63Zaih-75495494-6b1c-4365-bb7e-3b0275c76e18.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Trustpilot Reviews Scraper API](https://apify.com/pro100chok/trustpilot-all-in-one-scraper)** — Company reviews, emails and leads
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-Jwxb2NnpjBqbwi3JH-fNreVEhGwW-6078c039-cf2a-4b0c-8915-2a1c8bcf1bcb.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[G2 Scraper](https://apify.com/pro100chok/g2-scraper)** — Software reviews, ratings and leads
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-caoIAzJRQpPYIg12M-tlsdeBufko-c028930e-93b5-4dbf-8c6f-2801f0cdb2ba.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[TripAdvisor Scraper API](https://apify.com/pro100chok/tripadvisor-all-in-one)** — Hotels, restaurants, reviews and emails
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-hf4D1qFJHmE95F7CJ-Hkdhw1Nnc8-783bdfba-34ea-42a8-bbe0-27e63a5e8bd2.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Yelp Scraper API](https://apify.com/pro100chok/yelp-scraper)** — Businesses, reviews and emails

**E-commerce**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-kaoNl8Aod80TyV1eZ-HMK8j1Pfit-6e72a428-ec01-4d5e-b2fa-80fc6313a008.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Amazon Scraper API](https://apify.com/pro100chok/amazon-scraper)** — Products, reviews, sellers and best sellers
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-mBQQG1GlbZlkcetR5-Sp5ocRGs6r-6f2bcafa-1c0e-4c89-9fdc-6efdfb753328.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[AliExpress Scraper API](https://apify.com/pro100chok/aliexpress-scraper)** — Products, variants, reviews and sellers
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-BVortsfndmSNtL0Mq-dikv6hX55m-4b204a93-b28c-4951-aa28-d72b1650900c.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Alibaba Scraper API](https://apify.com/pro100chok/alibaba-scraper)** — Products, suppliers, prices and reviews
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-FzXXmis0AF2EYyyii-3mCXVBAxXh-bc40a62c-b130-486d-b676-ab123126497f.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[TikTok Shop Scraper API](https://apify.com/pro100chok/tiktok-shop-scraper-usage)** — Products, reviews and GMV

**Real estate & travel**

- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-Z8DnUeXHDZ8h3bwz5-2fpYwHzXLj-3464c791-c1e6-4569-be2f-06c9ea795b7f.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Zillow Scraper API](https://apify.com/pro100chok/zillow-scraper-all-in-one)** — Listings, Zestimate and owner leads
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-vness86lujcu7VTrh-ikEhCJzgGf-0553337e-4f6d-48dd-999a-f0a7f03c8804.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Realtor Scraper](https://apify.com/pro100chok/realtor-com-scraper)** — Listings, property data and agent emails
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-2bXBHs5BF7iBki2rV-8EhrRpAVWj-c84534b4-ba6f-4d40-8d93-801e9658109b.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Apartments.com Scraper](https://apify.com/pro100chok/apartments-scraper-usage)** — Rentals, prices and reviews
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-Z2kaPRD9dlPAfA95f-1L0kLtuR9W-cbad1ec4-1b82-437a-bf31-76fc21d4ff5b.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Idealista Scraper API](https://apify.com/pro100chok/idealista-scraper)** — Spain and Italy listings with leads
- <img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/2nh2cdeW87EFLjZmA-actor-ndx8v7vE2UZLdaPh3-q8F89sJ3yV-8b39d8ca-79e9-4e96-aed0-dd8ab344e038.png" width="16" height="16" style="vertical-align:middle;border-radius:3px"> **[Booking Scraper API](https://apify.com/pro100chok/booking-all-in-one-scraper)** — Hotels, reviews, emails and leads

**Tags:** twitter scraper, x scraper, x.com scraper, twitter api alternative, x api alternative, unofficial twitter api, scrape tweets, tweet scraper, twitter data extraction, twitter profile scraper, x profile scraper, twitter followers scraper, extract twitter followers, twitter following scraper, twitter replies scraper, twitter retweeters scraper, twitter likers scraper, quote tweets scraper, twitter list scraper, x community scraper, twitter trends scraper, twitter advanced search, scrape twitter without api key, twitter email scraper, twitter lead generation, social listening, brand monitoring, competitor analysis, influencer research, twitter sentiment analysis, rag dataset, export tweets to csv, twitter scraper python, no login twitter scraper

# Changelog

This Actor's version history is a separate document: https://apify.com/pro100chok/x-twitter-all-in-one-scraper/changelog.md

# Actor input Schema

## `scrapeType` (type: `string`):

Pick what you want. This also decides what goes into the list below.

- **Search posts** — posts matching a keyword or a full advanced-search query
- **Profiles** — one row per account, with bio, counts, links and e-mails
- **Posts from profiles** — a profile's posts, replies, media, likes, highlights or articles
- **Post + replies** — one post and the reply thread under it
- **Post engagement** — who reposted, liked or quoted a post
- **Followers / following** — the people around an account
- **List** — posts or members of an X list
- **Community** — posts or members of an X community
- **Trends** — trending topics

## `targets` (type: `array`):

One list for every mode — what you put in it depends on the choice above:

- **Search posts** → keywords or full queries, e.g. `apify`, `"web scraping" min_faves:10`
- **Profiles**, **Posts from profiles**, **Followers / following** → usernames or profile URLs, e.g. `apify`, `@apify`, `https://x.com/apify`
- **Post + replies**, **Post engagement** → post URLs or ids, e.g. `https://x.com/apify/status/1234567890`
- **List** → `https://x.com/i/lists/<id>`
- **Community** → `https://x.com/i/communities/<id>`
- **Trends** → a location such as `worldwide`, `news`, `sports` (leave empty for your region)

## `maxItems` (type: `integer`):

Maximum number of results for each entry in the list above — per keyword, per profile or per post. Set 0 for no limit (the run then stops when X runs out of results).

## `searchType` (type: `string`):

For Scrape Type: Search posts. `Latest` returns newest first and goes deepest, `Top` returns what X ranks highest, `People` returns accounts instead of posts.

## `postsFrom` (type: `string`):

For Scrape Type: Posts from profiles. Which tab of the profile to read.

## `connectionType` (type: `string`):

For Scrape Type: Followers / following. Which set of accounts to collect.

## `engagementType` (type: `string`):

For Scrape Type: Post engagement. Reposters and likers come back as accounts; quotes come back as posts. Note: X shows the likers of a post only to its author, so Likers comes back empty for other people's posts — use Reposters or Quote posts there.

## `listContent` (type: `string`):

For Scrape Type: List. Whether to return the list's posts or the accounts on it.

## `communityContent` (type: `string`):

For Scrape Type: Community. Whether to return the community's posts or its members.

## `fromUsers` (type: `array`):

Restrict a search to posts written by these usernames. Adds `from:` to the query.

## `toUsers` (type: `array`):

Restrict a search to replies addressed to these usernames. Adds `to:` to the query.

## `mentioningUsers` (type: `array`):

Restrict a search to posts that mention these usernames.

## `start` (type: `string`):

Only posts published on or after this date, as YYYY-MM-DD.

## `end` (type: `string`):

Only posts published before this date, as YYYY-MM-DD.

## `tweetLanguage` (type: `string`):

For Scrape Type: Search posts. Keeps only posts X detected as written in this language.

## `minLikes` (type: `integer`):

Only posts with at least this many likes.

## `minRetweets` (type: `integer`):

Only posts with at least this many reposts.

## `minReplies` (type: `integer`):

Only posts with at least this many replies.

## `onlyVerifiedUsers` (type: `boolean`):

Only posts from accounts with a verification badge.

## `onlyTwitterBlue` (type: `boolean`):

Only posts from accounts subscribed to X Premium.

## `onlyMedia` (type: `boolean`):

Only posts that carry an image, a video or a GIF.

## `onlyImage` (type: `boolean`):

Only posts that carry at least one image.

## `onlyVideo` (type: `boolean`):

Only posts that carry a video.

## `onlyLinks` (type: `boolean`):

Only posts that link out to another site.

## `onlyQuote` (type: `boolean`):

Only posts that quote another post.

## `excludeReplies` (type: `boolean`):

Drop replies from the results and keep standalone posts only.

## `excludeReposts` (type: `boolean`):

Drop reposts from the results and keep original posts only.

## `geoNear` (type: `string`):

Only posts sent near a place, e.g. `London`. Combine with the radius below.

## `geoWithin` (type: `string`):

Radius around the place above, e.g. `15mi` or `25km`.

## `inList` (type: `string`):

Restrict a search to the members of an X list, given as the list id.

## `includeAbout` (type: `boolean`):

Adds the panel X shows under the profile: the country the account is based in, where it signed up from, how many times the username changed and when it was verified. One extra request per profile.

## `findEmails` (type: `boolean`):

Reads contact addresses out of the bio and, when the profile links to a site, off that page too. Addresses written as `name (at) domain.com` are picked up as well.

## `includeReplies` (type: `boolean`):

For Scrape Type: Post + replies. Off returns just the post itself, which is one request instead of many.

## `includeSearchTerms` (type: `boolean`):

For Scrape Type: Search posts. Adds the keyword and the compiled query to every row, which makes multi-keyword runs easy to split afterwards.

## `language` (type: `string`):

Language X answers in. It shows up in labels, in the trends region and in anything X writes itself; the posts come back in whatever language they were written.

## `useOurAccounts` (type: `boolean`):

Run with a logged-in X session from our own account pool — no cookies needed from you. Each account is leased to one run at a time and returned to the pool afterwards. Your own cookies below always take priority.

## `cookies` (type: `string`):

Optional — only needed if you prefer your own session over ours (it takes priority when set). Paste it in any shape: the JSON array from a cookie-export extension, a `name=value; name=value` cookie header, or just the `auth_token` value on its own. Everything else is worked out from it.

## Actor input object example

```json
{
  "scrapeType": "search",
  "targets": [
    "apify"
  ],
  "maxItems": 100,
  "searchType": "latest",
  "postsFrom": "posts",
  "connectionType": "followers",
  "engagementType": "reposters",
  "listContent": "posts",
  "communityContent": "posts",
  "onlyVerifiedUsers": false,
  "onlyTwitterBlue": false,
  "onlyMedia": false,
  "onlyImage": false,
  "onlyVideo": false,
  "onlyLinks": false,
  "onlyQuote": false,
  "excludeReplies": false,
  "excludeReposts": false,
  "includeAbout": true,
  "findEmails": true,
  "includeReplies": true,
  "includeSearchTerms": true,
  "language": "en",
  "useOurAccounts": true
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `posts` (type: `string`):

No description

## `profiles` (type: `string`):

No description

## `contacts` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "targets": [
        "apify"
    ],
    "maxItems": 100,
    "includeAbout": true,
    "findEmails": true,
    "includeSearchTerms": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("pro100chok/x-twitter-all-in-one-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "targets": ["apify"],
    "maxItems": 100,
    "includeAbout": True,
    "findEmails": True,
    "includeSearchTerms": True,
}

# Run the Actor and wait for it to finish
run = client.actor("pro100chok/x-twitter-all-in-one-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "targets": [
    "apify"
  ],
  "maxItems": 100,
  "includeAbout": true,
  "findEmails": true,
  "includeSearchTerms": true
}' |
apify call pro100chok/x-twitter-all-in-one-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,pro100chok/x-twitter-all-in-one-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/xceXp1af5loSHSbgu/builds/VOYijFboSxqv5sdwT/openapi.json
