diff --git a/jobs/inputs/sol_ephemeris.txt b/jobs/inputs/sol_ephemeris.txt
index 87109f78cc2380dcfb7e413f022bdd94ea8ce9b6..f69366754268513af8223253e3108db6c0750bc4 100644
--- a/jobs/inputs/sol_ephemeris.txt
+++ b/jobs/inputs/sol_ephemeris.txt
@@ -1,9 +1,9 @@
 !$$SOF
-MAKE_EPHEM=YES
-COMMAND=10
-EPHEM_TYPE=VECTORS
+MAKE_EPHEM='YES'
+COMMAND='10'
+EPHEM_TYPE='VECTORS'
 CENTER='coord@399'
-COORD_TYPE=GEODETIC
+COORD_TYPE='GEODETIC'
 SITE_COORD='13.35075983141236,52.497297553950155,0.0354'
 START_TIME='2023-12-24'
 STOP_TIME='2024-01-01'
@@ -16,5 +16,5 @@ CAL_TYPE='M'
 OUT_UNITS='KM-S'
 VEC_LABELS='YES'
 VEC_DELTA_T='NO'
-CSV_FORMAT='NO'
-OBJ_DATA='YES'
\ No newline at end of file
+CSV_FORMAT='YES'
+OBJ_DATA='NO'
\ No newline at end of file
diff --git a/jobs/src/jpl_data_query.py b/jobs/src/jpl_data_query.py
deleted file mode 100644
index cbcbe9c24eaf23b28f2b3cb6874469beb4d8cfaa..0000000000000000000000000000000000000000
--- a/jobs/src/jpl_data_query.py
+++ /dev/null
@@ -1,15 +0,0 @@
-"""
-This module contains functions to query JPL Horizons 
-on-line solar system data (see https://ssd.jpl.nasa.gov/horizons).
-
-Example:
-    python jobs/src/jpl_data_query.py jobs/inputs/mars_ephemeris.txt > results.txt
-"""
-import sys
-import requests
-
-f = open(sys.argv[1])
-url = "https://ssd.jpl.nasa.gov/api/horizons_file.api"
-r = requests.post(url, data={'format': 'text'}, files={'input': f})
-print(r.text)
-f.close()
diff --git a/jobs/src/jpl_utils.py b/jobs/src/jpl_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..9c8863786b6cc7bf5a70fbbfe879cabba143276c
--- /dev/null
+++ b/jobs/src/jpl_utils.py
@@ -0,0 +1,43 @@
+"""
+This module contains functions to query and parse JPL Horizons 
+on-line solar system data (see https://ssd-api.jpl.nasa.gov/doc/horizons.html).
+"""
+import requests
+
+import numpy as np
+
+
+def query_data(input_file: str) -> str:
+    """
+    Send request to the Horizons API with settings for the desired ephemeris results saved in an input file.
+    """
+    with open(input_file, 'r') as f:
+        file = f.read()
+
+    url = "https://ssd.jpl.nasa.gov/api/horizons_file.api"
+    r = requests.post(url, data={'format': 'json'}, files={'input': file})
+
+    return r.json()['result']
+
+
+def parse_output(output: str) -> np.ndarray:
+    """
+    Parse output of API calls for positions and velocities
+    """
+
+    output = list(filter(bool, output.split("\n")))
+    vector_list = [line.split(",") for line in output if line[0].isdigit()]
+    vector_list = [vector[2:8] for vector in vector_list]
+
+    r = np.zeros((len(vector_list), 3), dtype=float)
+    v = np.zeros((len(vector_list), 3), dtype=float)
+
+    for i, vector in enumerate(vector_list):
+        r[i][0] = float(vector[0])
+        r[i][1] = float(vector[1])
+        r[i][2] = float(vector[2])
+        v[i][0] = float(vector[3])
+        v[i][1] = float(vector[4])
+        v[i][2] = float(vector[5])
+
+    return r, v