How Fish City Builds Real Fish Counts

Updated

Fish City is a California saltwater sportfishing platform — a mobile app and website that surface daily fish counts, boat-by-boat catch reports, and charter-trip availability from the state's sportfishing landings. We're independent and California-based.

Where our data comes from

Most of the catch data we surface originates from California sportfishing landing dock reports — the after-trip reports operators file when boats return to port. We aggregate those reports through a third-party data API that ingests them across most major California landings from Bodega Bay south to San Diego.

We supplement that with direct operator submissions from landings and captains who send fleet, schedule, or report data to us directly, and with NOAA marine and weather data — wind, swell, tides, sea-surface temperature — so each report can be paired with the conditions on the day the fish were caught.

Reference information that doesn't change daily — species seasons, size limits, scientific names, regulation tables — comes from California Department of Fish & Wildlife (CDFW) and the National Marine Fisheries Service (NMFS), with the "as-of" date noted on the species pages that depend on it.

How often it refreshes

Live fish counts and recent boat reports refresh multiple times per day, typically within hours of a landing closing out the day's trips. The homepage badge, charter city pages, and boat-level Recent Reports all read from the same upstream snapshot.

Written content — intel briefs, charter landing pages, species guides — updates on a slower cadence (weekly to monthly), and every page shows a visible "Updated" timestamp at the top so you can see exactly when each piece of editorial content was last touched.

Editorial review

Live data flows automatically — we don't hand-curate every dock report. Written content does pass through editorial review: every intel brief, every charter landing page, and every species guide is reviewed by Fish City founder Kevin Coelho before it ships. Where a city or landing hasn't been personally fished or sourced, those pages stay data-only — counts and links, no prose. We'd rather show a shorter page than fabricate local knowledge.

Known limits

  • Gaps in coverage. A boat that doesn't file a dock report won't appear in our counts for that day, even if it ran a trip. Reporting is operator-driven and not 100% consistent.
  • Trip-type labels. Some upstream reports come through without a trip-type assigned. We render those reports without a trip-type label rather than substituting placeholder text.
  • Hierarchy lag. When a boat moves between landings or an operator rebrands, our hierarchy may take a few days to reflect it. We file 301 redirects from old URLs to current ones as we catch them.

Spot something wrong?

Reach us at [email protected]. Corrections to fish counts, boat info, landing pages, or species data are welcome — include the URL and what you'd change.