{
  "openapi": "3.0.1",
  "info": {
    "title": "X.com (Twitter) Tweet Replies Scraper",
    "description": "Paste any tweet URL. Get every reply back: nested depth, parent-link tree, engagement, author profile, media. Filters + sort + optional media/author add-ons.",
    "version": "0.0",
    "x-build-id": "ep2SpyRgiwlnAnhmJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lurkapi~x-twitter-tweet-replies-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lurkapi-x-twitter-tweet-replies-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/lurkapi~x-twitter-tweet-replies-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lurkapi-x-twitter-tweet-replies-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/lurkapi~x-twitter-tweet-replies-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lurkapi-x-twitter-tweet-replies-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": [
          "tweetUrls"
        ],
        "properties": {
          "tweetUrls": {
            "title": "💬 Tweet URLs or IDs",
            "type": "array",
            "description": "Paste the tweet you want replies for. Accepts x.com, twitter.com, mobile.twitter.com, fxtwitter.com, vxtwitter.com URLs, share links, or bare numeric IDs. One entry per tweet. Up to 500 entries per run.",
            "items": {
              "type": "string"
            }
          },
          "maxRepliesPerTweet": {
            "title": "Max replies per tweet",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Hard cap on replies collected per input tweet. Root is always included when includeRootTweet is on. Default 100 covers most tweets.",
            "default": 100
          },
          "maxDepth": {
            "title": "Reply-tree depth",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many reply levels to walk. 1 = direct replies only. 2 = replies + replies-of-replies (recommended default). Up to 5. Deeper = more coverage, longer runtime.",
            "default": 2
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "top",
              "latest",
              "oldest",
              "mostLiked"
            ],
            "type": "string",
            "description": "How replies are ordered in the output. Recommended: Top (best signal first, cheapest for downstream filtering). Latest / Oldest = by createdAt. Most liked = by likeCount desc.",
            "default": "top"
          },
          "minLikes": {
            "title": "Minimum likes",
            "minimum": 0,
            "type": "integer",
            "description": "Drop replies with fewer likes than this. 0 = no filter.",
            "default": 0
          },
          "minRetweets": {
            "title": "Minimum retweets",
            "minimum": 0,
            "type": "integer",
            "description": "Drop replies with fewer retweets than this. 0 = no filter.",
            "default": 0
          },
          "minReplies": {
            "title": "Minimum replies to this reply",
            "minimum": 0,
            "type": "integer",
            "description": "Drop replies with fewer sub-replies than this. 0 = no filter.",
            "default": 0
          },
          "verifiedOnly": {
            "title": "Verified authors only",
            "type": "boolean",
            "description": "Drop replies from non-verified accounts (no Blue check).",
            "default": false
          },
          "hasMediaOnly": {
            "title": "Has media only",
            "type": "boolean",
            "description": "Drop text-only replies. Keeps only replies with at least one photo or video attached.",
            "default": false
          },
          "excludeOpSelfReplies": {
            "title": "Exclude self-replies from OP",
            "type": "boolean",
            "description": "Drop replies posted by the original tweet's author (their own follow-ups). Use the sibling Thread Scraper for OP self-reply chains.",
            "default": false
          },
          "keywordIncludeRegex": {
            "title": "Keyword include (regex)",
            "type": "string",
            "description": "Only keep replies whose text matches this regular expression (case-insensitive). Leave empty for no filter. Example: AI|LLM|model",
            "default": ""
          },
          "keywordExcludeRegex": {
            "title": "Keyword exclude (regex)",
            "type": "string",
            "description": "Drop replies whose text matches this regular expression (case-insensitive). Leave empty for no filter. Example: crypto|airdrop|giveaway",
            "default": ""
          },
          "downloadMedia": {
            "title": "Download media files ($)",
            "type": "boolean",
            "description": "Download every photo and video attached to any reply into the run's key-value store. Charged once per reply with at least one file downloaded.",
            "default": false
          },
          "enrichAuthors": {
            "title": "Author profile enrichment ($)",
            "type": "boolean",
            "description": "Hydrate the full profile for every unique reply author: verified flag, followers, bio, join date, profile image. Charged once per unique author enriched.",
            "default": false
          },
          "outputId": {
            "title": "id",
            "type": "boolean",
            "description": "Numeric reply tweet ID.",
            "default": true
          },
          "outputUrl": {
            "title": "url",
            "type": "boolean",
            "description": "Canonical reply URL.",
            "default": true
          },
          "outputFullText": {
            "title": "fullText",
            "type": "boolean",
            "description": "Full reply text.",
            "default": true
          },
          "outputCreatedAt": {
            "title": "createdAt",
            "type": "boolean",
            "description": "ISO-8601 creation timestamp.",
            "default": true
          },
          "outputLang": {
            "title": "lang",
            "type": "boolean",
            "description": "Source language as returned by X.",
            "default": true
          },
          "outputReplyCount": {
            "title": "replyCount",
            "type": "boolean",
            "description": "Reply count on this reply.",
            "default": true
          },
          "outputRetweetCount": {
            "title": "retweetCount",
            "type": "boolean",
            "description": "Retweet count.",
            "default": true
          },
          "outputLikeCount": {
            "title": "likeCount",
            "type": "boolean",
            "description": "Favorite / like count.",
            "default": true
          },
          "outputQuoteCount": {
            "title": "quoteCount",
            "type": "boolean",
            "description": "Quote-tweet count.",
            "default": true
          },
          "outputBookmarkCount": {
            "title": "bookmarkCount",
            "type": "boolean",
            "description": "Bookmark count.",
            "default": true
          },
          "outputViewCount": {
            "title": "viewCount",
            "type": "boolean",
            "description": "View count.",
            "default": true
          },
          "outputConversationId": {
            "title": "conversationId",
            "type": "boolean",
            "description": "Conversation root ID.",
            "default": true
          },
          "outputInReplyTo": {
            "title": "inReplyTo*",
            "type": "boolean",
            "description": "inReplyToTweetId + inReplyToScreenName. Present on every reply for tree reconstruction.",
            "default": true
          },
          "outputDepth": {
            "title": "depth",
            "type": "boolean",
            "description": "Depth in the reply tree. 0 = original tweet, 1 = direct reply, 2 = reply-to-reply, etc.",
            "default": true
          },
          "outputIsReply": {
            "title": "isReply",
            "type": "boolean",
            "description": "Boolean flag for reply tweets (always true on non-root rows).",
            "default": true
          },
          "outputIsRetweet": {
            "title": "isRetweet",
            "type": "boolean",
            "description": "Boolean flag for retweets.",
            "default": true
          },
          "outputIsQuote": {
            "title": "isQuote",
            "type": "boolean",
            "description": "Boolean flag for quote tweets.",
            "default": true
          },
          "outputMentions": {
            "title": "mentions",
            "type": "boolean",
            "description": "@-mentions array.",
            "default": true
          },
          "outputHashtags": {
            "title": "hashtags",
            "type": "boolean",
            "description": "Hashtags array.",
            "default": true
          },
          "outputUrls": {
            "title": "urls",
            "type": "boolean",
            "description": "Expanded URLs in reply.",
            "default": true
          },
          "outputMedia": {
            "title": "media",
            "type": "boolean",
            "description": "Media array (photos + videos with URLs). Files are downloaded into the KV store only if the Download media add-on is on.",
            "default": true
          },
          "outputAuthor": {
            "title": "author",
            "type": "boolean",
            "description": "Author block. Basic (handle, name, avatar) unless Author enrichment add-on is on (adds followers, bio, verified flags, join date).",
            "default": true
          },
          "outputQuotedTweet": {
            "title": "quotedTweet",
            "type": "boolean",
            "description": "Nested quoted-tweet object when the reply quote-tweets another post.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}