Local SEO pricing breaks down into two components: initial setup and ongoing monthly management. For a single-location business in a moderately competitive market like Ottawa or smaller Canadian cities, expect $1,500–$3,000 for setup (Google Business Profile optimization, citation building, on-page local elements) and $800–$1,500 monthly for maintenance. Toronto or Vancouver with higher competition can push monthly retainers to $2,000–$2,500. What drives the cost variance is work volume. A dentist competing against 50 others in their postal code needs more citation cleanup, review acquisition, and content than a niche B2B service with three competitors. Multi-location businesses multiply the effort—each location needs its own GBP, landing page, and citation management, so a 5-location chain might pay $3,500–$6,000 monthly. Cheaper options exist but usually underdeliver. $300–$500 monthly packages often just submit your business to low-quality directories that don't move rankings. At Ottawa SEO, we've seen clients waste six months on these before switching to proper local work. The baseline for effective local SEO includes GBP optimization and monitoring, 15–30 citation builds or fixes, monthly review management, localized content updates, and local link acquisition. That realistically requires 8–15 hours monthly, which at agency rates lands in the $800–$1,500 range. One-time projects are possible for businesses that want to handle ongoing work internally. A solid local audit, GBP setup, citation foundation, and on-page optimization runs $2,000–$4,000 as a package. You then manage reviews and content yourself. Hourly rates for local SEO specialists range from $100–$200 CAD. Some agencies price per citation ($50–$150 each), per location ($400–$800 monthly), or offer performance incentives tied to ranking improvements in the local pack. The key is understanding what's included—many cheap packages exclude the review acquisition and content work that actually drive conversions, focusing only on directory spam that barely registers with Google's local algorithm.