{
  "openapi": "3.0.1",
  "info": {
    "title": "X Follower Scraper | $0.15/1K Profiles | Pay-Per-Result",
    "description": "Scrape X (Twitter) followers, following, list members, subscribers, and community members for $0.15 per 1,000 delivered profiles on every Apify plan. Filter before billing. Compare audiences. Apify bills platform usage separately. No X login. Built by Xquik. Not affiliated with X Corp.",
    "version": "1.9",
    "x-build-id": "IdL7wxtNvlfBUJZmy"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/xquik~x-follower-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-xquik-x-follower-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/xquik~x-follower-scraper/runs": {
      "post": {
        "operationId": "runs-sync-xquik-x-follower-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/xquik~x-follower-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-xquik-x-follower-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": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Add profile relation, List, or Community URLs as strings or {\"url\":\"...\"} objects. Supported paths include /followers, /verified_followers, /following, /lists/ID/members, /lists/ID/followers, and /communities/ID/members."
          },
          "twitterHandles": {
            "title": "X handles",
            "type": "array",
            "description": "X usernames to scrape (with or without @). Use together with the Relation field below to decide what to pull. Example: elonmusk, @nasa",
            "items": {
              "type": "string"
            }
          },
          "username": {
            "title": "Username",
            "type": "string",
            "description": "Single X handle alias."
          },
          "usernames": {
            "title": "Usernames",
            "type": "array",
            "description": "Alias for X Handles.",
            "items": {
              "type": "string"
            }
          },
          "user_names": {
            "title": "User names",
            "type": "array",
            "description": "Alias for X Handles.",
            "items": {
              "type": "string"
            }
          },
          "userIds": {
            "title": "Numeric user IDs",
            "type": "array",
            "description": "Numeric X user IDs. Use when you already know the IDs; this skips handle resolution. Use with the Relation field.",
            "items": {
              "type": "string"
            }
          },
          "twitterUserIds": {
            "title": "X user IDs",
            "type": "array",
            "description": "Alias for Numeric User IDs.",
            "items": {
              "type": "string"
            }
          },
          "user_ids": {
            "title": "User IDs",
            "type": "array",
            "description": "Alias for Numeric User IDs.",
            "items": {
              "type": "string"
            }
          },
          "listIds": {
            "title": "List IDs",
            "type": "array",
            "description": "Numeric X list IDs. They default to List Members. Choose List Followers to scrape subscribers.",
            "items": {
              "type": "string"
            }
          },
          "communityIds": {
            "title": "Community IDs",
            "type": "array",
            "description": "Numeric X community IDs. They always scrape Community Members.",
            "items": {
              "type": "string"
            }
          },
          "relation": {
            "title": "Relation",
            "enum": [
              "followers",
              "following",
              "verified_followers",
              "list_members",
              "list_followers",
              "community_members"
            ],
            "type": "string",
            "description": "Choose one relation for handles, user IDs, or list IDs. List IDs default to List Members. Community IDs always use Community Members. Start URLs override this choice.",
            "default": "followers"
          },
          "relations": {
            "title": "Relations",
            "type": "array",
            "description": "Choose several relations for the same handles, user IDs, or list IDs. Community IDs always use Community Members.",
            "items": {
              "type": "string",
              "enum": [
                "followers",
                "following",
                "verified_followers",
                "list_members",
                "list_followers",
                "community_members"
              ],
              "enumTitles": [
                "Followers",
                "Following",
                "Verified followers",
                "List members",
                "List followers",
                "Community members"
              ]
            }
          },
          "getFollowers": {
            "title": "Get followers",
            "type": "boolean",
            "description": "Turn on to scrape followers.",
            "default": false
          },
          "getFollowing": {
            "title": "Get following",
            "type": "boolean",
            "description": "Turn on to scrape accounts the target follows.",
            "default": false
          },
          "getVerifiedFollowers": {
            "title": "Get verified followers",
            "type": "boolean",
            "description": "Turn on to scrape verified followers.",
            "default": false
          },
          "getListMembers": {
            "title": "Get list members",
            "type": "boolean",
            "description": "Turn on to scrape list members.",
            "default": false
          },
          "getListFollowers": {
            "title": "Get list followers",
            "type": "boolean",
            "description": "Turn on to scrape list subscribers.",
            "default": false
          },
          "getCommunityMembers": {
            "title": "Get community members",
            "type": "boolean",
            "description": "Turn on to scrape community members.",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Optional result cap across the entire run. Leave empty to use your Apify max total charge as the result limit when set. Without a spend cap, Xquik uses its built-in default. The Apify pricing box shows the current per-result price before the run starts.",
            "default": 10000
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "API alias for Max Items."
          },
          "max_results": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "API alias for Max Items."
          },
          "maxItemsPerTarget": {
            "title": "Max items per target",
            "minimum": 1,
            "type": "integer",
            "description": "Optional cap per target. Leave empty to let Max Items apply across all targets."
          },
          "outputMode": {
            "title": "Output mode",
            "enum": [
              "compact",
              "full",
              "raw"
            ],
            "type": "string",
            "description": "Compact returns core fields. Full adds optional profile fields. Raw adds a safe source snapshot.",
            "default": "compact"
          },
          "outputVariant": {
            "title": "Output variant",
            "pattern": "^(compact|full|raw)$",
            "type": "string",
            "description": "API alias for Output Mode."
          },
          "includeRaw": {
            "title": "Include raw",
            "type": "boolean",
            "description": "When true, selects raw output mode.",
            "default": false
          },
          "scrapeAllResults": {
            "title": "Scrape all results",
            "type": "boolean",
            "description": "Ignore Max Items Per Target and let Max Items control the total run size.",
            "default": false
          },
          "includeUnavailableFields": {
            "title": "Include unavailable fields",
            "type": "boolean",
            "description": "Deprecated compatibility input. Safe availability fields are already included when X provides them.",
            "default": false
          },
          "includeUnavailableUsers": {
            "title": "Include unavailable users",
            "type": "boolean",
            "description": "Deprecated compatibility input. Unavailable profiles do not produce profile rows.",
            "default": false
          },
          "includeTargetMetadata": {
            "title": "Tag with source target",
            "type": "boolean",
            "description": "Attach sourceTarget, sourceRelation, and sourceUrl on every row. Critical when scraping multiple targets in one run.",
            "default": true
          },
          "dedupeAcrossTargets": {
            "title": "Deduplicate across targets",
            "type": "boolean",
            "description": "Return a user from multiple targets once. The first target wins. Use this for follower-overlap analysis.",
            "default": false
          },
          "dedupeMode": {
            "title": "Dedupe mode",
            "enum": [
              "none",
              "first",
              "merge"
            ],
            "type": "string",
            "description": "None keeps one row per target. First keeps the first target. Merge combines sources and adds overlap fields.",
            "default": "none"
          },
          "overlapMode": {
            "title": "Overlap mode",
            "type": "boolean",
            "description": "Shortcut for merge dedupe mode. Use when comparing competitor audiences, lists, or communities.",
            "default": false
          },
          "minFollowers": {
            "title": "Minimum followers",
            "minimum": 0,
            "type": "integer",
            "description": "Only include users with at least this many followers."
          },
          "maxFollowers": {
            "title": "Maximum followers",
            "minimum": 0,
            "type": "integer",
            "description": "Only include users with at most this many followers. Set a cap to exclude large accounts."
          },
          "minFollowing": {
            "title": "Minimum following",
            "minimum": 0,
            "type": "integer",
            "description": "Only include users who follow at least this many accounts."
          },
          "maxFollowing": {
            "title": "Maximum following",
            "minimum": 0,
            "type": "integer",
            "description": "Only include users who follow at most this many accounts."
          },
          "minStatuses": {
            "title": "Minimum tweets",
            "minimum": 0,
            "type": "integer",
            "description": "Only include users with at least this many posted tweets."
          },
          "maxStatuses": {
            "title": "Maximum tweets",
            "minimum": 0,
            "type": "integer",
            "description": "Only include users with at most this many posted tweets."
          },
          "minAccountAgeDays": {
            "title": "Minimum account age (days)",
            "minimum": 0,
            "type": "integer",
            "description": "Only include users whose account is at least this many days old. Good anti-bot signal."
          },
          "verifiedOnly": {
            "title": "Verified only",
            "type": "boolean",
            "description": "Only include profiles with a public Blue or legacy verified state.",
            "default": false
          },
          "verifiedType": {
            "title": "Verified type",
            "type": "string",
            "description": "Only include users with this verification type when X provides it. Example: blue, business, government."
          },
          "hasWebsite": {
            "title": "Has website",
            "type": "boolean",
            "description": "Only include users whose public profile website is present in the relation data.",
            "default": false
          },
          "hasLocation": {
            "title": "Has location",
            "type": "boolean",
            "description": "Only include users who list a location in their profile.",
            "default": false
          },
          "bioContains": {
            "title": "Bio contains",
            "type": "string",
            "description": "Only include users whose bio contains any supplied term (case-insensitive). Separate alternatives with commas or new lines. Example: founder, CEO, engineer."
          },
          "locationContains": {
            "title": "Location contains",
            "type": "string",
            "description": "Only include users whose location contains this text (case-insensitive). Example: New York, London, Tokyo."
          },
          "usernameContains": {
            "title": "Username contains",
            "type": "string",
            "description": "Only include users whose username contains this text (case-insensitive)."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}