# Twitter Profile Scraper (`scrapapi/twitter-profile-scraper`) Actor

🐦 Twitter Profile Scraper (twitter-profile-scraper) extracts rich data from X/Twitter profiles—name, handle, bio, followers/following, tweets count, location, website, verified status, join date, images & more. 🔎 Perfect for research, lead gen & analytics. 🚀 Fast, reliable, API-ready.

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

## Pricing

$19.99/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

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

## 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 Profile Scraper

Twitter Profile Scraper is an Apify actor that extracts structured tweet data and profile metadata from public X/Twitter without manual effort. It solves the challenge of turning scattered profile timelines into clean, analysis-ready records, working as both an X profile scraper and a Twitter user scraper for marketers, developers, data analysts, and researchers. Use it to build repeatable, large-scale pipelines that scrape Twitter profiles and keyword timelines for analytics, enrichment, and reporting.

### What data / output can you get?

The actor pushes structured JSON records to the Apify dataset. Each record represents a tweet with optional user metadata (legacy profile fields) attached. Below are core fields as they appear in the output:

| Data type | Description | Example value |
| --- | --- | --- |
| id_str | Unique tweet ID (string) | "1519480761749016577" |
| full_text | Tweet text (full) | "Next I'm buying Coca-Cola to put the cocaine back in" |
| created_at | Tweet creation time (string) | "Thu Apr 28 00:56:58 +0000 2022" |
| favorite_count | Likes count | 4289223 |
| retweet_count | Retweets/Reposts count | 594435 |
| reply_count | Replies count | 170050 |
| quote_count | Quote count | 167104 |
| bookmark_count | Bookmarks count (defaults to 0 if missing) | 21112 |
| conversation_id_str | Conversation/thread ID | "1519480761749016577" |
| user_id_str | Author user ID (string) | "44196397" |
| lang | Language code | "en" |
| is_quote_status | Whether tweet is a quote | false |
| favorited | Whether favorited by the viewing user | false |
| retweeted | Whether retweeted by the viewing user | false |
| bookmarked | Whether bookmarked by the viewing user (defaults to false) | false |
| display_text_range | Text display index range | [0, 52] |
| entities | Entities object (hashtags, mentions, urls) + timestamps array | {"hashtags": [], "user_mentions": [], "urls": [], "timestamps": []} |
| extended_entities | Extended media entities (if present) | null |
| user.screen_name | Author handle (legacy user object when included) | "elonmusk" |
| user.name | Author display name (legacy user object when included) | "Elon Musk" |
| user.description | Author bio (legacy user object when included) | "Mars & Cars, Chips & Dips" |
| user.followers_count | Followers count (legacy user object when included) | 229033543 |

Notes:
- When addUserInfo is true (default), each tweet includes a legacy user object under user with fields such as screen_name, name, description, followers_count, friends_count, statuses_count, favourites_count, listed_count, created_at, verified, profile_image_url, profile_banner_url, default_profile, default_profile_image, entities, etc.
- In profile-only mode (onlyUserInfo = true), outputs contain only a single object with user: { ...legacy profile fields... } per input.
- If a user is not found or suspended and you enable the corresponding flags, the actor emits minimal objects with notFound: true or suspended: true.
- Export your dataset to JSON, CSV, or Excel directly from Apify.

### Key features

- 🔎 Powerful timeline extraction  
  Collect tweet objects with full_text, timestamps, entities, and engagement counts. Works as a fast Twitter profile data extractor and Twitter profile info scraper for public timelines.

- 🧩 User metadata toggle  
  Include or exclude the legacy user object per tweet via addUserInfo for slimmer payloads or richer context.

- 🧱 Profile-only mode  
  Enable onlyUserInfo to fetch just the profile’s legacy metadata (no tweets) — perfect for enrichment and quick profile audits with a Twitter profile metadata scraper approach.

- 🧠 Keyword search mode  
  Provide keywords in startUrls to scrape public search timelines — useful when you need a Twitter profile crawler alternative that also supports topical discovery.

- 🔄 Robust proxy fallback  
  Automatic escalation: none → datacenter → residential with retries. The actor dynamically captures authorization headers with Playwright and rotates proxies when blocked.

- 📥 Bulk input & live dataset writes  
  Feed URLs, @handles, user IDs, or keywords to process many targets in one run. Items are saved as they’re scraped for reliability and scale.

- 🧪 Developer-friendly & API-ready  
  Built as an Apify actor, it integrates with your stack as a Twitter profile scraping API. Trigger via API, connect to pipelines, or use from Python SDKs.

- 🧭 Sort parameter included  
  Control sortOrder (chronological | relevance) to align with your workflow. The actor uses the platform’s chronological order support where applicable.

