> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xquik.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get verified followers

> Retrieve verified X followers by username or numeric user ID with cursor pagination for CRM, scoring, enrichment, and agent workflows

<blockquote className="agent-llms-directive">
  For the complete documentation index, see <a href="/llms.txt">llms.txt</a>.
</blockquote>

<Note>
  Requested result counts are upper bounds for paid authenticated calls. When remaining credits cannot cover the full page or ID list, Xquik returns fewer results. If zero paid results are affordable, it returns `402 insufficient_credits`.
</Note>

<Callout icon="coins" color="#5c3327">
  **1 credit per result returned** · [All plans](https://xquik.com/#pricing) from \$0.00012/credit · Accepts [MPP](/mpp/overview)
</Callout>

<Info>
  Get verified followers returns verified profiles that follow one X account by
  username or numeric user ID. It is also useful as a verified followers API,
  X verified followers API, or Twitter verified followers API. The canonical
  endpoint remains `GET /api/v1/x/users/{id}/verified-followers`.
</Info>

<CodeGroup>
  ```bash Username theme={null}
  curl "https://xquik.com/api/v1/x/users/xquikcom/verified-followers" \
    -H "x-api-key: xq_YOUR_KEY_HERE" | jq
  ```

  ```bash Numeric user ID theme={null}
  curl "https://xquik.com/api/v1/x/users/44196397/verified-followers" \
    -H "x-api-key: xq_YOUR_KEY_HERE" | jq
  ```

  ```javascript Node.js theme={null}
  const userId = "44196397";
  const response = await fetch(`https://xquik.com/api/v1/x/users/${userId}/verified-followers`, {
    headers: { "x-api-key": "xq_YOUR_KEY_HERE" },
  });
  const data = await response.json();
  const verifiedRows = data.users.map((user) => ({
    source_user_id: userId,
    x_user_id: user.id,
    username: user.username,
    display_name: user.name,
    verified_type: user.verifiedType ?? "standard",
    follower_count: user.followers ?? null,
    following_count: user.following ?? null,
    profile_image_url: user.profilePicture ?? null,
  }));
  const nextCursor = data.has_next_page ? data.next_cursor : null;
  const checkpoint = { source_user_id: userId, next_cursor: nextCursor };

  for (const row of verifiedRows) {
    process.stdout.write(`${JSON.stringify(row)}\n`);
  }
  process.stdout.write(`${JSON.stringify(checkpoint)}\n`);
  ```

  ```python Python theme={null}
  import json
  import requests

  user_id = "44196397"
  response = requests.get(
      f"https://xquik.com/api/v1/x/users/{user_id}/verified-followers",
      headers={"x-api-key": "xq_YOUR_KEY_HERE"},
  )
  data = response.json()
  verified_rows = [
      {
          "source_user_id": user_id,
          "x_user_id": user["id"],
          "username": user["username"],
          "display_name": user["name"],
          "verified_type": user.get("verifiedType", "standard"),
          "follower_count": user.get("followers"),
          "following_count": user.get("following"),
          "profile_image_url": user.get("profilePicture"),
      }
      for user in data["users"]
  ]
  next_cursor = data["next_cursor"] if data["has_next_page"] else None
  checkpoint = {"source_user_id": user_id, "next_cursor": next_cursor}

  for row in verified_rows:
      print(json.dumps(row))
  print(json.dumps(checkpoint))
  ```
</CodeGroup>

The Node.js and Python snippets shape durable verified follower rows instead of
printing the full response page. Persist `verifiedRows` or `verified_rows` with
the checkpoint so a worker can resume pagination with `next_cursor` without
duplicating already imported profiles.

## Direct verified followers handoff

Use `GET /x/users/{id}/verified-followers` when a CRM, warehouse, scoring, enrichment, or agent workflow needs one JSON page of verified followers now. The endpoint accepts either a username or numeric user ID and returns verified follower profile rows with cursor fields. Use [`verified_follower_explorer`](/api-reference/extractions/create) when you need an estimated job, saved extraction, or CSV/JSON/XLSX file export.

<CardGroup cols={2}>
  <Card title="Verified rows" icon="badge-check">
    Store `users[]` as the verified follower profile rows returned on this page.
  </Card>

  <Card title="Stable upserts" icon="key-round">
    Store `users[].id` as `x_user_id` for CRM, warehouse, scoring, and agent dedupe.
  </Card>

  <Card title="Readable labels" icon="badge">
    Store `users[].username` and `users[].name` for handles, labels, enrichment, and review queues.
  </Card>

  <Card title="Verification signals" icon="shield-check">
    Store `users[].verified` and `verifiedType` to segment standard, business, and government accounts.
  </Card>

  <Card title="Audience signals" icon="chart-no-axes-combined">
    Store `users[].followers`, `users[].following`, and `statusesCount` for scoring and prioritization.
  </Card>

  <Card title="Profile enrichment" icon="file-text">
    Store `users[].description`, `location`, `url`, `profilePicture`, and `coverPicture` when returned.
  </Card>

  <Card title="Next page" icon="arrow-right">
    Store `has_next_page` and `next_cursor`; pass `next_cursor` back as `cursor` only when `has_next_page` is true.
  </Card>
</CardGroup>

Direct verified followers cost 1 credit per user returned. Low credit balances can return fewer users than a full page; zero affordable results return `402 insufficient_credits`. For MPP callers, this endpoint is billed as a session at USD 0.00015 per user returned.

## Path parameters

<ParamField path="id" type="string" required>
  User ID (numeric) or username.
</ParamField>

## Query parameters

<ParamField query="cursor" type="string">
  Pagination cursor from `next_cursor` in a previous response. Omit for the
  first page. Pass a cursor only when `has_next_page` is true.
</ParamField>

## Which verified follower endpoint?

<CardGroup cols={2}>
  <Card title="Verified followers" icon="badge-check">
    Use `GET /x/users/{id}/verified-followers` for verified accounts that follow
    one profile.
  </Card>

  <Card title="All followers" icon="users-round">
    Use [`GET /x/users/{id}/followers`](/api-reference/x/followers) when you need
    all followers, not only verified accounts.
  </Card>

  <Card title="Following list" icon="user-plus">
    Use [`GET /x/users/{id}/following`](/api-reference/x/following) for accounts
    the profile follows.
  </Card>

  <Card title="Saved exports" icon="file-spreadsheet">
    Use [`verified_follower_explorer`](/api-reference/extractions/create) for a
    saved verified follower extraction with CSV, JSON, or XLSX download handoff.
  </Card>
</CardGroup>

## Headers

<ParamField header="x-api-key" type="string" required>
  Your API key. Session cookie authentication is also supported.
</ParamField>

## Response

<Tabs>
  <Tab title="200 OK">
    <ResponseField name="users" type="object[]">
      Array of verified follower profiles.

      <Expandable title="User object fields">
        <ResponseField name="id" type="string">X user ID.</ResponseField>
        <ResponseField name="username" type="string">X username.</ResponseField>
        <ResponseField name="name" type="string">Display name.</ResponseField>
        <ResponseField name="description" type="string">Profile bio. Omitted if empty.</ResponseField>
        <ResponseField name="followers" type="number">Follower count.</ResponseField>
        <ResponseField name="following" type="number">Following count.</ResponseField>
        <ResponseField name="verified" type="boolean">Whether the user is verified. Always true for this endpoint.</ResponseField>
        <ResponseField name="verifiedType" type="string">Verification type (e.g. `Business`, `Government`). Omitted for standard blue check.</ResponseField>
        <ResponseField name="profilePicture" type="string">Profile picture URL.</ResponseField>
        <ResponseField name="location" type="string">Profile location. Omitted if empty.</ResponseField>
        <ResponseField name="createdAt" type="string">ISO 8601 account creation timestamp.</ResponseField>
        <ResponseField name="statusesCount" type="number">Total number of tweets posted. Omitted if unavailable.</ResponseField>
        <ResponseField name="coverPicture" type="string">Cover/banner image URL. Omitted if unavailable.</ResponseField>
        <ResponseField name="mediaCount" type="number">Total number of media tweets posted. Omitted if unavailable.</ResponseField>
        <ResponseField name="canDm" type="boolean">Whether the user accepts direct messages. Omitted if unavailable.</ResponseField>
        <ResponseField name="url" type="string">Website URL from profile. Omitted if empty.</ResponseField>
        <ResponseField name="favouritesCount" type="number">Total number of tweets liked. Omitted if unavailable.</ResponseField>
        <ResponseField name="hasCustomTimelines" type="boolean">Whether the user has custom timelines. Omitted if unavailable.</ResponseField>
        <ResponseField name="isTranslator" type="boolean">Whether the user is an X translator. Omitted if unavailable.</ResponseField>
        <ResponseField name="withheldInCountries" type="string[]">Country codes where the account is withheld. Omitted if empty.</ResponseField>
        <ResponseField name="possiblySensitive" type="boolean">Whether the account is flagged as possibly sensitive. Omitted if unavailable.</ResponseField>
        <ResponseField name="pinnedTweetIds" type="string[]">IDs of pinned tweets. Omitted if none.</ResponseField>
        <ResponseField name="isAutomated" type="boolean">Whether the account is marked as automated. Omitted if unavailable.</ResponseField>
        <ResponseField name="automatedBy" type="string">Username of the account operator if automated. Omitted if not automated.</ResponseField>
        <ResponseField name="unavailable" type="boolean">Whether the account is unavailable. Omitted if available.</ResponseField>
        <ResponseField name="unavailableReason" type="string">Reason the account is unavailable. Omitted if available.</ResponseField>
        <ResponseField name="profile_bio" type="object">Structured profile bio with entity annotations. Omitted if unavailable.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="has_next_page" type="boolean">Whether more results are available.</ResponseField>
    <ResponseField name="next_cursor" type="string">Cursor for the next page.</ResponseField>

    ```json theme={null}
    {
      "users": [
        {
          "id": "987654321",
          "username": "xquikcom",
          "name": "Xquik",
          "followers": 10000,
          "verified": true,
          "verifiedType": "Business"
        }
      ],
      "has_next_page": true,
      "next_cursor": "DAACCgACGE..."
    }
    ```
  </Tab>

  <Tab title="400 Invalid user ID">
    ```json theme={null}
    { "error": "invalid_user_id", "message": "User not found or invalid user ID. Check the username or ID." }
    ```
  </Tab>

  <Tab title="404 User not found">
    ```json theme={null}
    { "error": "user_not_found", "message": "X user not found. Check the username." }
    ```
  </Tab>

  <Tab title="401 Unauthenticated">
    ```json theme={null}
    { "error": "unauthenticated" }
    ```
  </Tab>

  <Tab title="402 Subscription required">
    ```json theme={null}
    { "error": "no_subscription" }
    ```

    No active subscription or insufficient credits. Possible error values: `no_subscription`, `subscription_inactive`, `no_credits`, `insufficient_credits`.
  </Tab>

  <Tab title="502 X API unavailable">
    ```json theme={null}
    { "error": "x_api_unavailable" }
    ```

    The read service returned an error. Retry after a short delay.
  </Tab>

  <Tab title="429 Rate Limit Exceeded">
    ```json theme={null}
    { "error": "rate_limit_exceeded", "retryAfter": 60 }
    ```

    Your tier rate limit was exceeded. Wait for the `Retry-After` header before retrying.
  </Tab>

  <Tab title="424 Dependency Failed">
    ```json theme={null}
    { "error": "x_api_unavailable" }
    ```

    The normalized v1 response contract can return 424 when the read service is unavailable.
  </Tab>
</Tabs>

<Note>
  **Related:** [Create extraction](/api-reference/extractions/create) with `verified_follower_explorer` for saved verified follower jobs, [Export extraction](/api-reference/extractions/export) for CSV, JSON, or XLSX downloads, [Get followers](/api-reference/x/followers), [Get following](/api-reference/x/following), and [Get followers you know](/api-reference/x/followers-you-know).
</Note>
