It highly depends on your budget. If you have enough budget, you can find some good companies even by searching in Google. I suggest you to search in Google for "search engine optimization" or seo and then its clear that the companies which can rank their own website in top results of Google for such a competitive keyword "search engine optimization", can rank your website too for your desired keywords. But these companies usually ask for a high budget i.e more than $1,000 per month. After choosing your company, search to read reviews about that special company and then you can decide. But be careful because there are many websites and persons do this but all of them are not good. As i said, choose company according to their own ranking in Google results.