> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-docs-skills-v5-temp.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Retrieve Group Members

> Fetch and filter group members by scope, status, and search keyword using the CometChat React Native SDK with pagination support.

<Accordion title="AI Integration Quick Reference">
  | Field           | Value                                                                                                                                                                                                          |
  | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | Package         | `@cometchat/chat-sdk-react-native`                                                                                                                                                                             |
  | Import          | `import { CometChat } from "@cometchat/chat-sdk-react-native";`                                                                                                                                                |
  | Key Classes     | `GroupMember` (extends `User`), `GroupMembersRequest`, `GroupMembersRequestBuilder`, `CometChatException`                                                                                                      |
  | Key Methods     | `fetchNext()`, `fetchPrevious()` — build the request via `GroupMembersRequestBuilder`                                                                                                                          |
  | Request Builder | `new CometChat.GroupMembersRequestBuilder(GUID)` — GUID goes to the constructor; chain `.setLimit()`, `.setSearchKeyword()`, `.setScopes()`, `.setStatus()`, then `.build()`                                   |
  | Primary output  | `Promise<CometChat.GroupMember[]>` — rejects with `CometChatException`. Read a member's role with `getScope()` (`admin` / `moderator` / `participant`)                                                         |
  | Prerequisites   | SDK initialized via `CometChat.init()`, user logged in via `CometChat.login()`; a valid GUID for a group the logged-in user is a member of                                                                     |
  | Related         | [Retrieve Groups](/sdk/react-native/retrieve-groups), [Add Members](/sdk/react-native/group-add-members), [Kick & Ban Members](/sdk/react-native/group-kick-ban-members)                                       |
  | Constraints     | Pass the GUID to the **builder's constructor**, not to `fetchNext()`. Banned members do not appear here — use `BannedMembersRequest`.                                                                          |
  | Full reference  | [`GroupMember`](/sdk/reference/entities#groupmember) · [`User`](/sdk/reference/entities#user) · [`Group`](/sdk/reference/entities#group) · [`CometChatException`](/sdk/reference/auxiliary#cometchatexception) |
</Accordion>

Fetch the members of a group with filtering by scope, online status, and search keyword. Results are returned as [`GroupMember`](/sdk/reference/entities#groupmember) objects, which extend [`User`](/sdk/reference/entities#user) with group-specific fields like scope.

## Retrieve the List of Group Members

Use `GroupMembersRequestBuilder` to fetch members of a [Group](/sdk/reference/entities#group). The GUID must be specified in the constructor.

Fetching using this builder will return [`GroupMember`](/sdk/reference/entities#groupmember) objects. `GroupMember` extends [`User`](/sdk/reference/entities#user) and adds group-specific fields.

### Set Limit

Sets the number of members to fetch per request.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let GUID: string = "GUID";
    let limit: number = 30;
    let groupMembersRequest: CometChat.GroupMembersRequest = new CometChat.GroupMembersRequestBuilder(GUID)
      .setLimit(limit)
      .build();
    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let GUID = "GUID";
    let limit = 30;
    let groupMembersRequest = new CometChat.GroupMembersRequestBuilder(GUID)
      												.setLimit(limit)
      												.build();
    ```
  </Tab>
</Tabs>

### Set Search Keyword

Filters members by a search string.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let GUID: string = "GUID";
    let limit: number = 30;
    let searchKeyword: string = "super";
    let groupMembersRequest: CometChat.GroupMembersRequest = new CometChat.GroupMembersRequestBuilder(GUID)
      .setLimit(limit)
      .setSearchKeyword(searchKeyword)
      .build();
    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let GUID = "GUID";
    let limit = 30;
    let searchKeyword = "super";
    let groupMembersRequest = new CometChat.GroupMembersRequestBuilder(GUID)
      												.setLimit(limit)
      												.setSearchKeyword(searchKeyword)
      												.build();
    ```
  </Tab>
</Tabs>

### Set Scopes

Filters members by one or more scopes (`admin`, `moderator`, `participant`).

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let GUID: string = "GUID";
    let limit: number = 30;
    let scopes: Array<String> = ["admin", "moderator"];
    let groupMembersRequest: CometChat.GroupMembersRequest = new CometChat.GroupMembersRequestBuilder(GUID)
      .setLimit(limit)
      .setScopes(scopes)
      .build();
    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let GUID = "GUID";
    let limit = 30;
    let scopes = ["admin", "moderator"];
    let groupMembersRequest = new CometChat.GroupMembersRequestBuilder(GUID)
      .setLimit(limit)
      .setScopes(scopes)
      .build();
    ```
  </Tab>
</Tabs>

Relevant fields to access on returned members:

| Field | Getter       | Return Type | Description                                                                     |
| ----- | ------------ | ----------- | ------------------------------------------------------------------------------- |
| scope | `getScope()` | `string`    | Scope of the member in the group (`"admin"`, `"moderator"`, or `"participant"`) |

### Set Status

Filters members by online status:

| Value                           | Description          |
| ------------------------------- | -------------------- |
| `CometChat.USER_STATUS.ONLINE`  | Only online members  |
| `CometChat.USER_STATUS.OFFLINE` | Only offline members |

If not set, returns all members regardless of status.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let GUID: string = "GUID";
    let limit: number = 30;
    let groupMembersRequest: CometChat.GroupMembersRequest = new CometChat.GroupMembersRequestBuilder(GUID)
      .setLimit(limit)
      .setStatus(CometChat.USER_STATUS.ONLINE)
      .build();
    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let GUID = "GUID";
    let limit = 30;
    let groupMembersRequest = new CometChat.GroupMembersRequestBuilder(GUID)
      .setLimit(limit)
      .setStatus(CometChat.USER_STATUS.ONLINE)
      .build();
    ```
  </Tab>
</Tabs>

After configuring the builder, call `build()` to create the request, then `fetchNext()` to retrieve members. Call `fetchNext()` repeatedly on the same instance to paginate.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let GUID: string = "GUID";
    let limit: number = 30;
    let groupMembersRequest: CometChat.GroupMembersRequest = new CometChat.GroupMembersRequestBuilder(GUID)
      .setLimit(limit)
      .build();

    groupMembersRequest.fetchNext().then(
      (groupMembers: CometChat.GroupMember[]) => {
          console.log("Group Member list fetched successfully:", groupMembers);
      }, (error: CometChat.CometChatException) => {
          console.log("Group Member list fetching failed with exception:", error);
      }
    );
    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let GUID = "GUID";
    let limit = 30;
    let groupMemberRequest = new CometChat.GroupMembersRequestBuilder(GUID)
      												.setLimit(limit)
      												.build();

    groupMemberRequest.fetchNext().then(
    groupMembers => {
      console.log("Group Member list fetched successfully:", groupMembers);
    }, error => {
      console.log("Group Member list fetching failed with exception:", error);
    }
    );
    ```
  </Tab>
</Tabs>

The `fetchNext()` method returns an array of [`GroupMember`](/sdk/reference/entities#groupmember) objects. `GroupMember` extends [`User`](/sdk/reference/entities#user) and adds group-specific fields.

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Add Members" icon="user-plus" href="/sdk/react-native/group-add-members">
    Add users to a group programmatically
  </Card>

  <Card title="Kick & Ban Members" icon="user-slash" href="/sdk/react-native/group-kick-ban-members">
    Remove or ban members from a group
  </Card>

  <Card title="Change Member Scope" icon="shield" href="/sdk/react-native/group-change-member-scope">
    Update member roles within a group
  </Card>

  <Card title="Retrieve Groups" icon="layer-group" href="/sdk/react-native/retrieve-groups">
    Fetch group lists and group details
  </Card>
</CardGroup>