- 🧰 Production-focused reliability  
  Playwright-powered collection of auth headers, resilient pagination, and clear notFound/suspended signaling across results.

### How to use Twitter Profile Scraper - step by step

1. Sign up and log in to Apify  
   Create a free account and access the Apify Console.

2. Find the actor  
   Search for “Twitter Profile Scraper” in the Apify Store and open the actor page.

3. Add input data  
   In startUrls, enter a list of:
   - Profile URLs: https://x.com/elonmusk
   - Usernames: elonmusk
   - User IDs: 44196397
   - Keywords: tesla (keyword mode scrapes public search timelines)

4. Configure settings  
   - maxTweets: Limit tweets per user/keyword (default 10; UI range 1–100). Internally, the actor enforces a minimum of 10 and a maximum cap of 1000 per run.
   - sortOrder: chronological or relevance (chronological supported by API).
   - addUserInfo: Include legacy user metadata per tweet.
   - onlyUserInfo: Fetch only profile info (no tweets).
   - addNotFoundUsersToOutput / addSuspendedUsersToOutput: Emit flagged records for unavailable profiles.
   - proxyConfiguration: Optionally enable Apify Proxy; the actor auto-fallbacks to datacenter and then residential if blocked.

5. Run the actor  
   Click Start. The actor will capture an authorization header dynamically, fetch timelines, and push items to the dataset as they’re collected.

6. Monitor the run  
   Watch logs for progress. The proxy fallback system engages automatically on 401/403/429 responses.

7. Export results  
   Open the Run dataset and export your data in JSON, CSV, or Excel for analysis, pipelines, or BI dashboards.

Pro Tip: Use onlyUserInfo for a fast inventory of profiles with legacy fields, or pass keywords in startUrls to build topic datasets without specifying usernames — a flexible path for both a Twitter profile scraper tool and X user scraper workflows.

### Use cases

| Use case name | Description |
| --- | --- |
| Marketing analytics – influencer monitoring | Track creator timelines and aggregate engagement metrics for campaign reporting and benchmarking. |
| Competitor intelligence – content tracking | Analyze competitor posting cadence and message themes from public timelines to inform strategy. |
| Lead enrichment – profile metadata capture | Use onlyUserInfo to enrich records with display name, bio, and verification status for outreach. |
| Social listening – keyword timelines | Collect tweets from search timelines using keywords to fuel sentiment and trend analysis. |
| Academic research – longitudinal studies | Build reproducible datasets from public posts for behavioral, political, or social studies. |
| Data engineering – API pipelines | Trigger via Apify API and stream datasets into warehouses or lakes for downstream ML/BI. |
| Editorial workflows – monitoring public figures | Scrape public accounts to populate dashboards for journalists and newsroom analysts. |

### Why choose Twitter Profile Scraper?

This production-ready Apify actor is built for precision, automation, and resilience at scale.

- ⚡ Accurate, structured outputs  
  Consistent tweet objects with stable fields (id_str, full_text, entities, counts) and optional legacy user data.

- 🧱 Batch processing at scale  
  Feed large lists of URLs, handles, IDs, or keywords; items are saved live for reliability.

- 🔄 Advanced proxy resilience  
  Automatic fallback (none → datacenter → residential) with exponential backoff to minimize blocks.

- 💻 Developer access & API integration  
  Works as a Twitter profile scraping API via Apify — integrate with Python scripts or orchestration tools.

- 🛡️ Public data focus  
  Designed for public X/Twitter content only; no login or private data access.

- 💾 Flexible exports  
  Download from the dataset as JSON, CSV, or Excel to fit analytics and ETL workflows.

- 🏗️ Beyond extensions  
  More stable than brittle browser add-ons: Playwright-backed auth capture and robust pagination for production use.

In short, it combines reliable extraction with proxy-aware infrastructure to outperform generic scrapers and unstable extensions.

### Is it legal / ethical to use Twitter Profile Scraper?

Yes — when done responsibly. This actor targets public X/Twitter data and does not access private profiles or authenticated content.

Guidelines for compliant use:
- Scrape only publicly available information and respect the platform’s Terms of Service.
- Avoid accessing private data or bypassing security measures.
- Observe rate limits and platform policies to reduce disruption.
- Ensure your use aligns with applicable data protection laws (e.g., GDPR/CCPA).
- Consult your legal team for edge cases and jurisdiction-specific requirements.

### Input parameters & output format

