diff --git a/.github/workflows/publish-module-api-doc.yaml b/.github/workflows/publish-module-api-doc.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..cc2c46fd73fd7d624b89b66d40794a7a2e35b401
--- /dev/null
+++ b/.github/workflows/publish-module-api-doc.yaml
@@ -0,0 +1,27 @@
+name: Publish module API documentation
+
+on:
+  push:
+    branches: [master]
+
+jobs:
+  publish-api-doc:
+    runs-on: ubuntu-latest
+    steps:
+      - name: Clone the module
+        uses: actions/checkout@v2
+
+      - name: Setup Doxygen
+        run: sudo apt install -y doxygen
+
+      - name: Build module API documentation using Doxygen
+        run: |
+            cmake .
+            make module_api
+            sed -e "s%@PROJECT_.\+_DIR@/%%" Doxyfile.API.in > Doxyfile.API
+            doxygen Doxyfile.API
+
+      - name: Publish generated API documentation to GitHub Pages
+        uses: JamesIves/github-pages-deploy-action@4.4.0
+        with:
+          folder: doc/
diff --git a/changelogs/unreleased/publish-doxygen-doc.md b/changelogs/unreleased/publish-doxygen-doc.md
new file mode 100644
index 0000000000000000000000000000000000000000..27f69b996cf774c9224c05a397e8d7a6b8b7ee35
--- /dev/null
+++ b/changelogs/unreleased/publish-doxygen-doc.md
@@ -0,0 +1,3 @@
+## feature/doxygen
+
+* Doxygen API documentation published automatically on every merge to master branch.
diff --git a/doc/index.html b/doc/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..3e0ddd8ee582dd670af3f7ddd2e798b9d123655a
--- /dev/null
+++ b/doc/index.html
@@ -0,0 +1,12 @@
+<!-- HTML index file used in https://tarantool.github.io/tarantool/ -->
+
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8">
+    <title>Tarantool Documentation</title>
+  </head>
+  <body>
+    <a href="/api/html/module_8h.html">Module API documentation</a>
+  </body>
+</html>