{
  "openapi": "3.0.1",
  "info": {
    "title": "X Tweet Engagement Scraper - Replies, Quotes & Retweeters",
    "description": "Collect replies, quote tweets and retweeters of up to 50 X (Twitter) posts in one run. Every row is tagged with engagementType and its parent tweet, and carries author followers, bio, verification and tweet metrics. Rank by relevance, recency or likes. No login or cookies.",
    "version": "1.0",
    "x-build-id": "1xSjuk8aQSNt5dpTE"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~x-tweet-engagement-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-x-tweet-engagement-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/khadinakbar~x-tweet-engagement-scraper/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-x-tweet-engagement-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/khadinakbar~x-tweet-engagement-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-x-tweet-engagement-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",
            "minItems": 1,
            "maxItems": 50,
            "type": "array",
            "description": "Use this when you need all public engagement on specific X/Twitter posts. Enter full URLs like https://x.com/OpenAI/status/2065225362544726371 or numeric tweet IDs. Defaults to one working public tweet example. This is not for keyword search, profile timelines, or follower lists.",
            "items": {
              "type": "string"
            }
          },
          "engagementTypes": {
            "title": "Engagement types",
            "type": "array",
            "description": "Use this to choose which engagement to collect per tweet. reply = replies/comments, quote = quote tweets with commentary, retweet = users who retweeted (no text). Defaults to all three. Retweet rows contain author fields only because a retweet carries no text.",
            "items": {
              "type": "string",
              "enum": [
                "reply",
                "quote",
                "retweet"
              ],
              "enumTitles": [
                "Replies (comments)",
                "Quote tweets",
                "Retweeters"
              ]
            },
            "default": [
              "reply",
              "quote",
              "retweet"
            ]
          },
          "rankingMode": {
            "title": "Reply and quote ranking",
            "enum": [
              "Relevance",
              "Recency",
              "Likes"
            ],
            "type": "string",
            "description": "Use this when choosing how X orders replies and quote tweets. Relevance returns the default ranking, Recency returns newer first, Likes prioritizes liked items. Defaults to Relevance. This has no effect on the retweeter list.",
            "default": "Relevance"
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Use this to cap total engagement rows saved across all tweets and types. The actor stops before charging beyond this limit. Defaults to 100 and supports up to 5000. This is a hard billing and dataset cap, not a per-tweet or per-type target.",
            "default": 100
          },
          "minLikes": {
            "title": "Minimum likes (replies and quotes)",
            "minimum": 0,
            "type": "integer",
            "description": "Use this to keep only replies and quote tweets with at least this many likes, for example 10. Retweet rows are not affected. Skipped rows are not charged. Defaults to 0, which keeps every row.",
            "default": 0
          },
          "minAuthorFollowers": {
            "title": "Minimum author followers",
            "minimum": 0,
            "type": "integer",
            "description": "Use this to keep only rows whose account has at least this many followers, for example 5000. Applies to replies, quotes and retweeters. Skipped rows are not charged. Defaults to 0, which keeps every row.",
            "default": 0
          },
          "maxPagesPerType": {
            "title": "Maximum pages per type",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Use this as a pagination safety valve for each engagement type on each tweet. Each page holds a batch of rows; higher values go deeper. Defaults to 3 and supports up to 50. This does not override maxItems.",
            "default": 3
          },
          "dedupeItems": {
            "title": "Dedupe items",
            "type": "boolean",
            "description": "Use this to skip duplicate engagement across pages and tweets. The actor dedupes replies and quotes by tweet ID and retweeters by user ID. Defaults to true. Disable only to inspect provider pagination overlap.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}