> ## 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 paginate group members using the CometChat JavaScript SDK.

## 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 let GUID = "GUID"; let limit = 30; let scopes = ["admin", theme={null}
    "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
    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/javascript/group-add-members">
    Add users to a group programmatically
  </Card>

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