You could try to "encrypt" data and use Mapbox expressions/frontend transform to decrypt.
Point coordinates will be randomly shifted, you will send in a separate request as Wasm/J module to reposition features on the map. Wasm module could call to Mapbox expression to reposition points.
This would make it very hard to scrape. If someone scrape vector data without reverse engendering decryption module, then will get incorrect data. You just make sure that wasm module obfuscated.
Not sure if mapbox expression can perform change of coordinates. But there might be different ways to transform vector data on frontend.
Only risk that if someone reverse engineer yours wasm/JS module, they will still get the data from that point of time. The above approach is good if data changes over time. I think this should stop most people.
This would make it very hard to scrape. If someone scrape vector data without reverse engendering decryption module, then will get incorrect data. You just make sure that wasm module obfuscated.
Not sure if mapbox expression can perform change of coordinates. But there might be different ways to transform vector data on frontend.
https://docs.mapbox.com/mapbox-gl-js/style-spec/expressions/