diff --git a/src/context.c b/src/context.c
index cd3accb..b694a46 100644
--- a/src/context.c
+++ b/src/context.c
@@ -30,12 +30,14 @@
 #include "hash_table.h"
 #include "parser.h"
 #include "parser_data.h"
+#include "path.h"
 #include "plugins_types.h"
 #include "set.h"
 #include "tree.h"
 #include "tree_data.h"
 #include "tree_schema.h"
 #include "tree_schema_internal.h"
+#include "xpath.h"
 
 #define LY_INTERNAL_MODS_COUNT 6
 
@@ -527,6 +529,40 @@
     return NULL;
 }
 
+API const struct lysc_node *
+ly_ctx_get_node(const struct ly_ctx *ctx, const struct lysc_node *ctx_node, const char *data_path, int output)
+{
+    const struct lysc_node *snode = NULL;
+    struct lyxp_expr *exp = NULL;
+    struct ly_path *p = NULL;
+    LY_ERR ret;
+    uint8_t oper;
+
+    LY_CHECK_ARG_RET(ctx, ctx || ctx_node, NULL);
+
+    if (!ctx) {
+        ctx = ctx_node->module->ctx;
+    }
+
+    /* parse */
+    exp = lyxp_expr_parse(ctx, data_path, strlen(data_path), 0);
+    LY_CHECK_GOTO(!exp, cleanup);
+
+    /* compile */
+    oper = output ? LY_PATH_OPER_OUTPUT : LY_PATH_OPER_INPUT;
+    ret = ly_path_compile(ctx, NULL, ctx_node, exp, LY_PATH_LREF_FALSE, oper, LY_PATH_TARGET_MANY,
+                          lydjson_resolve_prefix, NULL, LYD_JSON, &p);
+    LY_CHECK_GOTO(ret, cleanup);
+
+    /* get last node */
+    snode = p[LY_ARRAY_COUNT(p) - 1].node;
+
+cleanup:
+    ly_path_free(ctx, p);
+    lyxp_expr_free(ctx, exp);
+    return snode;
+}
+
 API void
 ly_ctx_reset_latests(struct ly_ctx *ctx)
 {
diff --git a/src/context.h b/src/context.h
index cdd5ced..39a2883 100644
--- a/src/context.h
+++ b/src/context.h
@@ -400,6 +400,18 @@
 struct lys_module *ly_ctx_get_module_implemented_ns(const struct ly_ctx *ctx, const char *ns);
 
 /**
+ * @brief Get a schema node based on the given data path (JSON format, see @ref howtoxpath).
+ *
+ * @param[in] ctx libyang context, set for absolute paths.
+ * @param[in] ctx_node Starting context node for a relative data path, set for relative paths.
+ * @param[in] data_path JSON data path of the node to get.
+ * @param[in] output Search operation output instead of input.
+ * @return Found schema node or NULL.
+ */
+const struct lysc_node *ly_ctx_get_node(const struct ly_ctx *ctx, const struct lysc_node *ctx_node,
+                                        const char *data_path, int output);
+
+/**
  * @brief Reset cached latest revision information of the schemas in the context.
  *
  * When a (sub)module is imported/included without revision, the latest revision is
