The website itself
A website built for a contractor's business, with a gallery of the work and a way to get in touch, runs $2,500 to $6,000 from a shop that builds them one at a time. That's a one time cost, and it's for the site before a single town page exists.
What that buys is the site: a home page, the services, a contact form. The pages for the towns you work in are priced separately, below, and they're the part that gets you on Google outside your own town.
A page for every service in every town
A page for one service in one town, written and set up on the site, runs $300 to $1,200 a page. The count is what drives the cost. Eight services across twenty five towns is 200 pages, and 200 pages at the low end of that range is $60,000.
Bought one at a time, the town pages cost more than the site they sit on. They're also the pages that put you on the list in the next town over, so a quote that leaves them out is a quote for your home town.
Every month after
A site has running costs whether or not it's working. Local SEO, the monthly work of getting the pages shown in each town and keeping them there, runs $500 to $1,500 a month. Hosting, updates and backups run $100 to $300 a month. An app that catches leads and gets them to your phone runs $49 to $349 a month.
Added up, that's $650 to $2,150 a month before any new town page, on top of the $2,500 to $6,000 to build. Over a year, the running costs alone are more than the build.
How to compare two quotes
Ask three things of any quote. What's the one time cost, and does it include a page for each service in each town, or one page with the towns listed on it. What's the monthly cost, and does it include hosting, local SEO and the leads. And what happens to the price when you add a town.
Put the numbers from both quotes on the same three lines, one time, monthly and per town, and compare the lines. Either way you buy it, a new site starts from zero on Google and builds over the first few months. Give it that time.