> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-docs-rn-guide-message-privately.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">
  ```javascript theme={null}
  // Fetch group members
  const request = new CometChat.GroupMembersRequestBuilder("GUID")
    .setLimit(30).build();
  const members = await request.fetchNext();

  // Filter by scope
  const scopeRequest = new CometChat.GroupMembersRequestBuilder("GUID")
    .setLimit(30).setScopes(["admin", "moderator"]).build();

  // Search members
  const searchRequest = new CometChat.GroupMembersRequestBuilder("GUID")
    .setLimit(30).setSearchKeyword("john").build();
  ```
</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>
