diff --git a/Changelog.md b/Changelog.md
index d7bcd79..ae62426 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -9,6 +9,7 @@ This file holds the changelog for Pepperminty Wiki. This is the master list of t
  - Hyperlinked image preview on file pages to the original image (#153)
  - [Rest API] Added support for the `mode` parameter to the `random` action
  - [Rest API] Added `format` parameter to `recentchanges` action
+ - [Rest API] Added `comments-fetch` action to return a page's comments as JSON
 
 ### Fixed
  - Fixed various issues with both the module api & the rest api docs.
diff --git a/build/index.php b/build/index.php
index 968cc1c..a408af3 100644
--- a/build/index.php
+++ b/build/index.php
@@ -2696,6 +2696,48 @@ register_module([
 			
 			exit(page_renderer::render_main("Comment Deleted - $settings->sitename", "<p>The comment with the id <code>" . htmlentities($target_id) . "</code> on the page <em>$env->page</em> has been deleted successfully. <a href='?page=" . rawurlencode($env->page) . "&redirect=no'>Go back</a> to " . htmlentities($env->page) . ".</p>"));
 		});
+		/**
+		 * @api {post} ?action=comments-fetch&page={page_name}	Fetch the comments for a page
+		 * @apiName CommentsFetch
+		 * @apiGroup Comment
+		 * @apiPermission Anonymous
+		 * @apiDescription	Fetches the comments for the specified page. Returns them in a nested JSON structure.
+		 * 
+		 * @apiUse		PageParameter
+		 * @apiError	PageNoteFound	The page to fetch the comments for was not found.
+		 */
+		
+		/*
+ 		 *  ██████  ██████  ███    ███ ███    ███ ███████ ███    ██ ████████
+ 		 * ██      ██    ██ ████  ████ ████  ████ ██      ████   ██    ██
+ 		 * ██      ██    ██ ██ ████ ██ ██ ████ ██ █████   ██ ██  ██    ██ █████
+ 		 * ██      ██    ██ ██  ██  ██ ██  ██  ██ ██      ██  ██ ██    ██
+ 		 *  ██████  ██████  ██      ██ ██      ██ ███████ ██   ████    ██
+ 		 *  
+ 		 * ███████ ███████ ████████  ██████ ██   ██
+ 		 * ██      ██         ██    ██      ██   ██
+ 		 * █████   █████      ██    ██      ███████
+ 		 * ██      ██         ██    ██      ██   ██
+ 		 * ██      ███████    ██     ██████ ██   ██
+		 */
+		add_action("comments-fetch", function() {
+			global $env;
+			
+			$comments_filename = get_comment_filename($env->page);
+			if(!file_exists($comments_filename)) {
+				http_response_code(404);
+				header("content-type: text/plain");
+				exit("Error: No comments file was found for the page '$env->page'.");
+			}
+			
+			$comments_data = json_decode(file_get_contents($comments_filename));
+			
+			$result = json_encode($comments_data);
+			header("content-type: application/json");
+			header("content-length: " . strlen($result));
+			exit($result);
+		});
+		
 		
 		if($env->action == "view") {
 			page_renderer::register_part_preprocessor(function(&$parts) {
diff --git a/module_index.json b/module_index.json
index a8f017c..bea4737 100755
--- a/module_index.json
+++ b/module_index.json
@@ -59,7 +59,7 @@
         "author": "Starbeamrainbowlabs",
         "description": "Adds threaded comments to the bottom of every page.",
         "id": "feature-comments",
-        "lastupdate": 1511450038,
+        "lastupdate": 1523989232,
         "optional": false
     },
     {
diff --git a/modules/feature-comments.php b/modules/feature-comments.php
index 3fa4606..a2be97a 100644
--- a/modules/feature-comments.php
+++ b/modules/feature-comments.php
@@ -192,6 +192,48 @@ register_module([
 			
 			exit(page_renderer::render_main("Comment Deleted - $settings->sitename", "<p>The comment with the id <code>" . htmlentities($target_id) . "</code> on the page <em>$env->page</em> has been deleted successfully. <a href='?page=" . rawurlencode($env->page) . "&redirect=no'>Go back</a> to " . htmlentities($env->page) . ".</p>"));
 		});
+		/**
+		 * @api {post} ?action=comments-fetch&page={page_name}	Fetch the comments for a page
+		 * @apiName CommentsFetch
+		 * @apiGroup Comment
+		 * @apiPermission Anonymous
+		 * @apiDescription	Fetches the comments for the specified page. Returns them in a nested JSON structure.
+		 * 
+		 * @apiUse		PageParameter
+		 * @apiError	PageNoteFound	The page to fetch the comments for was not found.
+		 */
+		
+		/*
+ 		 *  ██████  ██████  ███    ███ ███    ███ ███████ ███    ██ ████████
+ 		 * ██      ██    ██ ████  ████ ████  ████ ██      ████   ██    ██
+ 		 * ██      ██    ██ ██ ████ ██ ██ ████ ██ █████   ██ ██  ██    ██ █████
+ 		 * ██      ██    ██ ██  ██  ██ ██  ██  ██ ██      ██  ██ ██    ██
+ 		 *  ██████  ██████  ██      ██ ██      ██ ███████ ██   ████    ██
+ 		 *  
+ 		 * ███████ ███████ ████████  ██████ ██   ██
+ 		 * ██      ██         ██    ██      ██   ██
+ 		 * █████   █████      ██    ██      ███████
+ 		 * ██      ██         ██    ██      ██   ██
+ 		 * ██      ███████    ██     ██████ ██   ██
+		 */
+		add_action("comments-fetch", function() {
+			global $env;
+			
+			$comments_filename = get_comment_filename($env->page);
+			if(!file_exists($comments_filename)) {
+				http_response_code(404);
+				header("content-type: text/plain");
+				exit("Error: No comments file was found for the page '$env->page'.");
+			}
+			
+			$comments_data = json_decode(file_get_contents($comments_filename));
+			
+			$result = json_encode($comments_data);
+			header("content-type: application/json");
+			header("content-length: " . strlen($result));
+			exit($result);
+		});
+		
 		
 		if($env->action == "view") {
 			page_renderer::register_part_preprocessor(function(&$parts) {
