# X (Twitter) User Tweets Scraper (`myagizm/x-tweets-scraper`) Actor

Export the timeline of any public X (Twitter) account: text, likes, reposts, replies, quotes, bookmarks, views, media, hashtags and links. No login, no cookies, no API key.

- **URL**: https://apify.com/myagizm/x-tweets-scraper.md
- **Developed by:** [MYM](https://apify.com/myagizm) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.23 / 1,000 tweet scrapeds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## X (Twitter) User Tweets Scraper — export tweets from any account (No API Key, No Login)

<p align="center">
  <a href="https://apify.com/myagizm/x-tweets-scraper"><img src="https://img.shields.io/badge/Apify-Actor-00b96b?logo=apify&logoColor=white" alt="Apify Actor"></a>
  <img src="https://img.shields.io/badge/No%20API%20Key-required-blue" alt="No API Key required">
  <img src="https://img.shields.io/badge/No%20Login-needed-blue" alt="No Login needed">
  <img src="https://img.shields.io/badge/No%20Cookies-needed-blue" alt="No cookies needed">
  <img src="https://img.shields.io/badge/Export-JSON%20%7C%20CSV%20%7C%20Excel%20%7C%20XML-orange" alt="Export formats">
  <img src="https://img.shields.io/badge/MCP-AI%20agents-8A2BE2" alt="MCP AI agents">
  <img src="https://img.shields.io/badge/Pricing-pay%20per%20result-success" alt="Pay per result">
</p>

**Scrape tweets from any public X (Twitter) account** — no API key, no login, no cookies, no developer account, no X API pricing tier. This X Twitter scraper walks an account's public timeline and returns every post as a clean, structured record: full text, likes, reposts, replies, quotes, bookmarks, **views**, media with direct MP4 URLs, hashtags, mentions, links, the posting client, pinned status, edit state, link-preview cards, and the complete author profile. Export tweets to JSON, CSV, Excel, or XML, schedule runs through the Apify API, and feed the output straight into an LLM, a dashboard, or a spreadsheet.

> **Get your first tweets free in under 2 minutes** — type a username, click Start, read the data. No configuration, no credit card to try.

***

### Table of contents

- [What can the X Tweets Scraper do?](#what-can-the-x-tweets-scraper-do)
- [Who scrapes tweets?](#who-scrapes-tweets)
- [What data can I scrape from a tweet?](#what-data-can-i-scrape-from-a-tweet)
- [How to scrape tweets from an X account](#how-to-scrape-tweets-from-an-x-account)
- [Input example](#input-example)
- [Output example](#output-example)
- [How deep into the timeline can it go?](#how-deep-into-the-timeline-can-it-go)
- [How accurate is the data?](#how-accurate-is-the-data)
- [How much will scraping tweets cost?](#how-much-will-scraping-tweets-cost)
- [Tips for scraping tweets](#tips-for-scraping-tweets)
- [Want other X (Twitter) data?](#want-other-x-twitter-data)
- [Use tweet data with AI agents (MCP)](#use-tweet-data-with-ai-agents-mcp)
- [Integrations & API](#integrations--api)
- [Support](#support)
- [FAQ — scraping tweets from X (Twitter)](#faq--scraping-tweets-from-x-twitter)
- [Related searches](#related-searches)
- [Disclaimer](#disclaimer)
- [Resources](#resources)

***

### What can the X Tweets Scraper do? {#what-can-the-x-tweets-scraper-do}

The X (Twitter) User Tweets Scraper turns any public account's timeline into a structured dataset, with zero setup. Use it to:

- 🐦 **Scrape tweets from any public X account** — just a username, @handle, or profile URL.
- 📜 **Walk deep into the timeline** — most accounts return up to roughly **1,000–1,200 posts** per run, typically well over a year of history.
- 📊 **Get every public engagement metric** — likes, reposts, replies, quotes, bookmarks, and **view counts** on each post.
- 📝 **Read the full text** — long posts and Notes are expanded, never truncated at 280 characters.
- 🖼️ **Pull media** — photo URLs plus **direct MP4 video links** and video duration.
- 🔗 **Get clean entities** — `hashtags`, `mentions`, and expanded (un-shortened) `links` as plain string arrays.
- 📱 **See the posting client** — `Twitter for iPhone`, `Twitter Web App`, `Sprout Social`, `Typefully`, `Sprinklr`, `Media Studio`.
- 📌 **Know what's pinned** — pinned posts are flagged so you can spot an account's headline message.
- 🃏 **Capture link previews** — card title, description, image, domain, and destination URL.
- 🔁 **Expand reposts and quotes** — the original post arrives as a full nested tweet object, not just an ID.
- ✏️ **Track edit state** — `isEdited` and `editsRemaining` from X's edit control.
- 👤 **Get the author profile with every post** — followers, following, bio, website, verified type, join date.
- 🎯 **Filter reposts out** with one switch, or fetch only the account's **Highlights** tab.
- 🧑‍🤝‍🧑 **Queue many accounts in one run** — no limitation on how many usernames you add.
- 📤 **Export tweets** to JSON, CSV, Excel, or XML, or pull them live through the API.

Go beyond the official X API: no OAuth app, no monthly API tier, no per-request quota — paste a username and collect publicly available tweet data.

***

### Who scrapes tweets? {#who-scrapes-tweets}

- 📈 **Social media & competitor analysts** — benchmark a competitor's posting cadence, engagement rate, and best-performing formats.
- 🧑‍💻 **AI & LLM builders** — feed timelines into RAG pipelines, summarizers, and sentiment models without writing a scraper.
- 📰 **Researchers & journalists** — build reproducible datasets of what an organisation or official account published over time.
- 🏢 **Brand & reputation teams** — archive a brand's own messaging and monitor how it evolves.
- 🤝 **Influencer marketers** — verify that an account's engagement matches its follower count before you pay for a placement.
- 💼 **Lead generation teams** — enrich prospect lists with the author profile attached to every post.
- 📊 **Data teams & dashboards** — schedule runs and pipe fresh rows into BI tools, Sheets, or a warehouse.

***

### What data can I scrape from a tweet? {#what-data-can-i-scrape-from-a-tweet}

Each post returns **35 fields**. Always populated:

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Tweet ID. |
| `url` | string | Direct link to the post. |
| `text` | string | Full post text — long posts and Notes expanded, never truncated. |
| `createdAt` | string | Post timestamp. |
| `likeCount` | number | Likes. |
| `retweetCount` | number | Reposts (retweets). |
| `replyCount` | number | Replies. |
| `quoteCount` | number | Quote posts. |
| `bookmarkCount` | number | Bookmarks. |
| `viewCount` | number | Views / impressions. |
| `lang` | string | Language code detected by X. |
| `conversationId` | string | The thread the post belongs to. |
| `source` | string | Posting client, e.g. `Twitter for iPhone`, `Sprout Social`, `Typefully`. |
| `isReply` | boolean | Whether the post is a reply. |
| `isRetweet` | boolean | Whether the post is a repost. |
| `isQuote` | boolean | Whether the post quotes another post. |
| `isPinned` | boolean | Whether the account pins this post to its profile. |
| `possiblySensitive` | boolean | X's sensitive-media flag. |
| `isEdited` | boolean | Whether the post has been edited. |
| `editsRemaining` | number | Edits still available on the post. |
| `tweetsMode` | string | `full` or `limited` — how deep the account's public timeline goes (see below). |
| `queriedUsername` | string | The username you asked for, handy when you queue many accounts. |
| `author` | object | Full author profile: `username`, `name`, `description`, `followers`, `following`, `tweetsCount`, `likesCount`, `mediaCount`, `listedCount`, `location`, `website`, `isVerified`, `verifiedType`, `isProtected`, `createdAt`, `profileImage`, `bannerImage`, `url`. |

Populated when the post contains them:

| Field | Type | Description |
|-------|------|-------------|
| `media` | array | Photos and videos: `type`, `image`, direct **MP4 `video`** URL, `durationMs`. |
| `hashtags` | array | Plain array of hashtags — no nested entity objects to unpack. |
| `mentions` | array | Plain array of mentioned usernames. |
| `links` | array | Plain array of expanded, un-shortened URLs. |
| `card` | object | Link preview / poll / broadcast card: `name`, `url`, `title`, `description`, `image`, `domain`. |
| `quotedTweet` | object | The quoted post as a full nested tweet object. |
| `retweetOf` | object | The original post as a full nested tweet object. |
| `inReplyToId` | string | ID of the post being replied to. |
| `inReplyToUserId` | string | User ID being replied to. |
| `replyToUsername` | string | Username being replied to. |
| `place` | object | Geotag: `name`, `fullName`, `country`, `countryCode`, `type`, `boundingBox`. |
| `article` | object | Long-form article: `title`, `previewText`, `coverImage`. |

Every field name is camelCase and every entity list is a flat array of strings — there is no `id_str` / `screen_name` / `user_mentions` mix to normalise on your side.

***

### How to scrape tweets from an X account {#how-to-scrape-tweets-from-an-x-account}

1. **Open the X (Twitter) User Tweets Scraper** on [Apify](https://apify.com/myagizm/x-tweets-scraper).
2. **Add one or more accounts** to *X (Twitter) usernames* — `nasa`, `@OpenAI`, or `https://x.com/spacex` all work.
3. *(Optional)* Set **Max tweets per account** to cap the run (1–3000).
4. *(Optional)* Turn **Include reposts** off to keep only original posts, or turn **Highlights only** on to fetch just the account's Highlights tab.
5. Click **▶ Start**.
6. **Export** the dataset to JSON, CSV, Excel, or XML, or fetch it through the API.

No login, no cookies, no account, no proxy configuration. Start with one account to see the output shape, then scale the same run to a batch — the fields stay identical, so code written against a test run keeps working.

***

### Input example {#input-example}

```json
{
  "usernames": ["nasa", "@OpenAI", "https://x.com/spacex"],
  "resultsLimit": 500,
  "includeRetweets": true,
  "highlightsOnly": false
}
```

- **usernames** — usernames, @handles, or profile URLs. Queue as many as you like.
- **resultsLimit** — hard cap on tweets per account (1–3000).
- **includeRetweets** — keep reposts (`true`) or return only the account's own posts (`false`).
- **highlightsOnly** — fetch the account's Highlights tab instead of the timeline.

***

### Output example {#output-example}

```json
{
  "id": "2081846100173177313",
  "url": "https://x.com/vercel/status/2081846100173177313",
  "text": "DeepsecBench evaluates model accuracy, cost, and speed in finding real vulnerabilities.",
  "createdAt": "Mon Jul 27 21:18:19 +0000 2026",
  "likeCount": 214,
  "retweetCount": 31,
  "replyCount": 12,
  "quoteCount": 3,
  "bookmarkCount": 89,
  "viewCount": 41207,
  "lang": "en",
  "conversationId": "2081846100173177313",
  "source": "Typefully",
  "isReply": false,
  "isRetweet": false,
  "isQuote": false,
  "isPinned": true,
  "possiblySensitive": false,
  "isEdited": false,
  "editsRemaining": 5,
  "tweetsMode": "full",
  "queriedUsername": "vercel",
  "hashtags": [],
  "mentions": [],
  "links": ["https://vercel.com/blog"],
  "media": [
    { "type": "photo", "image": "https://pbs.twimg.com/media/GxxxxxxxxxA.jpg", "video": null, "durationMs": null }
  ],
  "card": {
    "name": "summary_large_image",
    "url": "https://t.co/DUen0tXEtD",
    "title": "DeepsecBench",
    "description": null,
    "image": "https://pbs.twimg.com/card_img/xxxx.jpg",
    "domain": "vercel.com"
  },
  "place": null,
  "article": null,
  "inReplyToId": null,
  "inReplyToUserId": null,
  "replyToUsername": null,
  "quotedTweet": null,
  "retweetOf": null,
  "author": {
    "id": "1250773369",
    "username": "vercel",
    "name": "Vercel",
    "description": "Build and deploy the best web experiences with the Frontend Cloud.",
    "followers": 452118,
    "following": 174,
    "tweetsCount": 9421,
    "isVerified": true,
    "verifiedType": "Business",
    "website": "https://vercel.com",
    "profileImage": "https://pbs.twimg.com/profile_images/xxxx.jpg",
    "url": "https://x.com/vercel"
  }
}
```

***

### How deep into the timeline can it go? {#how-deep-into-the-timeline-can-it-go}

X does not show every account's full archive to logged-out visitors, and honest limits beat surprises:

| `tweetsMode` | What it means | Typical yield |
|---|---|---|
| `full` | The account exposes a paginated public timeline and the actor walks it page by page. | **~1,000–1,200 tweets** |
| `limited` | The account only exposes a recent public sample; there is no pagination cursor to follow. | **~100–130 tweets** |

Most brand, media, organisation, and normal creator accounts are `full`. A minority of very large personal accounts are `limited` — for those, that sample is all any cookie-free tool can return. Every item carries its `tweetsMode`, so you always know which case you got instead of silently receiving fewer rows.

Complete archives of 10k+ posts require a logged-in X account and are out of scope for this actor.

***

### How accurate is the data? {#how-accurate-is-the-data}

Metrics are read live at run time — no cache, so counts match what a logged-out visitor sees right now.

In a 200-tweet benchmark run, 15 randomly sampled posts were re-checked against a second, independent X endpoint: **15 of 15 matched**, with a mean deviation of **0.02%**. The only difference was a post published 40 minutes earlier whose like counter was still climbing. The same run contained **0 duplicate rows** and no gaps in the timeline.

***

### How much will scraping tweets cost? {#how-much-will-scraping-tweets-cost}

Simple, predictable **pay-per-result** pricing — you pay for tweets you actually receive, not for compute time.

- 💸 **Pay per tweet** — cost scales linearly with results, so you can budget up front: tweets × rate.
- 📉 **Volume discounts** — Bronze, Silver, Gold, Platinum, and Diamond Apify plans get progressively lower per-tweet rates.
- 🆓 **Free to try** — new Apify accounts include monthly free usage; your first run costs nothing.
- 🚫 **No hidden fees** — no proxy add-on, no per-request API charge, no minimum spend.

See the live rate on the [Apify store page](https://apify.com/myagizm/x-tweets-scraper).

***

### Tips for scraping tweets {#tips-for-scraping-tweets}

- 🎯 **Turn reposts off for engagement analysis.** Reposts carry the original author's metrics and will skew per-post averages.
- 📌 **Check `isPinned` first.** A pinned post is the account's chosen headline — useful context before reading the rest.
- 📱 **Group by `source`.** Seeing that a brand posts through Sprout Social or Typefully tells you there is a scheduling workflow behind it.
- 🃏 **Use `card.domain` for link attribution.** It reveals which sites an account drives traffic to, even through `t.co` shorteners.
- 🎬 **Grab `media[].video` immediately.** X media URLs are signed and expire, so download or re-host what you need in the same session.
- 🧵 **Rebuild threads with `conversationId`.** Group posts by it to reconstruct threads in order.
- ⏱️ **Schedule small, frequent runs** for monitoring instead of one huge run — cheaper and fresher.
- 🔍 **Read `tweetsMode` before assuming a low count is a bug.** `limited` means the account itself restricts what logged-out visitors see.

***

### Want other X (Twitter) data? {#want-other-x-twitter-data}

Timelines are one piece of the picture. Combine this actor with the rest of the X toolkit:

- 👤 **[X (Twitter) Profile Scraper](https://apify.com/myagizm/x-profile-scraper)** — followers, following, bio, website, verified badge and join date in bulk.
- 🔗 **[X (Twitter) Tweet Scraper by URL](https://apify.com/myagizm/x-tweet-scraper)** — paste post URLs or IDs and get full data for each one.
- 📈 **[X (Twitter) Trending Topics Scraper](https://apify.com/myagizm/x-trends-scraper)** — live trends for any country or city with tweet volume.

Building a multi-platform social dataset? The same pay-per-result, no-login approach covers the other networks too:

- 📸 **[Instagram Profile Scraper](https://apify.com/myagizm/instagram-profile-scraper-v2)** · **[Instagram Post Scraper](https://apify.com/myagizm/instagram-post-scraper-v2)** · **[Instagram Hashtag Scraper](https://apify.com/myagizm/instagram-hashtag-scraper-v2)** · **[Instagram Comment Scraper](https://apify.com/myagizm/instagram-comment-scraper-v2)**
- 🎵 **[TikTok Profile Scraper](https://apify.com/myagizm/tiktok-profile-scraper-v2)** · **[TikTok Video Scraper](https://apify.com/myagizm/tiktok-video-scraper-v2)** · **[TikTok Hashtag Scraper](https://apify.com/myagizm/tiktok-hashtag-scraper-v2)** · **[TikTok Comments Scraper](https://apify.com/myagizm/tiktok-comments-scraper-v2)**
- 👔 **[LinkedIn Profile Scraper](https://apify.com/myagizm/linkedin-profile-scraper)** · **[LinkedIn Company Scraper](https://apify.com/myagizm/linkedin-company-scraper)** · **[LinkedIn Jobs Scraper](https://apify.com/myagizm/linkedin-jobs-scraper)**
- 🤖 **[Reddit Scraper](https://apify.com/myagizm/reddit-scraper-v2)** · **[Reddit Search Scraper](https://apify.com/myagizm/reddit-search-scraper-v2)** · **[Reddit Subreddit Scraper](https://apify.com/myagizm/reddit-subreddit-scraper-v2)**
- ▶️ **[YouTube Channel Scraper](https://apify.com/myagizm/youtube-channel-scraper)** · **[YouTube Comment Scraper](https://apify.com/myagizm/youtube-comment-scraper)** · **[YouTube Transcript Scraper](https://apify.com/myagizm/youtube-transcript-scraper)**
- 🗺️ **[Google Maps Scraper](https://apify.com/myagizm/google-maps-scraper)** · **[Google News Scraper](https://apify.com/myagizm/google-news-scraper)**

Browse everything on the **[myagizm store profile](https://apify.com/myagizm)**.

***

### Use tweet data with AI agents (MCP) {#use-tweet-data-with-ai-agents-mcp}

The X (Twitter) User Tweets Scraper is available through the **Apify MCP server**, so AI assistants can call it as a tool and pull tweets on demand.

- 🧩 **Claude** — add the Apify MCP server and let Claude fetch and analyse tweets.
- 🤖 **ChatGPT** — use the actor as a tool inside research and reporting workflows.
- 🖊️ **Cursor** — pull tweets straight into your coding and prototyping sessions.

No glue code required: ask your agent in plain language and it runs the actor, reads the structured output, and answers.

Common AI-agent recipes:

- 🗒️ **Summarize an account** — "read @OpenAI's last 200 posts and list the product announcements."
- 📊 **Engagement report** — "compare average likes and views for @nike vs @adidas over their last 100 posts."
- 🧭 **Topic extraction** — "what themes does this account post about most often?"
- 😀 **Sentiment tracking** — "score the tone of this brand's posts month by month."
- ✍️ **Content research** — "find the five highest-view posts and describe the format each one used."

***

### Integrations & API {#integrations--api}

Connect the actor to the tools you already use: **Make, Zapier, n8n, Slack, Airbyte, Gumloop, CrewAI, IFTTT, Lindy, GitHub, Google Sheets, and Google Drive** — plus webhooks, Apify Schedules, and the MCP server.

#### Run synchronously and get the dataset (Apify API)

```bash
curl -X POST "https://api.apify.com/v2/acts/myagizm~x-tweets-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "usernames": ["nasa"], "resultsLimit": 100, "includeRetweets": false }'
```

#### Start a run asynchronously

```bash
curl -X POST "https://api.apify.com/v2/acts/myagizm~x-tweets-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "usernames": ["nasa", "spacex"], "resultsLimit": 500 }'
```

#### Fetch dataset items later

```bash
curl "https://api.apify.com/v2/acts/myagizm~x-tweets-scraper/runs/last/dataset/items?token=YOUR_APIFY_TOKEN&format=csv"
```

Change `format` to `json`, `csv`, `xlsx`, or `xml` to export scraped data in your preferred format. The Apify Console also auto-generates ready-to-paste **JavaScript, Python, and CLI** snippets plus an **OpenAPI** spec for this actor.

***

### Support {#support}

Questions, feature requests, or something not looking right? Open an issue on the actor's **[Issues tab](https://apify.com/myagizm/x-tweets-scraper/issues)**. Please include the input you used so we can reproduce and fix it quickly.

***

### FAQ — scraping tweets from X (Twitter) {#faq--scraping-tweets-from-x-twitter}

#### Is it legal to scrape tweets?

The actor collects only publicly available posts — the same content X shows to any logged-out visitor. It never logs in and never accesses protected or deleted content. You remain responsible for how you use the data; if it contains personal data, follow GDPR, CCPA, and other applicable rules, and respect X's terms.

#### Do I need an X API key, developer account, or login?

No. There is no API key, no OAuth app, no X API pricing tier, no login, and no cookies. Paste a username and run.

#### How many tweets can I scrape per account?

Accounts with a paginated public timeline typically return up to **1,000–1,200** posts. Accounts that only expose a recent public sample return roughly **100–130**. The `tweetsMode` field tells you which case applies to each account.

#### Can I scrape an account's entire history?

Not without a logged-in X account. Full archives of tens of thousands of posts are not exposed to logged-out visitors, so no cookie-free tool can deliver them. This actor is transparent about the ceiling rather than silently truncating.

#### Can I search tweets by keyword or hashtag?

Not with this actor — X does not expose keyword search to logged-out clients, so this scraper works per account. For hashtag-style discovery on other networks, see the Instagram and TikTok hashtag scrapers linked above.

#### Can I scrape replies and threads?

Replies posted by the account appear in its timeline and are flagged with `isReply`, `inReplyToId`, and `replyToUsername`. Group posts by `conversationId` to rebuild threads. Replies written by *other* users under a post are not returned.

#### Does it include view counts?

Yes. `viewCount` is returned for every post, alongside likes, reposts, replies, quotes, and bookmarks.

#### Do I get video and image URLs?

Yes. The `media` array contains photo URLs and **direct MP4 video URLs** with duration. These URLs are signed by X and expire, so download what you need promptly.

#### Can I scrape multiple accounts in one run?

Yes. Queue as many usernames as you like in a single run; there is no limit on the number of accounts.

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

Yes — JSON, CSV, Excel, or XML from the Console, or via the API `format` parameter.

#### Can I use it with the Apify API?

Yes. Use the path `myagizm~x-tweets-scraper` with the sync or async endpoints shown above.

#### Is there an MCP server for AI agents?

Yes. The actor is exposed through the Apify MCP server, so Claude, ChatGPT, and Cursor can call it as a tool.

#### Do I need proxies?

No. Proxy handling is built in and managed for you — nothing to configure or supply.

#### Can I schedule runs?

Yes. Use Apify Schedules or trigger runs via API and webhooks to keep timelines fresh on your own cadence.

#### Can I scrape protected or private accounts?

No. Protected accounts are skipped and reported in the run log. The actor never bypasses access controls.

#### What happens if a username doesn't exist?

It is reported in the run log and the rest of the batch continues normally.

#### How fresh is the data?

There is no caching. Every run reads the current public timeline, so metrics are live at run time.

#### Can I filter out reposts?

Yes. Set **Include reposts** to `false` and only the account's own posts are returned.

#### What is the Highlights option?

X lets accounts pin a curated set of posts to a Highlights tab. Turn **Highlights only** on to fetch that curated set instead of the chronological timeline.

#### Why is `place` or `article` usually null?

Geotagging is rare on X today and long-form articles are a Premium feature, so most posts simply have neither. The fields are populated whenever the post actually carries them.

#### Can I integrate the output with other apps?

Yes — Make, Zapier, n8n, Slack, Airbyte, Gumloop, CrewAI, IFTTT, Lindy, GitHub, Google Sheets, Google Drive, and webhooks.

***

### Related searches {#related-searches}

twitter scraper · x scraper · scrape tweets · export tweets to csv · export tweets to excel · twitter data export · tweet scraper api · x api alternative · twitter api alternative free · scrape twitter without api · twitter timeline scraper · download tweets from account · twitter archive download · tweet analytics tool · twitter engagement scraper · twitter post scraper · scrape tweets by username · bulk tweet scraper · twitter scraping tool no login · x post scraper · twitter view count scraper · scrape twitter media · twitter video url extractor · twitter dataset for research · twitter sentiment analysis dataset · competitor twitter analysis · twitter monitoring tool · twitter scraper for ai agents

***

### Disclaimer {#disclaimer}

This is an independent tool and is not affiliated with, endorsed by, or sponsored by X Corp., Twitter, or any of their subsidiaries. All product names, logos, and brands are property of their respective owners.

The actor collects only **publicly available** data — the same content any logged-out visitor can see. It never logs in, never bypasses access controls, and never touches private, protected, or deleted content. You are responsible for how you use the data: if it contains personal data, follow GDPR, CCPA, and other applicable regulations, and respect the platform's terms.

***

### Resources {#resources}

- 📘 [Apify API documentation](https://docs.apify.com/api/v2) — run actors and fetch datasets programmatically.
- 🤖 [Apify MCP server](https://mcp.apify.com) — use this actor as a tool in Claude, ChatGPT, and Cursor.
- 📤 [Dataset export docs](https://docs.apify.com/platform/storage/dataset) — export to JSON, CSV, Excel, and XML.
- ⏰ [Scheduling actor runs](https://docs.apify.com/platform/schedules) — keep your data fresh automatically.
- 🔌 [Apify integrations](https://docs.apify.com/platform/integrations) — n8n, Zapier, Make, Slack, and more.
- 🏪 [myagizm store profile](https://apify.com/myagizm) — the full family of no-login social scrapers.

***

## 中文说明 —— X（推特）用户推文抓取工具

**抓取任意公开 X（Twitter）账号的推文** —— 不需要 API Key、不需要登录、不需要 Cookie、不需要开发者账号，也不需要购买 X API 套餐。本工具会翻阅账号的公开时间线，把每一条推文整理成结构化数据：完整正文、点赞数、转发数、回复数、引用数、书签数、**浏览量**、图片与可直接下载的 MP4 视频链接、话题标签、@提及、外链、发布客户端、是否置顶、编辑状态、链接卡片，以及完整的作者资料。结果可导出为 JSON、CSV、Excel 或 XML，也可以通过 Apify API 定时运行，直接送入大模型、看板或表格。

> **两分钟内免费拿到第一批数据** —— 填入内容，点击 Start 即可。无需配置，试用不需要信用卡。

### 这个 Actor 能做什么

- 🐦 **抓取任意公开账号的推文** —— 只需用户名、@handle 或主页链接。
- 📜 **深度翻页** —— 大多数账号单次可取约 **1,000–1,200 条**，通常覆盖一年以上的历史。
- 📊 **全部公开互动指标** —— 点赞、转发、回复、引用、书签，以及**浏览量**。
- 📝 **完整正文** —— 长推文和 Notes 会自动展开，不会被截断在 280 字符。
- 🖼️ **媒体资源** —— 图片地址 + **可直接下载的 MP4 视频链接**与时长。
- 🔗 **干净的实体字段** —— `hashtags`、`mentions`、已还原的完整 `links` 均为纯字符串数组。
- 📱 **发布客户端** —— `Twitter for iPhone`、`Twitter Web App`、`Sprout Social`、`Typefully` 等。
- 📌 **置顶标记** —— `isPinned` 让你一眼看出账号想主推的内容。
- 🃏 **链接卡片** —— 标题、描述、配图、域名与跳转地址。
- 🔁 **转发与引用展开** —— 原推文以完整嵌套对象返回，而不是只给一个 ID。
- ✏️ **编辑状态** —— `isEdited` 与 `editsRemaining`。
- 👤 **每条推文都附带作者资料** —— 粉丝数、关注数、简介、网站、认证类型、注册时间。
- 🎯 **一键过滤转发**，或只抓取账号的 **Highlights（精选）** 标签页。
- 🧑‍🤝‍🧑 **单次运行可排队多个账号**，数量不限。
- 📤 **导出** 为 JSON、CSV、Excel、XML，或通过 API 实时拉取。

### 谁在用

- 📈 **社媒与竞品分析** —— 对比竞争对手的发布节奏、互动率和高效内容形式。
- 🧑‍💻 **AI / 大模型开发者** —— 把时间线喂给 RAG、摘要、情感分析流程，不用自己写爬虫。
- 📰 **研究者与记者** —— 构建可复现的机构或官方账号发言数据集。
- 🏢 **品牌与公关团队** —— 归档自家品牌的对外表达并追踪变化。
- 🤝 **红人营销** —— 付费投放前核实互动数据与粉丝量是否匹配。
- 💼 **销售线索团队** —— 用每条推文附带的作者资料丰富潜客名单。
- 📊 **数据团队** —— 定时运行并把新数据推送到 BI、Sheets 或数仓。

### 可以抓取哪些数据

每条推文返回 **35 个字段**。始终有值的字段：

| 字段 | 类型 | 说明 |
|------|------|------|
| `id` | string | 推文 ID |
| `url` | string | 推文直达链接 |
| `text` | string | 完整正文，长推文自动展开 |
| `createdAt` | string | 发布时间 |
| `likeCount` | number | 点赞数 |
| `retweetCount` | number | 转发数 |
| `replyCount` | number | 回复数 |
| `quoteCount` | number | 引用数 |
| `bookmarkCount` | number | 收藏数 |
| `viewCount` | number | 浏览量 |
| `lang` | string | 语言代码 |
| `conversationId` | string | 所属对话（用于还原推文串） |
| `source` | string | 发布客户端 |
| `isReply` / `isRetweet` / `isQuote` / `isPinned` | boolean | 推文类型标记 |
| `possiblySensitive` | boolean | 敏感内容标记 |
| `isEdited` / `editsRemaining` | boolean / number | 编辑状态 |
| `tweetsMode` | string | `full` 或 `limited`，说明该账号公开时间线的深度 |
| `queriedUsername` | string | 你请求的用户名，便于批量运行时区分 |
| `author` | object | 完整作者资料（粉丝、关注、简介、网站、认证类型、注册时间、头像、横幅等） |

内容中存在时才有值的字段：

| 字段 | 类型 | 说明 |
|------|------|------|
| `media` | array | 图片与视频：`type`、`image`、**MP4 `video`**、`durationMs` |
| `hashtags` / `mentions` / `links` | array | 话题标签、@提及、已还原外链（纯字符串数组） |
| `card` | object | 链接卡片：`name`、`url`、`title`、`description`、`image`、`domain` |
| `quotedTweet` / `retweetOf` | object | 被引用 / 被转发的原推文（完整嵌套对象） |
| `inReplyToId` / `inReplyToUserId` / `replyToUsername` | string | 回复对象 |
| `place` | object | 地理标记 |
| `article` | object | 长文：`title`、`previewText`、`coverImage` |

所有字段名统一使用 camelCase，实体字段是扁平字符串数组 —— 不存在 `id_str` / `screen_name` / `user_mentions` 混用需要你再做一次规范化。

### 使用步骤

1. 打开 [X（Twitter）用户推文抓取工具](https://apify.com/myagizm/x-tweets-scraper)。
2. 在 *X (Twitter) usernames* 中填入一个或多个账号：`nasa`、`@OpenAI`、`https://x.com/spacex` 都可以。
3. （可选）设置 **Max tweets per account** 限制单个账号的抓取上限（1–3000）。
4. （可选）关闭 **Include reposts** 只保留原创推文；或打开 **Highlights only** 只抓精选标签页。
5. 点击 **▶ Start**。
6. 把结果导出为 JSON、CSV、Excel、XML，或通过 API 获取。

### 输入示例

```json
{ "usernames": ["nasa", "@OpenAI"], "resultsLimit": 500, "includeRetweets": true }
```

### 输出示例

```json
{
  "id": "2081846100173177313",
  "url": "https://x.com/vercel/status/2081846100173177313",
  "text": "DeepsecBench evaluates model accuracy, cost, and speed in finding real vulnerabilities.",
  "createdAt": "Mon Jul 27 21:18:19 +0000 2026",
  "likeCount": 214, "retweetCount": 31, "replyCount": 12,
  "quoteCount": 3, "bookmarkCount": 89, "viewCount": 41207,
  "lang": "en", "source": "Typefully",
  "isPinned": true, "isRetweet": false, "isReply": false,
  "tweetsMode": "full",
  "links": ["https://vercel.com/blog"],
  "media": [{ "type": "photo", "image": "https://pbs.twimg.com/media/xxxx.jpg", "video": null }],
  "card": { "title": "DeepsecBench", "domain": "vercel.com", "url": "https://t.co/DUen0tXEtD" },
  "author": { "username": "vercel", "name": "Vercel", "followers": 452118, "isVerified": true }
}
```

### 时间线深度说明（重要）

X 并不会把所有账号的完整历史展示给未登录访客，因此我们把限制写在明面上：

| `tweetsMode` | 含义 | 通常可取 |
|---|---|---|
| `full` | 账号提供分页的公开时间线，工具会逐页翻取 | **约 1,000–1,200 条** |
| `limited` | 账号只对外展示最近的一小部分，没有分页游标 | **约 100–130 条** |

品牌、媒体、机构和大多数普通创作者账号属于 `full`；少数超大个人账号属于 `limited` —— 对这类账号，任何免登录工具都只能拿到这个样本量。每条数据都带 `tweetsMode`，你永远知道自己拿到的是哪一种，而不是莫名其妙少了几行。

一万条以上的完整存档需要登录账号，不在本工具范围内。

### 数据准确性

指标在运行时实时读取，不做缓存。在一次 200 条推文的基准测试中，随机抽取 15 条与另一个独立接口交叉核对：**15/15 完全一致**，平均偏差 **0.02%**（唯一差异来自一条 40 分钟前发布、点赞数仍在上涨的推文）。同一次运行 **0 条重复**，时间线没有断档。

### 价格

采用**按结果计费**（pay-per-result）：只为真正拿到的数据付费，不按运行时间收费。

- 💸 成本随结果数量线性增长，预算可以提前算清楚。
- 📉 Apify 的 Bronze / Silver / Gold / Platinum / Diamond 套餐享受阶梯折扣。
- 🆓 新账号自带每月免费额度，第一次运行不花钱。
- 🚫 没有代理附加费、没有单次请求费、没有最低消费。

实时价格请见 [Apify 商店页面](https://apify.com/myagizm/x-tweets-scraper)。

### 其他 X（Twitter）数据

- 👤 **[X（Twitter）账号资料抓取工具](https://apify.com/myagizm/x-profile-scraper)** —— 批量获取粉丝数、关注数、简介、网站、认证状态与注册时间。
- 🔗 **[X（Twitter）单条推文抓取工具](https://apify.com/myagizm/x-tweet-scraper)** —— 粘贴推文链接或 ID，返回完整数据。
- 📈 **[X（Twitter）热门趋势抓取工具](https://apify.com/myagizm/x-trends-scraper)** —— 按国家或城市获取实时趋势与讨论量。

完整工具家族见 **[myagizm 商店主页](https://apify.com/myagizm)**：Instagram、TikTok、LinkedIn、Reddit、YouTube、Google Maps 抓取工具都采用同样的免登录、按结果计费方式。

### 配合 AI 智能体使用（MCP）

本 Actor 已接入 **Apify MCP 服务器**，Claude、ChatGPT、Cursor 等助手可以把它当作工具直接调用，用自然语言提问即可获得结构化结果，无需写胶水代码。

### 集成与 API

支持 **Make、Zapier、n8n、Slack、Airbyte、Gumloop、CrewAI、IFTTT、Lindy、GitHub、Google Sheets、Google Drive**，以及 Webhook、定时任务和 MCP 服务器。

```bash
curl -X POST "https://api.apify.com/v2/acts/myagizm~x-tweets-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "usernames": ["nasa", "@OpenAI"], "resultsLimit": 500, "includeRetweets": true }'
```

把 `format` 参数改成 `json`、`csv`、`xlsx` 或 `xml` 即可导出不同格式。

### 常见问题

**抓取推文合法吗？**
本工具只采集公开可见的推文，即任何未登录访客都能看到的内容，不会登录，也不会访问受保护或已删除的内容。数据用途的合规责任由使用者承担；若涉及个人数据请遵守 GDPR / CCPA 等法规和平台条款。

**需要 X API Key、开发者账号或登录吗？**
不需要。没有 API Key、没有 OAuth、不用买 X API 套餐、不用登录、不用 Cookie。

**一个账号最多能抓多少条？**
提供分页时间线的账号通常约 1,000–1,200 条；只展示近期样本的账号约 100–130 条。`tweetsMode` 字段会告诉你属于哪种。

**能抓完整历史存档吗？**
不能。未登录状态下 X 不会公开数万条历史，任何免登录工具都做不到。我们选择把上限写清楚，而不是悄悄少给。

**能按关键词或话题搜索推文吗？**
本工具不支持 —— X 不向未登录客户端开放搜索接口，因此只能按账号抓取。

**包含浏览量吗？**
包含。每条推文都返回 `viewCount`。

**能拿到图片和视频链接吗？**
可以，`media` 数组包含图片地址与**可直接下载的 MP4 链接**。注意这些地址由 X 签名且会过期，请及时下载。

**能一次抓多个账号吗？**
可以，账号数量不限。

**支持导出 CSV / Excel / JSON 吗？**
支持 JSON、CSV、Excel、XML，可在控制台导出或通过 API `format` 参数获取。

**需要配置代理吗？**
不需要，代理已内置托管。

**可以定时运行吗？**
可以，使用 Apify Schedules 或通过 API / Webhook 触发。

**能抓私密（受保护）账号吗？**
不能。受保护账号会被跳过并记录在运行日志中。

**数据有多新？**
不缓存，每次运行都读取当前公开页面。

**为什么 `place` 和 `article` 经常是 null？**
现在 X 上带地理标记的推文很少，长文属于 Premium 功能，所以大多数推文本身就没有这两项内容；一旦存在就会返回。

### 免责声明

本工具为独立第三方工具，与 X Corp.、Twitter 及其关联公司无任何隶属、认可或赞助关系。所有商标归各自所有者。

本 Actor 只采集**公开可见**的数据 —— 即任何未登录访客都能看到的内容。它不登录、不绕过访问控制、不获取私密或已删除内容。数据的使用责任由使用者承担：如涉及个人数据，请遵守 GDPR、CCPA 等相关法规以及平台条款。

### 相关搜索

推特爬虫 · x 爬虫 · 抓取推文 · 推文导出 csv · 推文导出 excel · twitter 数据抓取 · twitter api 替代方案 · 免登录 twitter 抓取 · 推特时间线抓取 · 批量抓取推文 · 推特互动数据 · 推特浏览量抓取 · 推特媒体下载 · 推特视频链接提取 · 推特数据集 · 推特情感分析数据 · 竞品推特分析 · 推特监控工具 · 推特爬虫 api · x 平台数据采集

# Actor input Schema

## `usernames` (type: `array`):

Usernames, @handles or profile URLs whose timeline you want, e.g. "nasa", "@OpenAI".

## `resultsLimit` (type: `integer`):

Hard cap per account. Most accounts return up to ~1,000 tweets; a few only expose their latest ~100 posts publicly (reported as tweetsMode in every item).

## `includeRetweets` (type: `boolean`):

Keep reposts (retweets) in the output.

## `highlightsOnly` (type: `boolean`):

Return only the account's pinned Highlights tab instead of the full timeline.

## Actor input object example

```json
{
  "usernames": [
    "nasa"
  ],
  "resultsLimit": 100,
  "includeRetweets": true,
  "highlightsOnly": false
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped results as structured JSON.

# 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 = {
    "usernames": [
        "nasa"
    ],
    "resultsLimit": 100,
    "includeRetweets": true,
    "highlightsOnly": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("myagizm/x-tweets-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 = {
    "usernames": ["nasa"],
    "resultsLimit": 100,
    "includeRetweets": True,
    "highlightsOnly": False,
}

# Run the Actor and wait for it to finish
run = client.actor("myagizm/x-tweets-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "usernames": [
    "nasa"
  ],
  "resultsLimit": 100,
  "includeRetweets": true,
  "highlightsOnly": false
}' |
apify call myagizm/x-tweets-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=myagizm/x-tweets-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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