diff --git a/pkgs/servers/monitoring/prometheus/prom2json/default.nix b/pkgs/servers/monitoring/prometheus/prom2json/default.nix
new file mode 100644
index 000000000000..95457758cd23
--- /dev/null
+++ b/pkgs/servers/monitoring/prometheus/prom2json/default.nix
@@ -0,0 +1,28 @@
+{ goPackages, lib, fetchFromGitHub }:
+
+goPackages.buildGoPackage rec {
+  name = "prom2json-${rev}";
+  rev = "0.1.0";
+  goPackagePath = "github.com/prometheus/prom2json";
+
+  src = fetchFromGitHub {
+    owner = "prometheus";
+    repo = "prom2json";
+    inherit rev;
+    sha256 = "0wwh3mz7z81fwh8n78sshvj46akcgjhxapjgfic5afc4nv926zdl";
+  };
+
+  buildInputs = with goPackages; [
+    golang_protobuf_extensions
+    prometheus.client_golang
+    protobuf
+  ];
+
+  meta = with lib; {
+    description = "A tool to scrape a Prometheus client and dump the result as JSON.";
+    homepage = https://github.com/prometheus/prom2json;
+    license = licenses.asl20;
+    maintainers = with maintainers; [ benley ];
+    platforms = platforms.unix;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index f0e54b916caf..208000292bd1 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -8802,6 +8802,7 @@ let
 
   postgresql_jdbc = callPackage ../servers/sql/postgresql/jdbc { };
 
+  prom2json = callPackage ../servers/monitoring/prometheus/prom2json { };
   prometheus = callPackage ../servers/monitoring/prometheus { };
   prometheus-alertmanager =
     callPackage ../servers/monitoring/prometheus/alertmanager { };