{
  "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": "OE1amF3K7jfaWLUmF"
  },
  "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,
            "type": "integer",
            "description": "Maximum replies collected per input tweet. You control this limit; default is 100. Root is always included when includeRootTweet is on.",
            "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 prioritized inside each streamed conversation buffer. Recommended: Top (best signal first). Position is assigned before bounded concurrent storage, so physical dataset order can differ.",
            "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": "Fetch 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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}