{
  "openapi": "3.0.1",
  "info": {
    "title": "X (Twitter) Follower Scraper | From $0.10/1K | Pay-Per Result",
    "description": "Scrape X (Twitter) followers, following, verified followers, list members, list subscribers & community members from $0.10 per 1,000 profiles on paid Apify plans. Filter before you pay. No start fee. No query fee. No X API key. No rate limits. Built by Xquik.",
    "version": "1.0",
    "x-build-id": "0CJyYtGGHfvOYl2XJ"
  },
  "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": "X URLs to scrape. Provide a JSON array of URL strings or {\"url\":\"...\"} objects. Supports profile relation URLs (/followers, /verified_followers, /following), list URLs (/lists/ID/members, /lists/ID/followers), and community URLs (/communities/ID/members). Mix freely."
          },
          "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."
          },
          "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. Use with Relation field set to list_members or list_followers.",
            "items": {
              "type": "string"
            }
          },
          "communityIds": {
            "title": "Community IDs",
            "type": "array",
            "description": "Numeric X community IDs. Use with Relation field set to community_members.",
            "items": {
              "type": "string"
            }
          },
          "relation": {
            "title": "Relation",
            "type": "string",
            "description": "Which relation to scrape for each handle / user ID / list ID / community ID. Supported values: followers, following, verified_followers, list_members, list_followers, community_members. Unsupported values fall back to followers. URLs in Start URLs always override this field.",
            "default": "followers"
          },
          "relations": {
            "title": "Relations",
            "type": "array",
            "description": "Use when you want several relations for the same handles or user IDs in one run. Supported values: followers, following, verified_followers, list_members, list_followers, community_members.",
            "items": {
              "type": "string"
            }
          },
          "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",
            "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."
          },
          "maxResults": {
            "title": "Max Results",
            "type": "integer",
            "description": "Alias for Max Items."
          },
          "max_results": {
            "title": "Max Results",
            "type": "integer",
            "description": "Alias for Max Items."
          },
          "maxItemsPerTarget": {
            "title": "Max Items Per Target",
            "type": "integer",
            "description": "Optional cap per target. Leave empty to let maxItems run across all targets freely. Useful when scraping many targets and you want fairness. Nonpositive values are ignored."
          },
          "outputMode": {
            "title": "Output Mode",
            "type": "string",
            "description": "Supported values: compact, full, raw. Compact returns the core normalized profile fields plus source metadata. Full adds optional profile fields. Raw adds a raw copy for advanced use. Unsupported values fall back to compact.",
            "default": "compact"
          },
          "outputVariant": {
            "title": "Output Variant",
            "type": "string",
            "description": "Alias for Output Mode. Supported values: compact, full, raw. Unsupported values fall back to compact."
          },
          "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": "Include diagnostic fields for unavailable results when available.",
            "default": false
          },
          "includeUnavailableUsers": {
            "title": "Include Unavailable Users",
            "type": "boolean",
            "description": "Include diagnostic rows for unavailable profiles when available.",
            "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": "When true, a user appearing in multiple targets is returned only once (first target wins). Useful for follower-overlap analysis.",
            "default": false
          },
          "dedupeMode": {
            "title": "Dedupe Mode",
            "type": "string",
            "description": "Supported values: none, first, merge. Use none to keep one row per target. Use first to keep only the first matching target. Use merge to keep one row per profile and add sourceTargets, sourceRelations, sourceUrls, and overlapCount. Unsupported values fall back to none.",
            "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",
            "type": "integer",
            "description": "Only include users with at least this many followers."
          },
          "maxFollowers": {
            "title": "Maximum Followers",
            "type": "integer",
            "description": "Only include users with at most this many followers. Useful to exclude celebrities from a follower list."
          },
          "minFollowing": {
            "title": "Minimum Following",
            "type": "integer",
            "description": "Only include users who follow at least this many accounts."
          },
          "maxFollowing": {
            "title": "Maximum Following",
            "type": "integer",
            "description": "Only include users who follow at most this many accounts."
          },
          "minStatuses": {
            "title": "Minimum Tweets",
            "type": "integer",
            "description": "Only include users with at least this many posted tweets."
          },
          "maxStatuses": {
            "title": "Maximum Tweets",
            "type": "integer",
            "description": "Only include users with at most this many posted tweets."
          },
          "minAccountAgeDays": {
            "title": "Minimum Account Age (days)",
            "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 verified (X Premium / Blue) accounts.",
            "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 this text (case-insensitive). 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}