> ## 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 Groups

> Fetch, filter, and search groups using the CometChat React Native SDK. Includes pagination, tag-based filtering, joined-only groups, and online member counts.

<Accordion title="AI Integration Quick Reference">
  ```javascript theme={null}
  // Fetch groups list
  const request = new CometChat.GroupsRequestBuilder()
    .setLimit(30).build();
  const groups = await request.fetchNext();

  // Get specific group details
  const group = await CometChat.getGroup("GUID");

  // Fetch only joined groups
  const joinedRequest = new CometChat.GroupsRequestBuilder()
    .setLimit(30).joinedOnly(true).build();

  // Get online member count
  const count = await CometChat.getOnlineGroupMemberCount(["GUID"]);
  ```
</Accordion>

Fetch the list of [`Group`](/sdk/reference/entities#group) objects the logged-in user can see, get details for a specific group, or check online member counts.

## Retrieve List of Groups

Use `GroupsRequestBuilder` to fetch groups with filtering, searching, and pagination.

Fetching using this builder will return [`Group`](/sdk/reference/entities#group) objects.

### Set Limit

Sets the number of groups to fetch per request.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let limit: number = 30;
    let groupsRequest: CometChat.GroupsRequest = new CometChat.GroupsRequestBuilder()
      .setLimit(limit)
      .build();
    ```
  </Tab>

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

### Set Search Keyword

Filters groups by a search string.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let limit: number = 30;
    let searchKeyword: string = "group";
    let groupsRequest: CometChat.GroupsRequest = new CometChat.GroupsRequestBuilder()
      .setLimit(limit)
      .setSearchKeyword(searchKeyword)
      .build();
    ```
  </Tab>

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

### Joined Only

When `true`, returns only groups the logged-in user has joined.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let limit: number = 30;
    let groupsRequest: CometChat.GroupsRequest = new CometChat.GroupsRequestBuilder()
      .setLimit(limit)
      .joinedOnly(true)
      .build();
    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let limit = 30;
    let groupsRequest = new CometChat.GroupsRequestBuilder()
                      	.setLimit(limit)
                      	.joinedOnly(true)
                      	.build();
    ```
  </Tab>
</Tabs>

### Set Tags

Filters groups by specified tags.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let limit: number = 30;
    let tags: Array<String> = ["tag1", "tag2"];
    let groupsRequest: CometChat.GroupsRequest = new CometChat.GroupsRequestBuilder()
      .setLimit(limit)
      .setTags(tags)
      .build();
    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let limit = 30;
    let tags = ["tag1", "tag2"];
    let groupsRequest = new CometChat.GroupsRequestBuilder()
                      	.setLimit(limit)
                      	.setTags(tags)
                      	.build();
    ```
  </Tab>
</Tabs>

### With Tags

When `true`, includes tag data in the returned group objects.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let limit: number = 30;
    let groupsRequest: CometChat.GroupsRequest = new CometChat.GroupsRequestBuilder()
      .setLimit(limit)
      .withTags(true)
      .build();
    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let limit = 30;
    let groupsRequest = new CometChat.GroupsRequestBuilder()
     .setLimit(limit)
     .withTags(true)
     .build();
    ```
  </Tab>
</Tabs>

Relevant fields to access on returned groups:

| Field | Getter      | Return Type | Description                    |
| ----- | ----------- | ----------- | ------------------------------ |
| tags  | `getTags()` | `string[]`  | Tags associated with the group |

After configuring the builder, call `build()` to get the `GroupsRequest` object, then call `fetchNext()` to retrieve groups.

<Note>
  The list only includes public and password-protected groups. Private groups appear only if the user is a member.
</Note>

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let limit: number = 30;
    let groupsRequest: CometChat.GroupsRequest = new CometChat.GroupsRequestBuilder()
      .setLimit(limit)
      .build();

    groupsRequest.fetchNext().then(
      (groupList: CometChat.Group[]) => {
          console.log("Groups list fetched successfully", groupList);
      }, (error: CometChat.CometChatException) => {
          console.log("Groups list fetching failed with error", error);
      }
    );
    ```
  </Tab>

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

    groupsRequest.fetchNext().then(
    groupList => {
      console.log("Groups list fetched successfully", groupList);
    }, error => {
      console.log("Groups list fetching failed with error", error);
    }
    );
    ```
  </Tab>
</Tabs>

The `fetchNext()` method returns an array of [`Group`](/sdk/reference/entities#group) objects.

## Retrieve Particular Group Details

Use `getGroup()` to fetch a specific group's details by GUID.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    const GUID: string = "GUID";
    CometChat.getGroup(GUID).then(
      (group: CometChat.Group) => {
          console.log("Group details fetched successfully:", group);
      }, (error: CometChat.CometChatException) => {
          console.log("Group details fetching failed with exception:", error);
      }
    );
    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    const GUID = "GUID";
    CometChat.getGroup(GUID).then(
    group => {
      console.log("Group details fetched successfully:", group);
    }, error => {
      console.log("Group details fetching failed with exception:", error);
    }
    );   
    ```
  </Tab>
</Tabs>

| Parameter | Description                    |
| --------- | ------------------------------ |
| `GUID`    | The GUID of the group to fetch |

The method returns a [`Group`](/sdk/reference/entities#group) object.

## Get Online Group Member Count

Use `getOnlineGroupMemberCount()` to get the number of online members in specified groups.

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    let guids: String[] = ["cometchat-guid-1"];
    CometChat.getOnlineGroupMemberCount(guids).then(
      (groupMemberCount: Object) => {
          console.log("Total online user for specified groups:", groupMemberCount);
      }, (error: CometChat.CometChatException) => {
          console.log("Online group member count fetching failed with error:", error);
      }
    );
    ```
  </Tab>

  <Tab title="JavaScript">
    ```javascript theme={null}
    let guids = ["cometchat-guid-1"];
    CometChat.getOnlineGroupMemberCount(guids).then(
    groupMemberCount => {
      console.log("Total online user for specified groups:", groupMemberCount);
    }, error => {
      console.log("Online group member count fetching failed with error:", error);
    }
    );
    ```
  </Tab>
</Tabs>

Returns an object with GUIDs as keys and online member counts as values.

`getOnlineGroupMemberCount()` resolves with a `{ guid: count }` object where each key is a group GUID and its value is the number of currently online members in that group.

***

## Next Steps

<CardGroup cols={2}>
  <Card title="Create Group" icon="plus" href="/sdk/react-native/create-group">
    Create public, private, or password-protected groups
  </Card>

  <Card title="Retrieve Group Members" icon="users" href="/sdk/react-native/retrieve-group-members">
    Fetch and filter members of a specific group
  </Card>
</CardGroup>
