{
  "openapi": "3.0.1",
  "info": {
    "title": "Twitter Scraper | Extract Tweets & Profiles | No API Key",
    "description": "Scrape Twitter/X profiles and tweets without an API key. Batch many accounts in one run, or fetch specific tweets by ID. Tweet text, author, likes, retweets, replies, views, media URLs and timestamps. No keyword search. PPE — pay only for results delivered.",
    "version": "1.0",
    "x-build-id": "hPYKmdjSzGHcNpcb6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cryptosignals~twitter-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cryptosignals-twitter-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/cryptosignals~twitter-scraper/runs": {
      "post": {
        "operationId": "runs-sync-cryptosignals-twitter-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/cryptosignals~twitter-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-cryptosignals-twitter-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",
        "properties": {
          "username": {
            "title": "Twitter Username",
            "type": "string",
            "description": "A single Twitter/X username to scrape (with or without @). For several accounts in one run, use 'Usernames' or 'Profile URLs' below."
          },
          "handle": {
            "title": "Handle (compatibility alias)",
            "type": "string",
            "description": "Non-search compatibility alias for 'username'. No default or prefill; 'username' takes precedence when both are supplied."
          },
          "user": {
            "title": "User (compatibility alias)",
            "type": "string",
            "description": "Non-search compatibility alias for 'username'. No default or prefill; 'username' takes precedence when both are supplied."
          },
          "screen_name": {
            "title": "Screen name (compatibility alias)",
            "type": "string",
            "description": "Non-search compatibility alias for 'username'. No default or prefill; 'username' takes precedence when both are supplied."
          },
          "usernames": {
            "title": "Usernames (batch)",
            "type": "array",
            "description": "Scrape several accounts in ONE run. Each account yields a profile row plus its tweets. Cheaper and faster than one run per account.",
            "items": {
              "type": "string"
            }
          },
          "handles": {
            "title": "Handles (batch compatibility alias)",
            "type": "array",
            "description": "Non-search compatibility alias for 'usernames'. Each entry must be a string; no default or prefill. 'usernames' takes precedence when both are supplied.",
            "items": {
              "type": "string"
            }
          },
          "users": {
            "title": "Users (batch compatibility alias)",
            "type": "array",
            "description": "Non-search compatibility alias for 'usernames'. Each entry must be a string; no default or prefill. 'usernames' takes precedence when both are supplied.",
            "items": {
              "type": "string"
            }
          },
          "screen_names": {
            "title": "Screen names (batch compatibility alias)",
            "type": "array",
            "description": "Non-search compatibility alias for 'usernames'. Each entry must be a string; no default or prefill. 'usernames' takes precedence when both are supplied.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Profile URLs (batch)",
            "type": "array",
            "description": "Twitter/X profile URLs, e.g. https://x.com/nasa. Equivalent to 'Usernames' — use whichever your pipeline already produces.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "tweetIds": {
            "title": "Tweet IDs or URLs",
            "type": "array",
            "description": "Fetch specific tweets by ID (e.g. 1519480761749016577) or by status URL. Each available tweet is one result; deleted or protected tweets are skipped and never charged.",
            "items": {
              "type": "string"
            }
          },
          "action": {
            "title": "What to scrape",
            "enum": [
              "both",
              "tweets",
              "profile"
            ],
            "type": "string",
            "description": "'both' (default) returns the profile row and the tweets. 'tweets' returns tweets only. 'profile' returns the profile plus tweets, as in earlier versions. Keyword search remains unsupported — anonymous search on X is auth-walled, so 'search' is not an option and action: 'search' is rejected before a run starts.",
            "default": "both"
          },
          "maxResults": {
            "title": "Max tweets per account",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum tweets to retrieve for EACH account. Set to 0 to fetch profiles only. Defaults to 10 when omitted. Non-search compatibility aliases such as maxTweets are accepted when maxResults is omitted; maxResults takes precedence when both are supplied."
          },
          "maxTweets": {
            "title": "Max tweets (compatibility alias)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Non-search compatibility alias for 'maxResults'. Accepts an integer from 0 through 10000. No default or prefill; 'maxResults' takes precedence when both are supplied."
          },
          "limit": {
            "title": "Limit (compatibility alias)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Non-search compatibility alias for 'maxResults'. Accepts an integer from 0 through 10000. No default or prefill; 'maxResults' takes precedence when both are supplied."
          },
          "count": {
            "title": "Count (compatibility alias)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Non-search compatibility alias for 'maxResults'. Accepts an integer from 0 through 10000. No default or prefill; 'maxResults' takes precedence when both are supplied."
          },
          "max_tweets": {
            "title": "Max tweets (snake-case compatibility alias)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Non-search compatibility alias for 'maxResults'. Accepts an integer from 0 through 10000. No default or prefill; 'maxResults' takes precedence when both are supplied."
          },
          "maxItems": {
            "title": "Max items (compatibility alias)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Non-search compatibility alias for 'maxResults'. Accepts an integer from 0 through 10000. No default or prefill; 'maxResults' takes precedence when both are supplied."
          },
          "includeQuotedTweets": {
            "title": "Include quoted tweets",
            "type": "boolean",
            "description": "When a scraped tweet quotes another tweet, also return the quoted tweet as its own row (full text, author and engagement metrics). Each quoted tweet counts as one result.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}