diff --git a/devtools/docker/compose.yaml b/devtools/docker/compose.yaml
index 70ea027..c41397d 100644
--- a/devtools/docker/compose.yaml
+++ b/devtools/docker/compose.yaml
@@ -42,6 +42,19 @@
     volumes:
       - ../../:/pkgsite
     working_dir: /pkgsite
+  searchtest:
+    image: golang:1.16.7
+    depends_on:
+      - frontend
+    environment:
+      <<: *database-variables
+      <<: *go-variables
+      WAITFORIT_TIMEOUT: 300
+    entrypoint: ./third_party/wait-for-it/wait-for-it.sh frontend:8080 -- go run
+    command: "tests/search/main.go -frontend http://frontend:8080"
+    volumes:
+      - ../../:/pkgsite
+    working_dir: /pkgsite
   api:
     image: golang:1.16.7
     depends_on:
diff --git a/tests/search/main.go b/tests/search/main.go
index f579afe..8d8a450 100755
--- a/tests/search/main.go
+++ b/tests/search/main.go
@@ -22,10 +22,14 @@
 	"golang.org/x/pkgsite/internal/database"
 	"golang.org/x/pkgsite/internal/derrors"
 	"golang.org/x/pkgsite/internal/experiment"
+	"golang.org/x/pkgsite/internal/frontend"
 	"golang.org/x/pkgsite/internal/log"
 	"golang.org/x/pkgsite/internal/postgres"
 )
 
+var frontendHost = flag.String("frontend", "http://localhost:8080",
+	"Use the frontend host referred to by this URL for comparing data")
+
 func main() {
 	flag.Parse()
 
@@ -36,15 +40,10 @@
 	}
 	log.SetLevel(cfg.LogLevel)
 
-	// Wrap the postgres driver with our own wrapper, which adds OpenCensus instrumentation.
-	ddb, err := database.Open("pgx", cfg.DBConnInfo(), "seeddb")
-	if err != nil {
-		log.Fatalf(ctx, "database.Open for host %s failed with %v", cfg.DBHost, err)
+	if err := runImportedByUpdates(ctx, cfg.DBConnInfo(), cfg.DBHost); err != nil {
+		log.Fatal(ctx, err)
 	}
-	db := postgres.New(ddb)
-	defer db.Close()
-
-	if err := run(ctx, db); err != nil {
+	if err := run(*frontendHost); err != nil {
 		log.Fatal(ctx, err)
 	}
 }
@@ -59,21 +58,30 @@
 	internal.ExperimentSymbolSearch,
 }
 
-func run(ctx context.Context, db *postgres.DB) error {
+func runImportedByUpdates(ctx context.Context, dbConnInfo, dbHost string) error {
+	ddb, err := database.Open("pgx", dbConnInfo, "seeddb")
+	if err != nil {
+		log.Fatalf(ctx, "database.Open for host %s failed with %v", dbHost, err)
+	}
+	db := postgres.New(ddb)
+	defer db.Close()
 	counts, err := readImportedByCounts(importedbyFile)
 	if err != nil {
 		return err
 	}
-	if _, err := db.UpdateSearchDocumentsImportedByCountWithCounts(ctx, counts); err != nil {
-		return err
-	}
+	_, err = db.UpdateSearchDocumentsImportedByCountWithCounts(ctx, counts)
+	return err
+}
+
+func run(frontendHost string) error {
 	tests, err := readSearchTests(testFile)
 	if err != nil {
 		return err
 	}
+	client := frontend.NewClient(frontendHost)
 	var failed bool
 	for _, st := range tests {
-		output, err := runTest(ctx, db, st)
+		output, err := runTest(client, st)
 		if err != nil {
 			return err
 		}
@@ -93,16 +101,17 @@
 	return nil
 }
 
-func runTest(ctx context.Context, db *postgres.DB, st *searchTest) (output []string, err error) {
+func runTest(client *frontend.Client, st *searchTest) (output []string, err error) {
 	defer derrors.Wrap(&err, "runTest(ctx, db, st.title: %q)", st.title)
-	results, err := db.Search(ctx, st.query, postgres.SearchOptions{MaxResults: 10, SearchSymbols: true})
+	searchPage, err := client.Search(st.query, "symbol")
 	if err != nil {
 		return nil, err
 	}
+	gotResults := searchPage.Results
 	for i, want := range st.results {
-		got := &postgres.SearchResult{}
-		if len(results) > i {
-			got = results[i]
+		got := &frontend.SearchResult{}
+		if len(gotResults) > i {
+			got = gotResults[i]
 		}
 		if want.symbol != got.SymbolName || want.pkg != got.PackagePath {
 			output = append(output,
diff --git a/tests/search/run.sh b/tests/search/run.sh
index 2549d72..6cc661d 100755
--- a/tests/search/run.sh
+++ b/tests/search/run.sh
@@ -16,7 +16,7 @@
   export GO_DISCOVERY_DATABASE_NAME=discovery_symbol_test
   export GO_DISCOVERY_CONFIG_DYNAMIC=tests/search/config.yaml
   export GO_DISCOVERY_SEED_DB_FILE=tests/search/seed.txt
-  dockercompose build && dockercompose run seeddb && ./devtools/go.sh run tests/search/main.go
+  dockercompose build && dockercompose run seeddb && dockercompose run searchtest
 
   local status=$?
   if [ $status -eq 0 ]
