They can provide good services, but also sketchy services.
A good SEO company might be nothing more than a good web dev company in general. They check your links and alt tags and header tags and page speed and a couple dozen other things with a focus on use of keywords.
They help setup and configure Google Analytics and Console. Run the site through a few scanners and crawlers to pick out bugs, make sure it’s mobile responsive, the list goes on.
Avoid companies that promise 1st page Google results. Nobody knows where a site will rank, especially if it’s non-authoritative or not a popular site. And moreso if it uses keywords with any level of competition.
I would also avoid companies that promise backlinks. How can anyone promise this? I run a handful of websites and nobody ever contacts me asking to place links on my site. That’s not how organic linking works. If they promise a thousand backlinks, it’s because they are sending your link into some sketchy backlink network where it will go in various forums and chat boxes and “directories” across the web. Totally useless links that Google all but ignores.
You want organic backlinks from websites that are more traffic’d than yours. Quality blogs and sites. Not link spam. And those aren’t easy to get.
An “SEO Expert” in 2017 is little more than a quality web developer, since good SEO practices are well established and commonly implemented by professionals when creating sites. In other words, good SEO is the same thing as good web design and development with a little extra emphasis on keyword use.