# 🐦 Twitter (X) Search Scraper (`api-empire/twitter-search-scraper`) Actor

Scrape Twitter (X) search results, including tweets, authors, hashtags, engagement metrics, media, timestamps, and URLs. Ideal for brand monitoring, sentiment analysis, trend tracking, market research, lead generation, and social media analytics.

- **URL**: https://apify.com/api-empire/twitter-search-scraper.md
- **Developed by:** [API Empire](https://apify.com/api-empire) (community)
- **Categories:** Social media, Lead generation, Other
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.99 / 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.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## 🐦 Twitter (X) Search Scraper

Extract clean, structured tweets from **X (formerly Twitter) search results** at scale — no Twitter API key, no developer account, no fuss. Feed it plain keywords or full **advanced-search operators** and get back tweet text, media, engagement stats, links, and the full author profile.

> Built for marketers, researchers, journalists, and data teams who need reliable Twitter/X search data in JSON, CSV, or Excel.

---

### ✨ Why choose this scraper?

- 🧠 **Advanced search, simplified** — every X operator (`from:`, `to:`, `filter:`, `since:`, `min_faves:`, `lang:`, `near:` …) is exposed as a friendly checkbox or field.
- 🛰️ **Self-healing proxy ladder** — starts with no proxy and automatically escalates to **datacenter → residential** the moment X rate-limits you, then sticks with what works. No babysitting.
- 💾 **Live results** — tweets stream into your dataset as they're found, so a long run never loses data.
- 👤 **Rich author data** — optionally attach full profile info (followers, bio, location, join date) to every tweet.
- 💬 **Reply threads** — pull replies up to 20 levels deep.
- 📊 **Per-section output** — results are grouped per search query in the key-value store *and* tagged with a `searchQuery` column in the dataset table.

---

### 🔑 Key Features

| Feature | Description |
|--------|-------------|
| 🔎 Bulk queries | Search many terms in one run — each is collected separately. |
| 🔢 Tweet limit | Cap the number of tweets per query. |
| 📅 Date filters | `since` / `until`, absolute (`2026-01-01`) or relative (`2 days`, `1 month`). |
| 📈 Engagement filters | Minimum replies / retweets / likes. |
| 👥 Account filters | From / to / mentioning specific accounts. |
| ✅🚫 Include & exclude | Media, images, videos, news, verified, links, quotes, replies… |
| 🌍 Language | Restrict to any of 40+ languages. |
| 💬 Replies | Recursive reply scraping, depth 0–20. |

---

### 📥 Input

```json
{
  "searchQueries": ["web scraping", "from:openai filter:videos"],
  "tweetsDesired": 100,
  "repliesDepth": 0,
  "includeUserInfo": true,
  "since": "2026-01-01",
  "minLikes": 10,
  "language": "en",
  "authToken": "YOUR_X_AUTH_TOKEN_COOKIE",
  "csrfToken": "YOUR_X_CT0_COOKIE",
  "proxyConfiguration": { "useApifyProxy": false }
}
````

| Field | Type | Description |
|-------|------|-------------|
| `searchQueries` | array | One or more search terms (plain or advanced syntax). **Bulk input.** |
| `tweetsDesired` | integer | Max tweets per query (default 100). |
| `repliesDepth` | integer | 0 = none, 1 = direct replies, 2 = replies of replies… (max 20). |
| `includeUserInfo` | boolean | Attach the author profile to every tweet. |
| `since` / `until` | string | Date window — `YYYY-MM-DD` or relative (`1 month`). |
| `minReplies` / `minRetweets` / `minLikes` | integer | Engagement floors. |
| `fromTheseAccounts` / `toTheseAccounts` / `mentioningTheseAccounts` | array | Account filters. |
| `media`, `images`, `videos`, `verified`, … | boolean | Include-only filters. |
| `excludeMedia`, `excludeImages`, … | boolean | Exclusion filters. |
| `language` | string | Language code or `any`. |
| `near` | string | Search near a location. |
| `textLengthLessThan` | integer | Keep only short tweets. |
| `authToken` / `csrfToken` | string | **Required.** Your X `auth_token` and `ct0` cookies from a logged-in session. |
| `proxyConfiguration` | object | Proxy settings (see below). |

***

### 📤 Output

Each dataset item is one tweet:

```json
{
  "id": "2058075699500720183",
  "url": "https://x.com/InduTripat82427/status/2058075699500720183",
  "verified": true,
  "username": "@InduTripat82427",
  "fullname": "Indu Tripathi",
  "avatar": "https://pbs.twimg.com/profile_images/.../AQwwYH26.jpg",
  "images": ["https://pbs.twimg.com/amplify_video_thumb/.../img.jpg"],
  "timestamp": "2026-05-23T06:40:58.000Z",
  "text": "Web scraping just leveled up …",
  "links": [],
  "isQuote": false,
  "isRetweet": false,
  "isReply": false,
  "likes": 370,
  "replies": 30,
  "retweets": 83,
  "quotes": 0,
  "searchQuery": "web scraping",
  "media": [{ "type": "video", "url": "https://video.twimg.com/.../m5SKxpYgRo8oG8ah.mp4" }],
  "tweetUserId": "1993005544400207878",
  "user": {
    "userId": "1993005544400207878",
    "username": "InduTripat82427",
    "userFullName": "Indu Tripathi",
    "description": "AI & Tech Influencer …",
    "location": "MP",
    "website": "https://ai-for-gods.beehiiv.com/",
    "joinDate": "2025-11-24T17:15:40.000Z",
    "verified": true,
    "totalLikes": 1939,
    "totalTweets": 3339,
    "totalFollowing": 45,
    "totalFollowers": 16858,
    "totalMediaCount": 639,
    "url": "https://x.com/InduTripat82427"
  }
}
```

**Per-section output:** the dataset has a `searchQuery` column so you can split by query, and the key-value store holds a grouped `OUTPUT` (`{ "query": [ …tweets ] }`) plus one `tweets_<query>` snapshot per search.

When `repliesDepth > 0`, each tweet additionally carries a nested `replies` array of the same shape.

***

### 🛰️ Proxy configuration

The scraper uses a **smart fallback ladder**:

1. 🌐 **No proxy (direct)** — fastest, tried first.
2. 🏢 **Datacenter proxy** — used automatically if X blocks the direct connection.
3. 🏠 **Residential proxy** — final fallback, retried up to 3 times; once reached it stays for the rest of the run.

Every escalation is logged. For large runs, pick **RESIDENTIAL** in the proxy field to start there immediately.

***

### 🚀 How to Use (Apify Console)

1. Log in at [console.apify.com](https://console.apify.com) → **Actors**.
2. Open **Twitter (X) Search Scraper**.
3. Enter your **search queries** and tweak filters / proxy.
4. Click **Start**.
5. Watch the live log fill up with collected tweets.
6. Open the **Output** tab and export to **JSON / CSV / Excel**.

### 🤖 Use via API

```bash
curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"searchQueries":["web scraping"],"tweetsDesired":50}'
```

***

### 💳 Pricing

This actor uses the **pay-per-event** model with a single primary event:

- **`row_result`** — billed once per tweet returned in your dataset.

You only pay for the data you receive. Platform start-up time is covered by the synthetic `apify-actor-start` event.

***

### ❓ FAQ

**Do I need a Twitter/X API key?** No. The scraper works against X's public web search.

**Why do some runs switch to a residential proxy?** X aggressively rate-limits datacenter IPs. The actor detects this and escalates automatically so your run keeps going.

**Can I scrape replies?** Yes — set `repliesDepth` to 1 or higher (up to 20). Note this is much slower.

**Can I use my own account?** Yes — paste your `auth_token` and `ct0` cookies in the Authentication section.

***

### ⚖️ Legal & responsible use

- Only **publicly available** data is collected.
- You are responsible for complying with X's Terms of Service and applicable laws (GDPR, CCPA, etc.).
- Do not use scraped data for spam or harassment.

### 🛟 Support

Found a bug or need a new field? Open an issue on the actor's **Issues** tab — real answers, fast.

# Actor input Schema

## `searchQueries` (type: `array`):

One or more search terms (bulk supported). Each line is searched separately. Plain text or X advanced-search syntax both work, e.g. <code>ai agents</code> or <code>from:openai filter:videos</code>.

## `tweetsDesired` (type: `integer`):

Maximum number of tweets to collect for each search query.

## `repliesDepth` (type: `integer`):

How many levels of replies to scrape. <b>0</b> = no replies, <b>1</b> = tweet + its direct replies, <b>2</b> = replies of replies, etc. Higher values are much slower.

## `includeUserInfo` (type: `boolean`):

Attach the full author profile (followers, bio, location, join date, …) to every tweet. Slightly slower but far richer data.

## `authToken` (type: `string`):

Paste your X <code>auth\_token</code> cookie (from a logged-in browser session) so the scraper uses your session.

## `csrfToken` (type: `string`):

Paste your X <code>ct0</code> (CSRF) cookie that matches the auth\_token above.

## `since` (type: `string`):

Oldest date to include, format <code>YYYY-MM-DD</code>. Relative values like <code>1 month</code> or <code>2 days</code> also work.

## `until` (type: `string`):

Newest date to include, format <code>YYYY-MM-DD</code>. Relative values like <code>1 month</code> also work.

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

Only keep tweets with at least this many replies.

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

Only keep tweets with at least this many retweets.

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

Only keep tweets with at least this many likes.

## `fromTheseAccounts` (type: `array`):

Only tweets authored by these usernames (with or without @).

## `toTheseAccounts` (type: `array`):

Only tweets that are replies to these usernames.

## `mentioningTheseAccounts` (type: `array`):

Only tweets that mention these usernames.

## `nativeRetweets` (type: `boolean`):

Include only native retweets (retweets without comment).

## `media` (type: `boolean`):

Include only tweets that contain media (images, videos, gifs).

## `images` (type: `boolean`):

Include only tweets that contain images.

## `videos` (type: `boolean`):

Include only tweets that contain videos.

## `news` (type: `boolean`):

Include only tweets that contain news links.

## `verified` (type: `boolean`):

Include only tweets from verified accounts.

## `nativeVideo` (type: `boolean`):

Include only tweets that contain native video.

## `replies` (type: `boolean`):

Include only tweets that are replies.

## `links` (type: `boolean`):

Include only tweets that contain links.

## `safe` (type: `boolean`):

Include only tweets marked as potentially sensitive.

## `quote` (type: `boolean`):

Include only tweets that quote other tweets.

## `proVideo` (type: `boolean`):

Include only tweets that contain pro video.

## `excludeNativeRetweets` (type: `boolean`):

Exclude native retweets from the results.

## `excludeMedia` (type: `boolean`):

Exclude tweets that contain media.

## `excludeImages` (type: `boolean`):

Exclude tweets that contain images.

## `excludeVideos` (type: `boolean`):

Exclude tweets that contain videos.

## `excludeNews` (type: `boolean`):

Exclude tweets that contain news links.

## `excludeVerified` (type: `boolean`):

Exclude tweets from verified accounts.

## `excludeNativeVideo` (type: `boolean`):

Exclude tweets that contain native video.

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

Exclude tweets that are replies.

## `excludeLinks` (type: `boolean`):

Exclude tweets that contain links.

## `excludeSafe` (type: `boolean`):

Exclude tweets marked as potentially sensitive.

## `excludeQuote` (type: `boolean`):

Exclude tweets that quote other tweets.

## `excludeProVideo` (type: `boolean`):

Exclude tweets that contain pro video.

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

Restrict results to a single language.

## `near` (type: `string`):

Search near a location (e.g. a city name).

## `textLengthLessThan` (type: `integer`):

Keep only tweets whose text is shorter than this many characters.

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

By default the scraper runs with no proxy and automatically falls back to a datacenter, then a residential proxy if X blocks the connection. Pick RESIDENTIAL here to start (and stay) on residential immediately — recommended for large runs.

## Actor input object example

```json
{
  "searchQueries": [
    "web scraping"
  ],
  "tweetsDesired": 10,
  "repliesDepth": 0,
  "includeUserInfo": true,
  "minReplies": 0,
  "minRetweets": 0,
  "minLikes": 0,
  "fromTheseAccounts": [],
  "toTheseAccounts": [],
  "mentioningTheseAccounts": [],
  "nativeRetweets": false,
  "media": false,
  "images": false,
  "videos": false,
  "news": false,
  "verified": false,
  "nativeVideo": false,
  "replies": false,
  "links": false,
  "safe": false,
  "quote": false,
  "proVideo": false,
  "excludeNativeRetweets": false,
  "excludeMedia": false,
  "excludeImages": false,
  "excludeVideos": false,
  "excludeNews": false,
  "excludeVerified": false,
  "excludeNativeVideo": false,
  "excludeReplies": false,
  "excludeLinks": false,
  "excludeSafe": false,
  "excludeQuote": false,
  "excludeProVideo": false,
  "language": "any",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "searchQueries": [
        "web scraping"
    ],
    "tweetsDesired": 10,
    "since": "",
    "until": "",
    "language": "any",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("api-empire/twitter-search-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 = {
    "searchQueries": ["web scraping"],
    "tweetsDesired": 10,
    "since": "",
    "until": "",
    "language": "any",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("api-empire/twitter-search-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 '{
  "searchQueries": [
    "web scraping"
  ],
  "tweetsDesired": 10,
  "since": "",
  "until": "",
  "language": "any",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call api-empire/twitter-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "🐦 Twitter (X) Search Scraper",
        "description": "Scrape Twitter (X) search results, including tweets, authors, hashtags, engagement metrics, media, timestamps, and URLs. Ideal for brand monitoring, sentiment analysis, trend tracking, market research, lead generation, and social media analytics.",
        "version": "0.1",
        "x-build-id": "cfn2TNVbeMCYOeU9j"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/api-empire~twitter-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-api-empire-twitter-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/api-empire~twitter-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-api-empire-twitter-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/api-empire~twitter-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-api-empire-twitter-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "authToken",
                    "csrfToken"
                ],
                "properties": {
                    "searchQueries": {
                        "title": "🔎 Search queries",
                        "type": "array",
                        "description": "One or more search terms (bulk supported). Each line is searched separately. Plain text or X advanced-search syntax both work, e.g. <code>ai agents</code> or <code>from:openai filter:videos</code>.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "tweetsDesired": {
                        "title": "🔢 Max tweets per query",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of tweets to collect for each search query.",
                        "default": 10
                    },
                    "repliesDepth": {
                        "title": "💬 Replies depth",
                        "minimum": 0,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many levels of replies to scrape. <b>0</b> = no replies, <b>1</b> = tweet + its direct replies, <b>2</b> = replies of replies, etc. Higher values are much slower.",
                        "default": 0
                    },
                    "includeUserInfo": {
                        "title": "👤 Include author profile in every tweet",
                        "type": "boolean",
                        "description": "Attach the full author profile (followers, bio, location, join date, …) to every tweet. Slightly slower but far richer data.",
                        "default": true
                    },
                    "authToken": {
                        "title": "🔑 X auth_token cookie (required)",
                        "type": "string",
                        "description": "Paste your X <code>auth_token</code> cookie (from a logged-in browser session) so the scraper uses your session."
                    },
                    "csrfToken": {
                        "title": "🔑 X ct0 cookie (required)",
                        "type": "string",
                        "description": "Paste your X <code>ct0</code> (CSRF) cookie that matches the auth_token above."
                    },
                    "since": {
                        "title": "📅 Tweets newer than (since)",
                        "pattern": "^$|^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
                        "type": "string",
                        "description": "Oldest date to include, format <code>YYYY-MM-DD</code>. Relative values like <code>1 month</code> or <code>2 days</code> also work."
                    },
                    "until": {
                        "title": "📅 Tweets older than (until)",
                        "pattern": "^$|^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
                        "type": "string",
                        "description": "Newest date to include, format <code>YYYY-MM-DD</code>. Relative values like <code>1 month</code> also work."
                    },
                    "minReplies": {
                        "title": "↩️ Minimum replies",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only keep tweets with at least this many replies.",
                        "default": 0
                    },
                    "minRetweets": {
                        "title": "🔁 Minimum retweets",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only keep tweets with at least this many retweets.",
                        "default": 0
                    },
                    "minLikes": {
                        "title": "❤️ Minimum likes",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Only keep tweets with at least this many likes.",
                        "default": 0
                    },
                    "fromTheseAccounts": {
                        "title": "📤 From these accounts",
                        "type": "array",
                        "description": "Only tweets authored by these usernames (with or without @).",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "toTheseAccounts": {
                        "title": "📥 To these accounts",
                        "type": "array",
                        "description": "Only tweets that are replies to these usernames.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "mentioningTheseAccounts": {
                        "title": "📣 Mentioning these accounts",
                        "type": "array",
                        "description": "Only tweets that mention these usernames.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "nativeRetweets": {
                        "title": "🔁 Only native retweets",
                        "type": "boolean",
                        "description": "Include only native retweets (retweets without comment).",
                        "default": false
                    },
                    "media": {
                        "title": "🖼️ Only tweets with media",
                        "type": "boolean",
                        "description": "Include only tweets that contain media (images, videos, gifs).",
                        "default": false
                    },
                    "images": {
                        "title": "🌅 Only tweets with images",
                        "type": "boolean",
                        "description": "Include only tweets that contain images.",
                        "default": false
                    },
                    "videos": {
                        "title": "🎬 Only tweets with videos",
                        "type": "boolean",
                        "description": "Include only tweets that contain videos.",
                        "default": false
                    },
                    "news": {
                        "title": "📰 Only tweets with news",
                        "type": "boolean",
                        "description": "Include only tweets that contain news links.",
                        "default": false
                    },
                    "verified": {
                        "title": "✔️ Only from verified users",
                        "type": "boolean",
                        "description": "Include only tweets from verified accounts.",
                        "default": false
                    },
                    "nativeVideo": {
                        "title": "📹 Only tweets with native video",
                        "type": "boolean",
                        "description": "Include only tweets that contain native video.",
                        "default": false
                    },
                    "replies": {
                        "title": "↩️ Only replies",
                        "type": "boolean",
                        "description": "Include only tweets that are replies.",
                        "default": false
                    },
                    "links": {
                        "title": "🔗 Only tweets with links",
                        "type": "boolean",
                        "description": "Include only tweets that contain links.",
                        "default": false
                    },
                    "safe": {
                        "title": "⚠️ Only sensitive-marked tweets",
                        "type": "boolean",
                        "description": "Include only tweets marked as potentially sensitive.",
                        "default": false
                    },
                    "quote": {
                        "title": "💬 Only quote tweets",
                        "type": "boolean",
                        "description": "Include only tweets that quote other tweets.",
                        "default": false
                    },
                    "proVideo": {
                        "title": "🎥 Only tweets with pro video",
                        "type": "boolean",
                        "description": "Include only tweets that contain pro video.",
                        "default": false
                    },
                    "excludeNativeRetweets": {
                        "title": "🚫🔁 Exclude native retweets",
                        "type": "boolean",
                        "description": "Exclude native retweets from the results.",
                        "default": false
                    },
                    "excludeMedia": {
                        "title": "🚫🖼️ Exclude tweets with media",
                        "type": "boolean",
                        "description": "Exclude tweets that contain media.",
                        "default": false
                    },
                    "excludeImages": {
                        "title": "🚫🌅 Exclude tweets with images",
                        "type": "boolean",
                        "description": "Exclude tweets that contain images.",
                        "default": false
                    },
                    "excludeVideos": {
                        "title": "🚫🎬 Exclude tweets with videos",
                        "type": "boolean",
                        "description": "Exclude tweets that contain videos.",
                        "default": false
                    },
                    "excludeNews": {
                        "title": "🚫📰 Exclude tweets with news",
                        "type": "boolean",
                        "description": "Exclude tweets that contain news links.",
                        "default": false
                    },
                    "excludeVerified": {
                        "title": "🚫✔️ Exclude verified users",
                        "type": "boolean",
                        "description": "Exclude tweets from verified accounts.",
                        "default": false
                    },
                    "excludeNativeVideo": {
                        "title": "🚫📹 Exclude native video",
                        "type": "boolean",
                        "description": "Exclude tweets that contain native video.",
                        "default": false
                    },
                    "excludeReplies": {
                        "title": "🚫↩️ Exclude replies",
                        "type": "boolean",
                        "description": "Exclude tweets that are replies.",
                        "default": false
                    },
                    "excludeLinks": {
                        "title": "🚫🔗 Exclude tweets with links",
                        "type": "boolean",
                        "description": "Exclude tweets that contain links.",
                        "default": false
                    },
                    "excludeSafe": {
                        "title": "🚫⚠️ Exclude sensitive-marked tweets",
                        "type": "boolean",
                        "description": "Exclude tweets marked as potentially sensitive.",
                        "default": false
                    },
                    "excludeQuote": {
                        "title": "🚫💬 Exclude quote tweets",
                        "type": "boolean",
                        "description": "Exclude tweets that quote other tweets.",
                        "default": false
                    },
                    "excludeProVideo": {
                        "title": "🚫🎥 Exclude pro video",
                        "type": "boolean",
                        "description": "Exclude tweets that contain pro video.",
                        "default": false
                    },
                    "language": {
                        "title": "🌍 Tweet language",
                        "enum": [
                            "any",
                            "ar",
                            "bn",
                            "bg",
                            "ca",
                            "hr",
                            "cs",
                            "da",
                            "nl",
                            "en",
                            "fi",
                            "fr",
                            "de",
                            "el",
                            "gu",
                            "he",
                            "hi",
                            "hu",
                            "id",
                            "it",
                            "ja",
                            "kn",
                            "ko",
                            "mr",
                            "no",
                            "fa",
                            "pl",
                            "pt",
                            "ro",
                            "ru",
                            "sr",
                            "zh-cn",
                            "sk",
                            "sl",
                            "es",
                            "sv",
                            "ta",
                            "th",
                            "zh-tw",
                            "tr",
                            "uk",
                            "ur",
                            "vi"
                        ],
                        "type": "string",
                        "description": "Restrict results to a single language.",
                        "default": "any"
                    },
                    "near": {
                        "title": "📍 Near location",
                        "type": "string",
                        "description": "Search near a location (e.g. a city name)."
                    },
                    "textLengthLessThan": {
                        "title": "✂️ Text length less than",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Keep only tweets whose text is shorter than this many characters."
                    },
                    "proxyConfiguration": {
                        "title": "🛰️ Proxy configuration",
                        "type": "object",
                        "description": "By default the scraper runs with no proxy and automatically falls back to a datacenter, then a residential proxy if X blocks the connection. Pick RESIDENTIAL here to start (and stay) on residential immediately — recommended for large runs.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
