If you have 100k apartments, querying MapBox’s Tiles Query API for each one directly from the client would be way too much – you’ll quickly hit rate limits and your app will become unresponsive.
What I would do instead:
Set up a backend with a database (PostgreSQL + PostGIS) to act as a cache.
When your app needs to highlight buildings:
Send the apartment coordinates to your backend.
The backend checks if it already has the building geometry cached for that apartment.
If yes, it returns it immediately.
If not, it calls the MapBox Tiles Query API for that coordinate, stores the building feature in the database, and returns it to the app.
This way, each apartment only triggers one external API call ever, and future requests are served from your cache. You can also preload buildings in advance if you know which areas users will use.
Then in your Flutter app, load these building geometries as a GeoJSON source and style them however you like (e.g. with fill or extrusion layers).
I’ve used a similar approach for projects with large datasets. Directly querying MapBox for 100k points from the app is not scalable, but using a backend cache makes it feasible and performant.