# Tweet Analytics Scraper - X Post Metrics, Views & Likes (`zaver.api/tweet-analytics-scraper`) Actor

Get detailed analytics for any public tweet - no login, no API key. Paste X (Twitter) status URLs and get likes, retweets, quotes, replies, views, plus author follower counts and tweet text. Export to CSV, JSON or Excel, run via API or on a schedule.

- **URL**: https://apify.com/zaver.api/tweet-analytics-scraper.md
- **Developed by:** [Zaver](https://apify.com/zaver.api) (community)
- **Features:** Limited permissions
- **Stats:** 22 total users, 6 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 tweet analytics & metrics

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Tweet Analytics Scraper (X / Twitter) 📊

**Tweet Analytics Scraper** gets **detailed metrics for any public tweet** — **no login, no API key, no developer account**. Paste one or more X (Twitter) status URLs and get **likes, retweets, quotes, replies and views**, plus the author's **follower count** and the tweet text. Export to **CSV, Excel or JSON**, or pull it via the **API**.

Built for **social media analytics, competitor tracking, campaign reporting and viral-tweet research** — the engagement data X's own API now charges heavily for.

- ✅ **No login, no API key** — no X developer account or paid API tier needed
- ✅ **Full engagement set** — likes, retweets, quotes, replies, **views/impressions**
- ✅ **Author stats** — follower, following and tweet counts
- ✅ Tweet **text, publish date and video duration**
- ✅ **Bulk** — analyze hundreds of tweets in one run
- ✅ **CSV, Excel, JSON, XML** export + full API, scheduler and integrations

***

### What data does it extract?

One row per tweet:

| Field | Description | Example |
|---|---|---|
| `channel_id` | Author @handle | `nasa` |
| `title` | Tweet text | `We have liftoff 🚀` |
| `likes` | Like count | `12000` |
| `shares` | Retweets | `3400` |
| `quotes` | Quote tweets | `210` |
| `comments` | Replies | `880` |
| `view_count` | Views / impressions | `900000` |
| `author_followers` | Author follower count | `95000000` |
| `publish_date` | When it was posted | `2026-01-01` |
| `tweet_url` | Canonical tweet URL | `https://x.com/nasa/status/…` |

### Why choose this tweet analytics scraper?

- **No X API needed.** X's official API is expensive and rate-limited. This reads the public tweet page directly, so you get engagement data — including **views** — without a developer account.
- **The complete engagement picture.** Most tools miss quotes and views; this returns likes, retweets, quotes, replies *and* views in one row, plus author stats for context.
- **Bulk and schedulable.** Feed a list of tweet URLs, run on a schedule, and track how a campaign's tweets perform over time.

### How to analyze tweets (step by step)

1. Paste one or more **tweet URLs** (`https://x.com/USER/status/ID`).
2. Click **Start**.
3. Download from the **Storage → Dataset** tab as **CSV, Excel, JSON or XML**, or read via the API.

#### Example input

```json
{
  "tweetUrls": [
    "https://x.com/NASA/status/1750500000000000000",
    "https://x.com/SpaceX/status/1750600000000000000"
  ]
}
```

#### Example output

```json
{
  "channel_id": "nasa",
  "title": "We have liftoff 🚀",
  "likes": 12000,
  "shares": 3400,
  "quotes": 210,
  "comments": 880,
  "view_count": 900000,
  "author_followers": 95000000,
  "publish_date": "2026-01-01",
  "tweet_url": "https://x.com/nasa/status/1750500000000000000"
}
```

#### Run it via the Apify API

```bash
curl "https://api.apify.com/v2/acts/YOUR~ACTOR/runs?token=YOUR_TOKEN" \
  -X POST -H "Content-Type: application/json" \
  -d '{"tweetUrls": ["https://x.com/NASA/status/1750500000000000000"]}'
```

Works with the **Apify SDK**, **scheduled runs**, **webhooks**, and integrations for **Make, Zapier, n8n, Google Sheets and LangChain**.

### Pricing — pay only for results

You are billed **per tweet successfully analyzed**. Removed, protected or unparseable tweets return an error row and cost **nothing**.

| Result type | Price |
|---|---|
| Analyzed tweet | **$0.002 per tweet** ($2 / 1,000) |

### Frequently asked questions

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

No. The Actor reads the public tweet page — no API key, no login, no paid X tier.

#### Does it return view counts?

Yes, where X exposes them on the public page. Views are included alongside likes, retweets, quotes and replies.

#### Can it analyze many tweets at once?

Yes. Pass a list of tweet URLs; each becomes one row. Run on a schedule to track performance over time.

#### Why did a tweet come back as "unavailable"?

The tweet may be deleted, from a protected account, age-restricted, or the page format changed. Those rows are not billed.

#### Is this legal?

The Actor collects only **publicly available** data. You are responsible for using it in compliance with the laws that apply to you and X's terms.

### Support & roadmap

Open an issue on the Actor's **Issues** tab. On the roadmap: **bulk tweet URLs from a profile or search**, and **media/engagement-rate fields**.

### 🔌 Use this Actor from Claude, ChatGPT or Cursor (MCP)

Add it as a tool in any MCP client - Claude Code, Claude Desktop, Cursor, VS Code or ChatGPT - through Apify's hosted MCP server. The client runs the Actor for you and reads the results back, so you never leave the chat.

**Actor-specific server URL**

```
https://mcp.apify.com/?tools=actors,docs,zaver.api/tweet-analytics-scraper
```

**Claude Code** - one command:

```bash
claude mcp add --transport http tweetanalytics "https://mcp.apify.com/?tools=actors,docs,zaver.api/tweet-analytics-scraper"
```

**Claude Desktop, Cursor or any client with a JSON config:**

```json
{
  "mcpServers": {
    "tweetanalytics": {
      "url": "https://mcp.apify.com/?tools=actors,docs,zaver.api/tweet-analytics-scraper"
    }
  }
}
```

The first connection opens a browser to sign in to Apify, so no API token sits in your config. If your client cannot do OAuth, send `Authorization: Bearer <YOUR_APIFY_TOKEN>` instead.

Then simply ask:

> How many views and reposts did this tweet get?

### Related actors

- [Social Media Metrics Scraper](https://apify.com/zaver.api/universal-social-media-metrics-scraper) — one API for Instagram, Facebook, YouTube and X metrics
- [Facebook Post Analytics](https://apify.com/zaver.api/facebook-post-analytics) — Facebook video and reel views, reactions and shares
- [Instagram Post Scraper](https://apify.com/zaver.api/instagram-post-scraper) — posts and carousels from profiles, hashtags or locations
- [Instagram Scraper](https://apify.com/zaver.api/instagram-scraper) — all-in-one: posts, reels, comments, profiles, hashtags, places and search
- [Bilibili Scraper (哔哩哔哩)](https://apify.com/zaver.api/bilibili-scraper) — Bilibili videos, search and comments

# Actor input Schema

## `tweetUrls` (type: `array`):

URLs of the tweets (X posts) to analyze. One per line, e.g. <code>https://x.com/NASA/status/1750500000000000000</code>. Works with x.com and twitter.com status links.

## Actor input object example

```json
{
  "tweetUrls": [
    "https://x.com/NASA/status/1750500000000000000"
  ]
}
```

# Actor output Schema

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

One dataset item per tweet, with likes, retweets, quotes, replies, views and author stats.

## `resultsCsv` (type: `string`):

The same records as a CSV download, ready for Excel or Sheets.

## `runSummary` (type: `string`):

Counts for the run: fetches, tweets analyzed and errors.

# 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 = {
    "tweetUrls": [
        "https://x.com/NASA/status/1750500000000000000"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("zaver.api/tweet-analytics-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 = { "tweetUrls": ["https://x.com/NASA/status/1750500000000000000"] }

# Run the Actor and wait for it to finish
run = client.actor("zaver.api/tweet-analytics-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 '{
  "tweetUrls": [
    "https://x.com/NASA/status/1750500000000000000"
  ]
}' |
apify call zaver.api/tweet-analytics-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zaver.api/tweet-analytics-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/m0dY1hptxO0xecr8A/builds/TFsv3sQItceEaIotC/openapi.json
