diff --git a/client/client.go b/client/client.go
index 298d8b4..fabac91 100644
--- a/client/client.go
+++ b/client/client.go
@@ -48,8 +48,12 @@
 
 // Client interface for fetching vulnerabilities based on module path or ID.
 type Client interface {
-	// TODO(jba): rename to GetByModule
-	Get(string) ([]*osv.Entry, error)
+	// GetByModule returns the entries that affect the given module path.
+	// It returns (nil, nil) if there are none.
+	GetByModule(string) ([]*osv.Entry, error)
+
+	// GetByID returns the entry with the given ID, or (nil, nil) if there isn't
+	// one.
 	GetByID(string) (*osv.Entry, error)
 }
 
@@ -64,7 +68,7 @@
 	dir string
 }
 
-func (ls *localSource) Get(module string) ([]*osv.Entry, error) {
+func (ls *localSource) GetByModule(module string) ([]*osv.Entry, error) {
 	content, err := ioutil.ReadFile(filepath.Join(ls.dir, module+".json"))
 	if os.IsNotExist(err) {
 		return nil, nil
@@ -173,7 +177,7 @@
 	return index, nil
 }
 
-func (hs *httpSource) Get(module string) ([]*osv.Entry, error) {
+func (hs *httpSource) GetByModule(module string) ([]*osv.Entry, error) {
 	index, err := hs.Index()
 	if err != nil {
 		return nil, err
@@ -286,11 +290,11 @@
 	return c, nil
 }
 
-func (c *client) Get(module string) ([]*osv.Entry, error) {
+func (c *client) GetByModule(module string) ([]*osv.Entry, error) {
 	var entries []*osv.Entry
 	// probably should be parallelized
 	for _, s := range c.sources {
-		e, err := s.Get(module)
+		e, err := s.GetByModule(module)
 		if err != nil {
 			return nil, err // be failure tolerant?
 		}
diff --git a/client/client_test.go b/client/client_test.go
index 4a00220..924d73a 100644
--- a/client/client_test.go
+++ b/client/client_test.go
@@ -182,7 +182,7 @@
 			t.Fatal(err)
 		}
 
-		vulns, err := client.Get("golang.org/example/one")
+		vulns, err := client.GetByModule("golang.org/example/one")
 		if err != nil {
 			t.Fatal(err)
 		}
@@ -215,7 +215,7 @@
 
 	hs := &httpSource{url: ts.URL, c: new(http.Client)}
 	for _, module := range []string{"a", "b", "c"} {
-		if _, err := hs.Get(module); err != nil {
+		if _, err := hs.GetByModule(module); err != nil {
 			t.Fatalf("unexpected error: %s", err)
 		}
 	}
@@ -253,7 +253,7 @@
 	if err != nil {
 		t.Fatal(err)
 	}
-	vulns, err := client.Get("a")
+	vulns, err := client.GetByModule("a")
 	if err != nil {
 		t.Fatal(err)
 	}
