{
  "openapi": "3.0.1",
  "info": {
    "title": "X Follower Scraper | $0.00015/Profile | Pay-Per-Result",
    "description": "Scrape X (Twitter) followers, following, list members, subscribers & community members from $0.00015 per delivered profile on every Apify plan. Get 38 fields per row & compare audiences. No X login. Built by Xquik. World's fastest & cheapest X (Twitter) scraper service. Not affiliated with X Corp.",
    "version": "1.9",
    "x-build-id": "xXnMscGZBK3PXMHpR"
  },
  "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."
          },
          "userIds": {
            "title": "Numeric user IDs",
            "type": "array",
            "description": "Numeric X user IDs. Use when you already know the IDs. Use with the Relation field.",
            "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",
              "follower_ids",
              "following_ids",
              "affiliates",
              "subscriptions",
              "list_members",
              "list_followers",
              "community_members"
            ],
            "type": "string",
            "description": "Choose one relation for handles, user IDs, or list IDs. Follower IDs & Following IDs return user IDs only, 5,000 a page. Affiliates returns the accounts an organization lists. Subscriptions returns the creators an account subscribes to. 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",
                "follower_ids",
                "following_ids",
                "affiliates",
                "subscriptions",
                "list_members",
                "list_followers",
                "community_members"
              ],
              "enumTitles": [
                "Followers",
                "Following",
                "Verified followers",
                "Follower IDs",
                "Following IDs",
                "Affiliates",
                "Subscriptions",
                "List members",
                "List followers",
                "Community members"
              ]
            }
          },
          "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. The form starts at 1,000. A run can return 100,000 rows & more, so raise it for a full export.",
            "default": 100000
          },
          "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."
          },
          "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)."
          },
          "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"
          },
          "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
          },
          "dedupeMode": {
            "title": "Dedupe mode",
            "enum": [
              "none",
              "first",
              "merge"
            ],
            "type": "string",
            "description": "Leave empty to follow Deduplicate across targets. None keeps 1 row per target. First lists a shared profile under the target that returns it first. That target can change between runs. Merge waits for every target, then keeps 1 row that lists them all."
          },
          "overlapMode": {
            "title": "Overlap mode",
            "type": "boolean",
            "description": "Shortcut for merge dedupe mode. Use when comparing competitor audiences, lists, or communities.",
            "default": false
          },
          "dedupeAcrossTargets": {
            "title": "Deduplicate across targets",
            "type": "boolean",
            "description": "On by default. A profile from several targets appears once & costs once. Its row names the target that returned it first. That target can change between runs. Use Merge dedupe mode to list every target. Turn it off to keep 1 row per target.",
            "default": true
          },
          "alwaysSaveRunRecords": {
            "title": "Always save run records",
            "type": "boolean",
            "description": "Save run-report on every run. When off, small runs that go well skip it & cost less.",
            "default": false
          },
          "urls": {
            "title": "URLs",
            "type": "array",
            "description": "Alias for Start URLs. Accepts a JSON array of URL strings, {\"url\":\"...\"} objects, and short paths like handle/followers, lists/ID/members, and communities/ID/members."
          },
          "targets": {
            "title": "Targets",
            "type": "array",
            "description": "Alias for Start URLs. Accepts a JSON array of URL strings or {\"url\":\"...\"} objects."
          },
          "profileUrls": {
            "title": "Profile URLs",
            "type": "array",
            "description": "Alias for Start URLs for profile targets. Accepts a JSON array of URL strings or {\"url\":\"...\"} objects."
          },
          "accountUrls": {
            "title": "Account URLs",
            "type": "array",
            "description": "Alias for Start URLs for account targets. Accepts a JSON array of URL strings or {\"url\":\"...\"} objects."
          },
          "profileUrl": {
            "title": "Profile URL",
            "type": "string",
            "description": "Alias for Start URLs with one account URL."
          },
          "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"
            }
          },
          "handles": {
            "title": "Handles",
            "type": "array",
            "description": "Alias for X Handles.",
            "items": {
              "type": "string"
            }
          },
          "handle": {
            "title": "Handle",
            "type": "string",
            "description": "Alias for X Handles with one handle."
          },
          "userNameList": {
            "title": "User name list",
            "type": "array",
            "description": "Alias for X Handles.",
            "items": {
              "type": "string"
            }
          },
          "screenNames": {
            "title": "Screen names",
            "type": "array",
            "description": "Alias for X Handles.",
            "items": {
              "type": "string"
            }
          },
          "screenName": {
            "title": "Screen name",
            "type": "string",
            "description": "Alias for X Handles with one handle."
          },
          "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"
            }
          },
          "userIdList": {
            "title": "User ID list",
            "type": "array",
            "description": "Alias for Numeric User IDs.",
            "items": {
              "type": "string"
            }
          },
          "user_id": {
            "title": "User ID",
            "type": "string",
            "description": "Alias for Numeric User IDs with one ID."
          },
          "userId": {
            "title": "User ID (camel case)",
            "type": "string",
            "description": "Alias for Numeric User IDs with one ID."
          },
          "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
          },
          "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."
          },
          "resultsLimit": {
            "title": "Results limit",
            "minimum": 1,
            "type": "integer",
            "description": "API alias for Max Items."
          },
          "count": {
            "title": "Count",
            "minimum": 1,
            "type": "integer",
            "description": "API alias for Max Items."
          },
          "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
          },
          "type": {
            "title": "Type",
            "enum": [
              "followers",
              "following"
            ],
            "type": "string",
            "description": "Alias for Relation. Accepts followers or following."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}