# X (Twitter) Scraper Unlimited – No Limits (`data_minds/twitter-x-scraper-unlimited-no-limits`) Actor

Scrape X (Twitter) posts, profiles, articles and threads with no login or cookies. Get text, likes, views, author, media and profile analytics from links, handles or search terms. Bulk input, advanced filters, auto proxy fallback. Export JSON, CSV or Excel for social listening.

- **URL**: https://apify.com/data_minds/twitter-x-scraper-unlimited-no-limits.md
- **Developed by:** [Data Minds](https://apify.com/data_minds) (community)
- **Stats:** 2 total users, 2 monthly users, 92.9% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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 Unlimited – No Limits** is an Apify Actor and **Twitter scraper** that extracts posts, profiles, X Articles, threads and profile analytics from X links, handles, search terms and post ids. No login, cookies or API key needed. Export JSON, CSV or Excel for lead generation, monitoring and research, from **$0.002 per result on the Gold plan** ($0.003 on the Free plan). [🚀 Try it free](https://apify.com/data_minds/twitter-x-scraper-unlimited-no-limits)

### What can this Twitter scraper do?

- ✅ **Bulk input in one run** - a Twitter bulk scraper for profile links, post links, article links, search links, handles, search terms and post ids.
- 🔍 **Search with advanced operators** - Twitter search by keyword with from:, to:, lang:, since:, until:, min_faves:, min_retweets:, min_replies: and filter: phrases.
- 👤 **Profile rows and account search** - bios, follower counts and contact data from the bio, plus finding accounts by topic.
- 📊 **Engagement and analytics** - the Twitter engagement rate per post and an optional analytics row per profile.
- 🔑 **A Twitter API alternative** - no key, login or cookies, and pay per result.
- 🧵 **Threads, articles and reply chains** - full X Article text, thread position and the reply chain above a post.
- 🧰 **Filters before you pay** - date range, language, minimum likes, reposts, replies and views, verified authors, media and quote posts.
- 🔌 **Export and integrations** - JSON, CSV, Excel, API, schedules and webhooks through Apify.

Scrape tweets by keyword or hashtag. It works as a Twitter keyword scraper and a Twitter hashtag scraper. Use it as a Twitter crawler or Twitter extractor. It covers Twitter data collection and Twitter data extraction. Profile rows make it a Twitter user scraper. You can scrape Twitter data and scrape X data the same way. It is also a Twitter scraping tool for Twitter trend analysis.

#### What data can I extract from X?

The scraper reads public data from [X](https://x.com). Each profile row has the Twitter followers count. It also has Twitter bio email data when the bio shows one. You can find Twitter verified accounts with a filter. Rows come in four types: `tweet` (a post), `user` (a profile), `profileStats` (analytics for one profile) and `error` (an input that gave no result).

| Field | Description |
|---|---|
| 🏷 `type` | Row type: tweet, user, profileStats or error. |
| 🔗 `url`, `twitterUrl` | Link to the post or profile on x.com and on twitter.com. |
| 📝 `text` | Full text of the post, long posts included. |
| 🕒 `createdAt`, `createdAtIso` | Creation time in X's date format and as an ISO 8601 UTC string. |
| ❤ `likeCount`, `retweetCount`, `replyCount`, `quoteCount`, `bookmarkCount`, `viewCount` | Counts for likes, reposts, replies, quote posts, bookmarks and views. |
| 📈 `engagement`, `engagementRate`, `engagementRateByViews` | Likes + reposts + replies + quotes, as a number and as a percentage of followers and of views. |
| 👤 `author` | The account that wrote the post: user name, name, verification, followers, following and, when available, bio, location, website and creation date. |
| 🖼 `media`, `mediaUrls` | Photos, videos and GIFs with details, and direct links to original-size photos and the best video quality. |
| 🔖 `hashtags`, `mentions`, `urls`, `domains` | Hashtags, mentioned accounts, links in the post and the domains of those links. |
| ♻ `isRetweet`, `isQuote`, `retweeted`, `quote`, `quoteId` | Whether the post is a repost or quote, and the original or quoted post. |
| 🧵 `conversationId`, `threadId`, `threadPosition`, `threadLength`, `isReply`, `inReplyToId`, `inReplyToUserName`, `isPinned`, `thread` | Conversation and thread details, reply links, pinned flag and the posts above a reply. |
| 📰 `article` | X Article attached to the post: id, title, preview, cover image, dates, plain text and content blocks. |
| 🔎 `lang`, `source`, `place`, `card`, `isLongPost`, `possiblySensitive`, `isEdited`, `editTweetIds`, `hasAiGeneratedMedia` | Language, sending app (reposts only), place, link card or poll, and post flags. |
| 🧭 `matchedSearchTerm`, `discoveredVia`, `dataQuality` | Which search term found the row, a short source label, and a reason when a row has fewer details than usual. |
| 🙋 `userName`, `name`, `id`, `isVerified`, `isBlueVerified`, `verifiedType`, `followers`, `following`, `tweetsCount`, `isProtected` | Profile rows: handle, display name, account id, verification and counts. |
| 📍 `description`, `location`, `website`, `profilePicture`, `profileBanner`, `createdAt`, `birthdate` | Profile rows: bio, location, website, images, creation date and public birthdate when shared. |
| ✉ `bioEmails`, `bioLinks`, `bioMentions`, `bioHashtags` | Email addresses, links, handles and hashtags written in the bio. |
| 🔢 `mediaCount`, `likesGiven`, `affiliatesCount`, `highlightedPostsCount`, `subscribersCount` | Extra profile counts, present when available. |
| 📊 `postsAnalyzed`, `originalPosts`, `retweets`, `replies`, `quotes`, `withMedia`, `withLinks`, `from`, `to`, `postsPerWeek` | Analytics rows: what was analysed and the posting pace. |
| 🏆 `likes`, `retweetCounts`, `replyCounts`, `views`, `avgEngagementRate`, `topHashtags`, `topMentions`, `topDomains`, `postsByWeekdayUtc`, `bestHourUtc`, `sources`, `topPosts`, `threads` | Analytics rows: average, median, maximum and total counts, top hashtags, mentions and domains, best posting hour and the three top posts. |
| ⚠ `input`, `error` | Error rows: the input that gave no result and why. |

Only public data is collected. Protected accounts, private messages and posts that need an account to view are not available. As a Twitter media scraper it returns links in `mediaUrls` for Twitter media download. The thread columns describe each Twitter conversation thread.

### What can you do with the data from X?

**🎯 Twitter lead generation**

1. Put topic phrases such as `web3 founder` into `profileSearchTerms` and set `outputMode` to `profiles`.
2. Narrow the list with `minFollowers`, `profileBioContains` and `profileLocationContains`.
3. Export the `bioEmails`, `bioLinks` and `website` columns to CSV.

**📣 Twitter brand monitoring**

1. Add your brand as a `searchTerms` entry, for example `"your brand" -filter:retweets`. Twitter hashtag tracking works the same way with #tags.
2. For Twitter monitoring of new posts, save the last post id of the previous run in `sinceId` so each run returns only newer posts.
3. Schedule the run and send the dataset to your tools with a webhook.

**🔬 Twitter sentiment analysis and research dataset**

1. Choose `searchTerms` or `twitterHandles`, set `tweetLanguage` and collect Twitter posts by date range with `start` and `end`.
2. Keep `includeAuthorProfile` on to get author details in every row.
3. Export `text`, `createdAtIso` and the engagement columns, or scrape tweets to CSV for your analysis.

**🏁 Twitter competitor analysis and influencer research**

1. Add competitor handles to `twitterHandles` and turn on `includeProfileStats`.
2. Compare `postsPerWeek`, `avgEngagementRate`, `topHashtags` and `bestHourUtc` in the analytics table.

### How do I use this Twitter scraper?

Run this Twitter scraper online in the Apify Console.

1. Open **X (Twitter) Scraper Unlimited – No Limits** on Apify and click **Try for free**.
2. Add links, handles, search terms or post ids in the **What to scrape** section.
3. Set **Maximum rows** and choose **What to output**: posts, profiles or both.
4. Add optional dates, language and post or account filters.
5. Click **Start** and watch rows appear in the **Output** tab while the run is in progress.
6. Open the **Dataset** tab and export as JSON, CSV or Excel, or fetch the results through the API.

### How much does it cost to scrape X?

The Actor uses pay-per-event pricing, so it is a Twitter scraper with pay per result billing. You pay for each result saved: a post, a profile or a profile analytics row. Error rows are never billed. Platform usage is billed in addition.

| Plan | Price per result | Per 1,000 results |
|---|---|---|
| 🆓 Free | $0.003 | $3.00 |
| 🥉 Bronze | $0.0027 | $2.70 |
| 🥈 Silver | $0.0024 | $2.40 |
| 🥇 Gold | $0.002 | $2.00 |

A start event of $0.00005 is charged per GB of memory, with a minimum of one event. The default memory is 1024 MB (1 GB), so one start event costs $0.00005.

**Worked example:** 500 results on the Bronze plan cost 500 × $0.0027 = $1.35, plus the $0.00005 start event, which makes $1.35005 plus platform usage.

You can set a maximum cost per run. When that spend limit is reached, the run stops cleanly and keeps the rows already saved.

#### Is scraping X free?

Not entirely. Every saved result is charged at the price of your Apify plan, starting at $0.003 per result on the Free plan, and platform usage is billed in addition. Error rows cost nothing, and a maximum cost per run lets you cap what a single run can spend.

#### How much does X (Twitter) Scraper cost per 1,000 results?

1,000 results cost $3.00 on the Free plan, $2.70 on Bronze, $2.40 on Silver and $2.00 on Gold, plus the $0.00005 start event and platform usage. Higher plans pay less per result, so the per-1,000 price falls as your plan grows.

### Input

Provide at least one link, handle, search term, account search or post id. You can mix all of them in the same run, and `searchTerms` accepts Twitter advanced search operators. No field is required on its own, and the Console form fills in sensible defaults.

| Field | Type | Required | Description | Default / example |
|---|---|---|---|---|
| `urls` | array | No | Post, article, profile or search links, one per line. A profile link collects that account's latest posts. Handles such as @NASA and plain post ids also work. | `https://x.com/NASA` |
| `twitterHandles` | array | No | Profile handles with or without the @. | `NASA` |
| `searchTerms` | array | No | Keywords or advanced-search phrases. Supported operators: from: to: lang: since: until: min_faves: min_retweets: min_replies: and filter: values (media, images, videos, links, verified, replies, retweets, quote, hashtags, mentions), quoted phrases, -exclusions, OR, #tags and @mentions. Matches cover the posts reachable without an account, not every post on X. | `from:NASA filter:media min_faves:100` |
| `profileSearchTerms` | array | No | Find accounts instead of posts. Each account must mention the words in its name, handle, bio or location. | `web3 founder` |
| `tweetIds` | array | No | Plain post ids to read directly. | `1728108619189874825` |
| `conversationIds` | array | No | Conversation ids. Only the first post of the conversation is returned; replies are not available. | |
| `maxItems` | integer | No | Maximum rows (posts and profiles) saved in total. 0 means no row cap. | Default `10` |
| `outputMode` | string | No | `tweets` (posts), `profiles` or `both`. | Default `tweets` |
| `sort` | string | No | `Latest`, `Top` or `Latest + Top` (behaves like Latest). Latest keeps each batch newest first; Top orders each batch by likes and reposts. | Default `Latest` |
| `timelineKind` | string | No | Profile tab to read: `posts` or `highlights`. | Default `posts` |
| `maxItemsPerSource` | integer | No | Maximum posts per profile, link or search term. 0 shares the total of `maxItems` across all inputs. | Default `0` |
| `start` | string | No | Keep posts on or after this date (YYYY-MM-DD). | `2026-09-01` |
| `end` | string | No | Keep posts before this date (YYYY-MM-DD, this day excluded). | `2026-10-01` |
| `sinceId` | string | No | Keep only posts with an id above this post id, for monitoring. | `1728108619189874825` |
| `tweetLanguage` | string | No | Keep posts in this language. Leave empty for all languages. | `en` |
| `minimumFavorites` | integer | No | Minimum likes, the Twitter min faves filter. | `100` |
| `minimumRetweets` | integer | No | Minimum reposts. | |
| `minimumReplies` | integer | No | Minimum replies. | |
| `minimumViews` | integer | No | Minimum views. | |
| `onlyVerifiedUsers` | boolean | No | Only posts from verified accounts. | Default `false` |
| `onlyTwitterBlue` | boolean | No | Only posts from authors with a Blue subscription. | Default `false` |
| `onlyImage` | boolean | No | Only posts with images. | Default `false` |
| `onlyVideo` | boolean | No | Only posts with video. | Default `false` |
| `onlyQuote` | boolean | No | Only quote posts. | Default `false` |
| `excludeRetweets` | boolean | No | Leave out reposts. | Default `false` |
| `excludeReplies` | boolean | No | Leave out replies. | Default `false` |
| `author` | string | No | Added to every search term as a from: filter, or run as its own search. Links and handles are not filtered by it. | `NASA` |
| `inReplyTo` | string | No | Added to every search term as a to: filter, or run as its own search. | `NASA` |
| `mentioning` | string | No | Added to every search term as an @ mention filter, or run as its own search. | `NASA` |
| `minFollowers` | integer | No | Keep accounts with at least this many followers (profile rows and account search). | `1000` |
| `maxFollowers` | integer | No | Keep accounts with at most this many followers. | |
| `profileBioContains` | array | No | Keep accounts whose bio contains at least one of these words. | `founder` |
| `profileLocationContains` | array | No | Keep accounts whose location contains at least one of these words. | `London` |
| `onlyVerifiedProfiles` | boolean | No | Only verified accounts. | Default `false` |
| `profileMatch` | string | No | How strictly an account found by topic must match: `all` words, `any` word or `off`. | Default `all` |
| `includeAuthorProfile` | boolean | No | Add the author's bio, location, website and creation date to every post. | Default `true` |
| `includeArticles` | boolean | No | Add the full text of X Articles when a post contains one. | Default `true` |
| `includeThreadAncestors` | boolean | No | For replies, add the chain of posts above them (up to 10). | Default `false` |
| `includeSearchTerms` | boolean | No | Add `matchedSearchTerm` to each post. | Default `false` |
| `includeProfileStats` | boolean | No | Add one analytics row per profile, based on the posts collected. | Default `false` |
| `includeErrorRows` | boolean | No | Add a row that explains why an input gave no result. Never billed. | Default `true` |
| `outputFields` | array | No | Limit post rows to these fields, for example `text`, `likeCount`, `author`. Empty means all fields. | |
| `proxyConfiguration` | object | No | Optional network setting. Leave the default unless you need requests to leave from a specific network or country. | Default `{"useApifyProxy": false}` |

Example input:

```json
{
  "urls": ["https://x.com/NASA"],
  "searchTerms": ["from:NASA filter:media min_faves:100"],
  "maxItems": 50,
  "outputMode": "tweets",
  "sort": "Latest",
  "start": "2026-09-01",
  "tweetLanguage": "en",
  "includeAuthorProfile": true
}
```

### Output

Results are saved to the Apify Dataset as soon as each row is ready. The Dataset tab has separate tables for posts, engagement, authors, media and links, reposts and quotes, articles, threads and replies, source and quality, profiles, profile analytics and errors. A run summary is saved to the key-value store under the key `SUMMARY`. Export JSON, CSV, Excel, XML or HTML from the Console or through the API.

A post row (trimmed):

```json
{
  "type": "tweet",
  "id": "1000000000000000001",
  "url": "https://x.com/example/status/1000000000000000001",
  "twitterUrl": "https://twitter.com/example/status/1000000000000000001",
  "text": "Example post text",
  "retweetCount": 12,
  "replyCount": 3,
  "likeCount": 120,
  "quoteCount": 2,
  "createdAt": "Mon Sep 01 10:00:00 +0000 2026",
  "lang": "en",
  "isReply": false,
  "author": {
    "type": "user",
    "userName": "example",
    "url": "https://x.com/example",
    "name": "Example Account",
    "isVerified": false,
    "isBlueVerified": true,
    "followers": 5000,
    "following": 100,
    "website": "https://example.com"
  },
  "isRetweet": false,
  "isQuote": false,
  "viewCount": 4500,
  "createdAtIso": "2026-09-01T10:00:00.000Z",
  "conversationId": "1000000000000000001",
  "hashtags": ["example"],
  "mentions": [],
  "urls": [],
  "media": [],
  "engagement": 137,
  "engagementRate": 2.74,
  "mediaUrls": [],
  "domains": []
}
```

A profile row (trimmed):

```json
{
  "type": "user",
  "userName": "example",
  "url": "https://x.com/example",
  "twitterUrl": "https://twitter.com/example",
  "id": "1000000001",
  "name": "Example Account",
  "isVerified": false,
  "isBlueVerified": true,
  "followers": 5000,
  "following": 100,
  "description": "Example bio, contact hello@example.com",
  "location": "Example City",
  "website": "https://example.com",
  "createdAt": "Tue Jan 01 00:00:00 +0000 2019",
  "tweetsCount": 2500,
  "bioEmails": ["hello@example.com"],
  "bioLinks": ["https://example.com"],
  "bioMentions": [],
  "bioHashtags": []
}
```

A profile analytics row (trimmed):

```json
{
  "type": "profileStats",
  "userName": "example",
  "followers": 5000,
  "postsAnalyzed": 100,
  "originalPosts": 60,
  "retweets": 40,
  "replies": 3,
  "quotes": 2,
  "withMedia": 30,
  "withLinks": 25,
  "from": "2026-08-01T10:00:00.000Z",
  "to": "2026-09-01T10:00:00.000Z",
  "postsPerWeek": 22.5,
  "likes": {"avg": 120.5, "median": 90, "max": 900, "total": 7230},
  "avgEngagementRate": 2.1,
  "topHashtags": [{"tag": "example", "count": 5}],
  "bestHourUtc": 14,
  "topPosts": [{"id": "1000000000000000001", "url": "https://x.com/example/status/1000000000000000001", "engagement": 137}],
  "threads": 2
}
```

An error row:

```json
{
  "type": "error",
  "input": "@example",
  "error": "no tweets found"
}
```

#### Notes and limitations

- Only public data is collected. Protected accounts, deleted posts and posts that need an account are not returned.
- Keyword and operator searches are matched on posts reachable without an account, so they do not cover every post on X.
- Follower and following lists are not collected, only the counts.
- Lists, geo and place search are not supported. For a conversation id only the first post is returned, not its replies.
- For some large accounts only a selection of popular posts is available, so rows may not be newest first.
- Older history is only partly reachable, and each profile has a page limit per run.
- Fields can be empty or missing when X does not show them. Rows with fewer details are marked in `dataQuality`.
- When the site limits requests for an account, wait a few minutes and run again.

### FAQ

#### Is it legal to scrape Twitter with a Twitter scraper?

This Actor collects only public data that any visitor can see, but legality depends on your country, your purpose and how you use the data. Personal data can fall under GDPR or CCPA, and X's terms may apply. Read [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/) and note this is not legal advice.

#### How to scrape Twitter without an API key, login or cookies?

Add links, handles, search terms or post ids and start the run; no key, login or cookies are needed. It reads only what is visible without an account, so protected accounts, private messages and login-only content are not available. That is how to scrape Twitter without API access.

#### How many results can I get per run?

You decide with `maxItems`, and 0 means no row cap. `maxItemsPerSource` limits posts per profile, link or search term. A run also ends when your maximum cost per run is reached, and what you receive depends on how much public data the site shows for each input.

#### Can I export tweets to CSV or Excel?

Yes. Every run saves rows to an Apify Dataset. Open the Dataset tab and download JSON, CSV, Excel, XML or HTML, or fetch the data through the API. Use `outputFields` to keep only the columns you need, such as `text`, `likeCount` and `author`, so a spreadsheet stays easy to read.

#### Can I schedule runs, use webhooks or integrations?

Yes. Apify lets you schedule this Actor to run hourly, daily or weekly, trigger webhooks when a run finishes, and connect the dataset to tools such as Make, n8n or Zapier. For monitoring, set `sinceId` to the last post id from your previous run so each scheduled run returns only newer posts.

#### Can I use this Twitter scraper through the API, Python or MCP?

Yes. For a Twitter scraper Python workflow, start runs and read datasets through the Apify API clients, or call the Actor from MCP-compatible tools. The API tab of this Actor lists the endpoints, and the [Apify API documentation](https://docs.apify.com/api/v2) explains authentication, runs and datasets in detail.

#### Why am I getting fewer results than expected?

Common reasons: `maxItems` or your spend limit was reached, your filters removed posts, the account has few public posts, or older posts are only partly reachable. Check the run log for the filtered-out summary, relax a filter such as `minimumFavorites`, and use the Errors table for inputs that returned nothing.

#### Twitter scraper not working?

First check the run log and the Errors table for the reason. If the site limited requests, wait a few minutes and run again. If the problem stays, open an issue in the Issues tab of this Actor with your input and run link, and we will look into it.

### Related Actors

| Actor | Use it to |
|---|---|
| 📸 [Instagram Scraper](https://apify.com/data_minds/instagram-scraper) | Scrape public Instagram profiles, posts, reels, comments, hashtags and places with no login or cookies. |
| 👽 [Reddit Scraper - Posts, Comments, Search & Subreddits](https://apify.com/data_minds/reddit-scraper-posts-comments-search-subreddits) | Collect posts, comments, communities and user profiles from public Reddit pages without a login or API key. |

### Support and disclaimer

Found a bug or need a feature? Open an issue in the **Issues** tab. For custom solutions, integrations or questions, write to hello.dataminds@gmail.com. X (Twitter) Scraper Unlimited – No Limits is independent and not affiliated with X Corp.; X and Twitter are trademarks of their owners. It collects publicly available data only, and you are responsible for complying with applicable laws and the site's terms.

*Last updated: 2026-10-18*

# Actor input Schema

## `urls` (type: `array`):

Post links, article links, profile links or search links, one per line. A profile link collects that account's latest posts. Add one link or hundreds in the same run. Handles such as @NASA and plain post ids also work.

## `twitterHandles` (type: `array`):

Handles of the profiles to scrape, with or without the @, for example NASA. A shortcut so you do not need to paste full profile links.

## `searchTerms` (type: `array`):

Keywords or advanced-search phrases, for example from:NASA filter:media min_faves:100. Supported operators: from: to: lang: since: until: min_faves: min_retweets: min_replies: filter:media, images, videos, links, verified, replies, retweets, quote, hashtags, mentions, quoted phrases, -exclusions, OR, #tags and @mentions. Keyword matches cover the posts that are reachable without an account, not every post on X.

## `profileSearchTerms` (type: `array`):

Find accounts instead of posts, for example web3 founder. Each account must really mention the words in its name, handle, bio or location. Set What to output to Profiles or Both to receive the account rows.

## `tweetIds` (type: `array`):

Plain post ids to read directly, for example 1728108619189874825.

## `conversationIds` (type: `array`):

Ids of conversations whose first post you want. Only the first post of the conversation is returned; replies to it are not available.

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

Maximum number of rows (posts and profiles) saved in total. Use 0 for no cap.

## `outputMode` (type: `string`):

Posts returns the posts. Profiles returns one row per account. Both returns accounts and their posts.

## `sort` (type: `string`):

Latest keeps each batch of rows newest first. Top keeps each batch ordered by likes and reposts. Latest + Top is accepted too and behaves like Latest.

## `timelineKind` (type: `string`):

Which tab of a profile to read: its posts or its highlights.

## `maxItemsPerSource` (type: `integer`):

Maximum posts taken from each profile, link or search term. Use 0 to share the total of Maximum rows across all inputs.

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

Only keep posts on or after this date (YYYY-MM-DD).

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

Only keep posts before this date (YYYY-MM-DD, this day excluded).

## `sinceId` (type: `string`):

For monitoring: keep only posts with an id above this post id, for example the last id from your previous run.

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

Only keep posts written in this language. Leave empty for all languages.

## `minimumFavorites` (type: `integer`):

Only keep posts with at least this many likes.

## `minimumRetweets` (type: `integer`):

Only keep posts with at least this many reposts.

## `minimumReplies` (type: `integer`):

Only keep posts with at least this many replies.

## `minimumViews` (type: `integer`):

Only keep posts with at least this many views.

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

Only keep posts from verified accounts.

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

Only keep posts from authors with a Blue subscription.

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

Only keep posts that contain an image.

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

Only keep posts that contain a video.

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

Only keep posts that quote another post.

## `excludeRetweets` (type: `boolean`):

Leave out reposts of other people's posts.

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

Leave out posts that are replies.

## `author` (type: `string`):

Added to every search term as a from: filter, or run as its own search when there are no search terms. Links and handles are not filtered by it. Example: NASA.

## `inReplyTo` (type: `string`):

Added to every search term as a to: filter, or run as its own search when there are no search terms. Links and handles are not filtered by it. Example: NASA.

## `mentioning` (type: `string`):

Added to every search term as an @ mention filter, or run as its own search when there are no search terms. Links and handles are not filtered by it. Example: NASA.

## `minFollowers` (type: `integer`):

Only keep accounts with at least this many followers. Used for profile rows and for Find accounts by topic.

## `maxFollowers` (type: `integer`):

Only keep accounts with at most this many followers.

## `profileBioContains` (type: `array`):

Keep accounts whose bio contains at least one of these words.

## `profileLocationContains` (type: `array`):

Keep accounts whose location contains at least one of these words.

## `onlyVerifiedProfiles` (type: `boolean`):

Only keep verified accounts.

## `profileMatch` (type: `string`):

How strictly an account found by topic must match your words. All needs every word in the name, handle, bio or location. Any needs one word. Off keeps every account found.

## `includeAuthorProfile` (type: `boolean`):

Add the author's bio, location, website and creation date to every post.

## `includeArticles` (type: `boolean`):

Add the full text of X Articles when a post contains one.

## `includeThreadAncestors` (type: `boolean`):

For posts that are replies, add the chain of posts above them (up to 10).

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

Add a field to each post that shows which search term found it.

## `includeProfileStats` (type: `boolean`):

Add one analytics row for each profile: posting pace, engagement averages, top hashtags, links and best posting hour, based on the posts collected.

## `includeErrorRows` (type: `boolean`):

Add a row that explains why an input gave no result. Error rows are never billed.

## `outputFields` (type: `array`):

Limit post rows to these fields, for example text, likeCount, author. Leave empty for all fields.

## `proxyConfiguration` (type: `object`):

Optional network setting. Leave the default unless you need requests to leave from a specific network or country.

## Actor input object example

```json
{
  "urls": [
    "https://x.com/NASA"
  ],
  "maxItems": 10,
  "outputMode": "tweets",
  "sort": "Latest",
  "timelineKind": "posts",
  "maxItemsPerSource": 0,
  "onlyVerifiedUsers": false,
  "onlyTwitterBlue": false,
  "onlyImage": false,
  "onlyVideo": false,
  "onlyQuote": false,
  "excludeRetweets": false,
  "excludeReplies": false,
  "onlyVerifiedProfiles": false,
  "profileMatch": "all",
  "includeAuthorProfile": true,
  "includeArticles": true,
  "includeThreadAncestors": false,
  "includeSearchTerms": false,
  "includeProfileStats": false,
  "includeErrorRows": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

Every post with its text, author, date and main counts.

## `engagement` (type: `string`):

Likes, reposts, replies, views and engagement rates.

## `authors` (type: `string`):

Who wrote each post: audience, bio, place and website.

## `media` (type: `string`):

Photos, videos, hashtags, mentions and links.

## `quotes` (type: `string`):

Reposted and quoted posts.

## `articles` (type: `string`):

Full X Articles.

## `threads` (type: `string`):

Conversation ids, thread position, reply links and pinned posts.

## `details` (type: `string`):

Where each row came from and anything that is missing.

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

One row per account with bio details and contact data from the bio.

## `analytics` (type: `string`):

Posting pace, engagement averages and best hour per profile.

## `errors` (type: `string`):

Inputs that gave no result and why. Never billed.

## `summary` (type: `string`):

Totals for the whole run and the status of every input.

# 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 = {
    "urls": [
        "https://x.com/NASA"
    ],
    "maxItems": 10,
    "outputMode": "tweets",
    "sort": "Latest",
    "timelineKind": "posts",
    "profileMatch": "all",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_minds/twitter-x-scraper-unlimited-no-limits").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 = {
    "urls": ["https://x.com/NASA"],
    "maxItems": 10,
    "outputMode": "tweets",
    "sort": "Latest",
    "timelineKind": "posts",
    "profileMatch": "all",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("data_minds/twitter-x-scraper-unlimited-no-limits").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 '{
  "urls": [
    "https://x.com/NASA"
  ],
  "maxItems": 10,
  "outputMode": "tweets",
  "sort": "Latest",
  "timelineKind": "posts",
  "profileMatch": "all",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call data_minds/twitter-x-scraper-unlimited-no-limits --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,data_minds/twitter-x-scraper-unlimited-no-limits"
        }
    }
}
```

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/hif0sEJVVZD7JAkzb/builds/mRy0imSl7VxYfqQy3/openapi.json
