I've gotten pretty good at data scraping websites over the years and no matter how the data is arranged on the page, I've been able to reliable retrieve the data.
You might be able to prevent it if you had ids and class names that randomly changed on a daily basis or really malformed html, but I wouldn't bother.
Another option is to limit concurrent connections to your server based on IP (Some of the financial websites do this). This would make it so it took much longer to get your data. But again, if someone really wants to get your data, they will.
I don't worry about it. Just make you website/app is better than your competition. Even if someone copies all of your data, they won't have the web presence. It will just be a cheap imitation.