{
  "openapi": "3.0.1",
  "info": {
    "title": "X Tweet Engagement Scraper - Replies, Quotes & Retweets",
    "description": "Scrape all engagement on any X (Twitter) post — replies, quote tweets, and retweeters — with author, follower & metric fields. No cookies. MCP-ready.",
    "version": "1.0",
    "x-build-id": "b0P29FpjHUMZKojYf"
  },
  "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
          },
          "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. Higher values collect deeper pages when the provider returns a next cursor. Defaults to 3 and supports up to 50. This does not override maxItems.",
            "default": 3
          },
          "includeRaw": {
            "title": "Include raw provider payload",
            "type": "boolean",
            "description": "Use this for debugging provider field drift or building custom parsers. When enabled, each dataset row includes the raw provider object. Defaults to false for smaller datasets. This is not needed for normal analytics exports.",
            "default": false
          },
          "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}