diff --git a/rmw/include/rmw/rmw.h b/rmw/include/rmw/rmw.h
index 373bf1a6..938b0352 100644
--- a/rmw/include/rmw/rmw.h
+++ b/rmw/include/rmw/rmw.h
@@ -661,6 +661,35 @@ rmw_publisher_count_matched_subscriptions(
const rmw_publisher_t * publisher,
size_t * subscription_count);
+/// Retrieve the number of non local matched subscriptions to a publisher.
+/**
+ * Query the underlying middleware to determine how many non local subscriptions are
+ * matched to a given publisher.
+ *
+ *
+ * Attribute | Adherence
+ * ------------------ | -------------
+ * Allocates Memory | No
+ * Thread-Safe | No
+ * Uses Atomics | Maybe [1]
+ * Lock-Free | Maybe [1]
+ * [1] rmw implementation defined, check the implementation documentation
+ *
+ * \param[in] publisher the publisher object to inspect
+ * \param[out] non_local_subscription_count the number of non local subscriptions matched
+ * \return `RMW_RET_OK` if successful, or
+ * \return `RMW_RET_INVALID_ARGUMENT` if either argument is null, or
+ * \return `RMW_RET_INCORRECT_RMW_IMPLEMENTATION` if publisher
+ * implementation identifier does not match, or
+ * \return `RMW_RET_ERROR` if an unexpected error occurs.
+ */
+RMW_PUBLIC
+RMW_WARN_UNUSED
+rmw_ret_t
+rmw_publisher_count_non_local_matched_subscriptions(
+ const rmw_publisher_t * publisher,
+ size_t * non_local_subscription_count);
+
/// Retrieve the actual qos settings of the publisher.
/**
* Query the underlying middleware to determine the qos settings