Although your domain name should include your main keywords, it should not use dashes. At least that's what I read everywhere.
Also, in term of the example you give here, you probably shouldn't use the word "buy". Most people have used things like
magicalfruitreviews.com, which is less like "Hey, I'm going to sell you magical fruits no matter what."
But I think that in your case the best would be
magicalfruits.com (and stick to a .com). Of course, the simplest domain name is not unlikely already taken. Another way I've seen people handle that problem is to add your name. So something like
Now, will Google know? I think they don't really care that much, but it is not unlikely that they search the domain name for words that look like keywords in your website. So if you often talk about Magic(al) and Fruit(s), then these words will be search in your domain and if present, they probably get a slightly better rank value. From what I've read, there is an effect from the domain name, but I think it is small.
At the same time, there are websites such as
moz.com that have a name that has nothing to do with their keywords (maybe because it's an abbreviation) and they still have high page ranking. The main reason for high page ranking is good content, that is, content that's useful to your reader, opposed to a bare site which tells you buy this, buy that... Of course, some websites are just about selling (pure e-Commerce) and for such, you really don't need to worry too much about your domain name. It won't matter because SEO is not going to be what you're going to use to make sales. Instead you'll use advertising (Facebook, AdWord, Instagram, and build a mailing list...).
So my main take aways:
- Use a generic name
- Don't include any dashes
- Make sure to stick to a .com
- Write useful content (which is where real SEO is found.)