diff --git a/include/plist/plist.h b/include/plist/plist.h
index 824ba43..29b1fce 100644
--- a/include/plist/plist.h
+++ b/include/plist/plist.h
@@ -463,6 +463,19 @@
     void plist_get_string_val(plist_t node, char **val);
 
     /**
+     * Get a pointer to the buffer of a #PLIST_STRING node.
+     *
+     * @note DO NOT MODIFY the buffer. Mind that the buffer is only available
+     *   until the plist node gets freed. Make a copy if needed.
+     *
+     * @param node The node
+     * @param length If non-NULL, will be set to the length of the string
+     *
+     * @return Pointer to the NULL-terminated buffer.
+     */
+    const char* plist_get_string_ptr(plist_t node, uint64_t* length);
+
+    /**
      * Get the value of a #PLIST_BOOLEAN node.
      * This function does nothing if node is not of type #PLIST_BOOLEAN
      *
@@ -501,6 +514,19 @@
     void plist_get_data_val(plist_t node, char **val, uint64_t * length);
 
     /**
+     * Get a pointer to the data buffer of a #PLIST_DATA node.
+     *
+     * @note DO NOT MODIFY the buffer. Mind that the buffer is only available
+     *   until the plist node gets freed. Make a copy if needed.
+     *
+     * @param node The node
+     * @param length Pointer to a uint64_t that will be set to the length of the buffer
+     *
+     * @return Pointer to the buffer
+     */
+    const char* plist_get_data_ptr(plist_t node, uint64_t* length);
+
+    /**
      * Get the value of a #PLIST_DATE node.
      * This function does nothing if node is not of type #PLIST_DATE
      *
diff --git a/src/plist.c b/src/plist.c
index eb0160c..87be488 100644
--- a/src/plist.c
+++ b/src/plist.c
@@ -868,6 +868,19 @@
     assert(length == strlen(*val));
 }
 
+PLIST_API const char* plist_get_string_ptr(plist_t node, uint64_t* length)
+{
+    if (!node)
+        return NULL;
+    plist_type type = plist_get_node_type(node);
+    if (PLIST_STRING != type)
+        return NULL;
+    plist_data_t data = plist_get_data(node);
+    if (length)
+        *length = data->length;
+    return (const char*)data->strval;
+}
+
 PLIST_API void plist_get_bool_val(plist_t node, uint8_t * val)
 {
     if (!node || !val)
@@ -926,6 +939,18 @@
     plist_get_type_and_value(node, &type, (void *) val, length);
 }
 
+PLIST_API const char* plist_get_data_ptr(plist_t node, uint64_t* length)
+{
+    if (!node || !length)
+        return NULL;
+    plist_type type = plist_get_node_type(node);
+    if (PLIST_DATA != type)
+        return NULL;
+    plist_data_t data = plist_get_data(node);
+    *length = data->length;
+    return (const char*)data->buff;
+}
+
 PLIST_API void plist_get_date_val(plist_t node, int32_t * sec, int32_t * usec)
 {
     if (!node)