#### Example JSON input
```json
{
  "startUrls": [
    "https://x.com/elonmusk",
    "elonmusk",
    "44196397",
    "tesla"
  ],
  "maxTweets": 100,
  "sortOrder": "chronological",
  "addUserInfo": true,
  "onlyUserInfo": false,
  "addNotFoundUsersToOutput": false,
  "addSuspendedUsersToOutput": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
````

Input parameters

- startUrls (array, required): List of Twitter profile URLs (e.g., https://x.com/username), usernames (e.g., username), user IDs (e.g., 44196397), or search keywords (e.g., tesla). Supports bulk input. Default: none.
- maxTweets (integer): Maximum number of tweets to fetch per user or keyword. Minimum: 1, Maximum: 100, Default: 10. Note: Internally, the actor enforces a minimum of 10 and a maximum cap of 1000 per run.
- sortOrder (string): Sort order for tweets (currently supports chronological order from API). Enum: \["chronological", "relevance"]. Default: "chronological".
- addUserInfo (boolean): Include user profile data (legacy) in each tweet output. Default: true.
- onlyUserInfo (boolean): If enabled, only fetch user profile information without tweets. Default: false.
- addNotFoundUsersToOutput (boolean): Include users that were not found in the output with notFound flag. Default: false.
- addSuspendedUsersToOutput (boolean): Include suspended users in the output with suspended flag. Default: false.
- proxyConfiguration (object): Proxy configuration. By default, no proxy is used. If Twitter blocks requests, the actor will automatically fallback to datacenter proxy, then residential proxy with retries. Default: {"useApifyProxy": false}.

#### Example JSON output (tweet with user metadata)

```json
{
  "user": {
    "screen_name": "elonmusk",
    "name": "Elon Musk",
    "description": "Mars & Cars, Chips & Dips",
    "followers_count": 229033543,
    "friends_count": 1226,
    "statuses_count": 89153,
    "favourites_count": 182734,
    "listed_count": 165176,
    "created_at": "Tue Jun 02 20:12:29 +0000 2009",
    "verified": true,
    "profile_image_url": "https://pbs.twimg.com/profile_images/...",
    "profile_banner_url": "https://pbs.twimg.com/profile_banners/...",
    "default_profile": false,
    "default_profile_image": false,
    "entities": {
      "description": {
        "urls": []
      }
    }
  },
  "id_str": "1519480761749016577",
  "full_text": "Next I'm buying Coca-Cola to put the cocaine back in",
  "created_at": "Thu Apr 28 00:56:58 +0000 2022",
  "favorite_count": 4289223,
  "retweet_count": 594435,
  "reply_count": 170050,
  "quote_count": 167104,
  "bookmark_count": 21112,
  "conversation_id_str": "1519480761749016577",
  "user_id_str": "44196397",
  "lang": "en",
  "is_quote_status": false,
  "favorited": false,
  "retweeted": false,
  "bookmarked": false,
  "display_text_range": [0, 52],
  "entities": {
    "hashtags": [],
    "symbols": [],
    "user_mentions": [],
    "urls": [],
    "timestamps": []
  },
  "extended_entities": null
}
```

Additional cases

- onlyUserInfo = true (profile-only):

```json
{
  "user": {
    "screen_name": "apify",
    "name": "Apify",
    "description": "Web scraping and automation platform",
    "created_at": "Mon Nov 16 12:00:00 +0000 2015",
    "verified": true
  }
}
```

- Not found or suspended (when enabled via flags):

```json
{ "user": { "screen_name": "nonexistent_user" }, "notFound": true }
```

```json
{ "user": { "screen_name": "some_user" }, "suspended": true }
```

### FAQ

#### Do I need to log in to use this X profile scraper?

No. The actor captures a public authorization header dynamically with Playwright and accesses only public data, so no user login or cookies are required.

#### Can I scrape by keyword, or is it just a Twitter handle scraper?

You can do both. Provide a keyword in startUrls to collect tweets from public search timelines, or provide URLs/handles/user IDs to scrape specific profiles.

#### Is this a Twitter profile scraping API I can integrate with?

Yes. As an Apify actor, it’s API-accessible. You can programmatically start runs, poll status, and download datasets (JSON, CSV, Excel) to integrate with your pipelines.

#### How many tweets can I extract per user?

You control this with maxTweets (UI default 10; UI range 1–100). Internally, the actor enforces a minimum of 10 and caps at 1000 per run.

#### Does this work as a Twitter followers scraper?

It does not fetch follower lists. However, when addUserInfo is enabled, the legacy user object includes followers\_count, which you can use for analytics.

#### What happens if a profile is suspended or not found?

If you enable addSuspendedUsersToOutput and/or addNotFoundUsersToOutput, the actor emits minimal objects with suspended: true or notFound: true so you can track outcomes reliably.

#### Can I exclude user metadata to slim the output?

Yes. Set addUserInfo to false to remove the user object from each tweet item and reduce payload size.

#### How does the proxy system work if requests are blocked?

The actor auto-fallbacks from no proxy → datacenter → residential with retries. It updates the proxy state and continues fetching to minimize interruptions.

### Closing thoughts

Twitter Profile Scraper is built to turn public X/Twitter timelines and profiles into structured, export-ready data at scale. With resilient proxy fallback, profile-only mode, keyword support, and clean JSON outputs, it’s ideal for marketers, developers, researchers, and analysts. Trigger runs via the Apify API or your Python workflows, export to JSON/CSV/Excel, and integrate with your downstream pipeline — start extracting smarter with a reliable Twitter profile scraper tool today.

# Actor input Schema

## `startUrls` (type: `array`):

List of Twitter profile URLs (e.g., https://x.com/username), usernames (e.g., username), user IDs (e.g., 44196397), or search keywords (e.g., tesla). Supports bulk input.

## `maxTweets` (type: `integer`):

Maximum number of tweets to fetch per user or keyword. Default is 100.

## `sortOrder` (type: `string`):

Sort order for tweets (currently supports chronological order from API).

## `addUserInfo` (type: `boolean`):

Include user profile data (legacy) in each tweet output.

## `onlyUserInfo` (type: `boolean`):

If enabled, only fetch user profile information without tweets.

## `addNotFoundUsersToOutput` (type: `boolean`):

Include users that were not found in the output with notFound flag.

## `addSuspendedUsersToOutput` (type: `boolean`):

Include suspended users in the output with suspended flag.

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

Proxy configuration. By default, no proxy is used. If Twitter blocks requests, the actor will automatically fallback to datacenter proxy, then residential proxy with retries.

## Actor input object example

```json
{
  "startUrls": [
    "https://x.com/elonmusk",
    "mrbeast"
  ],
  "maxTweets": 10,
  "sortOrder": "chronological",
  "addUserInfo": true,
  "onlyUserInfo": false,
  "addNotFoundUsersToOutput": false,
  "addSuspendedUsersToOutput": false,
  "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 = {
    "startUrls": [
        "https://x.com/elonmusk",
        "mrbeast"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapapi/twitter-profile-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 = {
    "startUrls": [
        "https://x.com/elonmusk",
        "mrbeast",
    ],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapapi/twitter-profile-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 '{
  "startUrls": [
    "https://x.com/elonmusk",
    "mrbeast"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call scrapapi/twitter-profile-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Twitter Profile Scraper",
        "description": "🐦 Twitter Profile Scraper (twitter-profile-scraper) extracts rich data from X/Twitter profiles—name, handle, bio, followers/following, tweets count, location, website, verified status, join date, images & more. 🔎 Perfect for research, lead gen & analytics. 🚀 Fast, reliable, API-ready.",
        "version": "0.1",
        "x-build-id": "z9eK1RrZeUMeNMCcF"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapapi~twitter-profile-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapapi-twitter-profile-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/scrapapi~twitter-profile-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapapi-twitter-profile-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/scrapapi~twitter-profile-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapapi-twitter-profile-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": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Twitter URLs, Usernames, User IDs, or Keywords",
                        "type": "array",
                        "description": "List of Twitter profile URLs (e.g., https://x.com/username), usernames (e.g., username), user IDs (e.g., 44196397), or search keywords (e.g., tesla). Supports bulk input.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxTweets": {
                        "title": "Maximum Tweets Per User/Keyword",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of tweets to fetch per user or keyword. Default is 100.",
                        "default": 10
                    },
                    "sortOrder": {
                        "title": "Sort Order",
                        "enum": [
                            "chronological",
                            "relevance"
                        ],
                        "type": "string",
                        "description": "Sort order for tweets (currently supports chronological order from API).",
                        "default": "chronological"
                    },
                    "addUserInfo": {
                        "title": "Include User Profile Information",
                        "type": "boolean",
                        "description": "Include user profile data (legacy) in each tweet output.",
                        "default": true
                    },
                    "onlyUserInfo": {
                        "title": "Fetch Only User Profile (No Tweets)",
                        "type": "boolean",
                        "description": "If enabled, only fetch user profile information without tweets.",
                        "default": false
                    },
                    "addNotFoundUsersToOutput": {
                        "title": "Include Not Found Users in Output",
                        "type": "boolean",
                        "description": "Include users that were not found in the output with notFound flag.",
                        "default": false
                    },
                    "addSuspendedUsersToOutput": {
                        "title": "Include Suspended Users in Output",
                        "type": "boolean",
                        "description": "Include suspended users in the output with suspended flag.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy configuration. By default, no proxy is used. If Twitter blocks requests, the actor will automatically fallback to datacenter proxy, then residential proxy with retries."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
