By default, Supabase projects will return a maximum of 1,000 rows. This setting can be changed in Project API Settings. It's recommended that you keep it low to limit the payload size of accidental or malicious requests. You can use range() queries to paginate through your data.
If using the Supabase hosted platform apikey is technically a reserved keyword, since the API gateway will pluck it out for authentication. It should be avoided as a column name.
const \{ data, error, count \} = await supabase
.from('cities')
.select('name', \{ count: 'exact' \}) // if you don't want to return any rows, you can use \{ count: 'exact', head: true \}