diff --git a/relation.module b/relation.module
index 15d888b..eb94765 100644
--- a/relation.module
+++ b/relation.module
@@ -142,6 +142,11 @@ function relation_menu() {
     'access arguments' => array('access content'),
     'page callback' => 'relation_predicate_autocomplete',
   );
+  $items['relation/autocomplete/entities'] = array(
+    'type' => MENU_CALLBACK,
+    'access arguments' => array('access content'),
+    'page callback' => 'relation_entity_autocomplete',
+  );
   return $items;
 }
 
@@ -627,3 +632,45 @@ function relation_views_api() {
     'path' => drupal_get_path('module', 'relation') . '/views',
   );
 }
+
+/**
+ * Autocomplete page for listing entities appropriate for a giver relation type.
+ *
+ * @param $predicate
+ *   The relation type to search for endpoints for.
+ * @param $string
+ *   The string for which the search through entity labels will be run.
+ * @param $dir
+ *   The set of entity bundles to search through (either 'source', or 'target').
+ */
+function relation_entity_autocomplete($predicate = '', $string = '', $dir = 'source') {
+  if (empty($predicate) || empty($string)) {
+    exit();
+  }
+  $entity_infos = entity_get_info();
+  $relation_type = relation_type_load($predicate);
+  $entity_bundles = array();
+  $direction = $dir . '_bundles';
+  foreach ($relation_type->$direction as $entity_bundle) {
+    list($entity_type, $bundle) = explode(':', $entity_bundle, 2);
+    $entity_bundles[$entity_type][]= $bundle;
+  }
+  $limit = ceil(12 / count(array_keys($entity_bundles)));
+  $results = array();
+  foreach ($entity_bundles as $entity_type => $bundles) {
+    $label = $entity_infos[$entity_type]['entity keys']['label'];
+    if (empty($label)) {
+      break;
+    }
+    $query = new EntityFieldQuery();
+    $query->entityCondition('entity_type', $entity_type)
+      ->propertyCondition($label, $string, 'CONTAINS')
+      ->range(0, $limit);
+    if (!in_array('*', $bundles)) {
+      $query->entityCondition('bundle', $bundles, 'IN');
+    }
+    $results += $query->execute();
+  }
+  print drupal_json_encode($results);
+  exit();
+}
\ No newline at end of file
