diff --git a/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/DubboApiDocsAnnotationScanner.java b/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/DubboApiDocsAnnotationScanner.java
index f8bb60e..f3287da 100644
--- a/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/DubboApiDocsAnnotationScanner.java
+++ b/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/DubboApiDocsAnnotationScanner.java
@@ -120,16 +120,20 @@
             }
             boolean async;
             String apiVersion;
+            String apiGroup;
             if (apiModuleClass.isAnnotationPresent(Service.class)) {
                 Service dubboService = apiModuleClass.getAnnotation(Service.class);
                 async = dubboService.async();
                 apiVersion = dubboService.version();
+                apiGroup = dubboService.group();
             } else {
                 DubboService dubboService = apiModuleClass.getAnnotation(DubboService.class);
                 async = dubboService.async();
                 apiVersion = dubboService.version();
+                apiGroup = dubboService.group();
             }
             apiVersion = applicationContext.getEnvironment().resolvePlaceholders(apiVersion);
+            apiGroup = applicationContext.getEnvironment().resolvePlaceholders(apiGroup);
             ModuleCacheItem moduleCacheItem = new ModuleCacheItem();
             DubboApiDocsCache.addApiModule(moduleAnn.apiInterface().getCanonicalName(), moduleCacheItem);
             //module name
@@ -138,6 +142,8 @@
             moduleCacheItem.setModuleClassName(moduleAnn.apiInterface().getCanonicalName());
             //module version
             moduleCacheItem.setModuleVersion(apiVersion);
+            //module group
+            moduleCacheItem.setModuleGroup(apiGroup);
 
             Method[] apiModuleMethods = apiModuleClass.getMethods();
             // API basic information list in module cache
@@ -145,7 +151,7 @@
             moduleCacheItem.setModuleApiList(moduleApiList);
             for (Method method : apiModuleMethods) {
                 if (method.isAnnotationPresent(ApiDoc.class)) {
-                    processApiDocAnnotation(method, moduleApiList, moduleAnn, async, moduleCacheItem, apiVersion);
+                    processApiDocAnnotation(method, moduleApiList, moduleAnn, async, moduleCacheItem, apiVersion, apiGroup);
                 }
             }
         });
@@ -153,7 +159,7 @@
     }
 
     private void processApiDocAnnotation(Method method, List<ApiCacheItem> moduleApiList, ApiModule moduleAnn,
-                                         boolean async, ModuleCacheItem moduleCacheItem, String apiVersion) {
+                                         boolean async, ModuleCacheItem moduleCacheItem, String apiVersion, String apiGroup) {
 
         ApiDoc dubboApi = method.getAnnotation(ApiDoc.class);
 
@@ -168,6 +174,8 @@
         apiListItem.setDescription(dubboApi.description());
         //API version
         apiListItem.setApiVersion(apiVersion);
+        //API group
+        apiListItem.setApiGroup(apiGroup);
         //Description of API return data
         apiListItem.setApiRespDec(dubboApi.responseClassDescription());
 
@@ -185,6 +193,7 @@
         apiParamsAndResp.setApiName(method.getName());
         apiParamsAndResp.setApiDocName(dubboApi.value());
         apiParamsAndResp.setApiVersion(apiVersion);
+        apiParamsAndResp.setApiGroup(apiGroup);
         apiParamsAndResp.setApiRespDec(dubboApi.responseClassDescription());
         apiParamsAndResp.setDescription(dubboApi.description());
         apiParamsAndResp.setApiModelClass(moduleCacheItem.getModuleClassName());
diff --git a/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/beans/ApiCacheItem.java b/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/beans/ApiCacheItem.java
index f88c039..b92fae9 100644
--- a/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/beans/ApiCacheItem.java
+++ b/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/beans/ApiCacheItem.java
@@ -31,6 +31,8 @@
 
     private String apiVersion;
 
+    private String apiGroup;
+
     private String description;
 
     private String apiRespDec;
@@ -122,4 +124,12 @@
     public void setMethodParamInfo(String methodParamInfo) {
         this.methodParamInfo = methodParamInfo;
     }
+
+    public String getApiGroup() {
+        return apiGroup;
+    }
+
+    public void setApiGroup(String apiGroup) {
+        this.apiGroup = apiGroup;
+    }
 }
diff --git a/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/beans/ModuleCacheItem.java b/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/beans/ModuleCacheItem.java
index e729969..0147152 100644
--- a/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/beans/ModuleCacheItem.java
+++ b/dubbo-api-docs/dubbo-api-docs-core/src/main/java/org/apache/dubbo/apidocs/core/beans/ModuleCacheItem.java
@@ -29,6 +29,8 @@
 
     private String moduleVersion;
 
+    private String moduleGroup;
+
     private List<ApiCacheItem> moduleApiList;
 
     public String getModuleDocName() {
@@ -62,4 +64,12 @@
     public void setModuleApiList(List<ApiCacheItem> moduleApiList) {
         this.moduleApiList = moduleApiList;
     }
+
+    public String getModuleGroup() {
+        return moduleGroup;
+    }
+
+    public void setModuleGroup(String moduleGroup) {
+        this.moduleGroup = moduleGroup;
+    }
 }
diff --git a/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/src/main/java/org/apache/dubbo/apidocs/examples/api/impl/QuickStartDemoImpl.java b/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/src/main/java/org/apache/dubbo/apidocs/examples/api/impl/QuickStartDemoImpl.java
index f02ae82..75db7ab 100644
--- a/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/src/main/java/org/apache/dubbo/apidocs/examples/api/impl/QuickStartDemoImpl.java
+++ b/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/src/main/java/org/apache/dubbo/apidocs/examples/api/impl/QuickStartDemoImpl.java
@@ -40,7 +40,7 @@
  *
  * @date 2020/12/23 17:21
  */
-@DubboService(version = "${demo.apiversion.quickstart}")
+@DubboService(version = "${demo.apiversion.quickstart}", group = "demoGroup")
 @ApiModule(value = "quick start demo", apiInterface = IQuickStartDemo.class)
 public class QuickStartDemoImpl implements IQuickStartDemo {
 
diff --git a/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/src/main/resources/application.yml b/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/src/main/resources/application.yml
index 10a1831..58b8cc7 100644
--- a/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/src/main/resources/application.yml
+++ b/dubbo-api-docs/dubbo-api-docs-examples/examples-provider/src/main/resources/application.yml
@@ -23,6 +23,7 @@
 dubbo:
   registry:
     address: zookeeper://127.0.0.1:2181
+#    group: DEFAULT_GROUP
   provider:
     timeout: 2000
     filter: metrics
@@ -33,8 +34,10 @@
     name: dubbo-api-docs-example-provider
   metadata-report:
     address: zookeeper://127.0.0.1:2181
+#    group: DEFAULT_GROUP
   config-center:
     address: zookeeper://127.0.0.1:2181
+#    group: DEFAULT_GROUP
   metrics:
     port: ${dubbo.protocol.port}
     protocol: dubbo
