Built for real estate and location pages
The embed widget is designed for places where users already evaluate location: property listings, neighborhood guides, market pages, investor dashboards, lead-capture pages, and internal research tools.
Instead of sending users to a separate public crime map, teams can keep the safety context inside their own website or application flow.
- Property pages centered on a listing coordinate
- Neighborhood pages centered on a city, ZIP, or market
- Portfolio dashboards that need a visual safety layer
- Lead forms where location context helps qualify interest
Configurable by URL
Publishable keys are domain-restricted, and the map can be configured with latitude, longitude, zoom, layer, geography, and theme parameters.
That keeps setup simple for teams that want a hosted map surface without owning PMTiles generation, MapLibre styling, score popups, or browser-key validation.
- Light or dark map theme
- Overall, violent crime, property crime, disorder, or frequency layer
- Block-group or ZIP/ZCTA presentation where available
- Starter watermarked embeds and Pro unwatermarked embeds
A visual layer for the score API
The embedded map uses the same national scoring layers as the API. Users can pan, zoom, and click into map features while your backend can use the score endpoint for workflow logic.
For example, a listing page can show the hosted map beside the property details while your backend stores the structured Safety Score, grade, component scores, and geography returned by the API.
Developer-friendly setup
Create a publishable key, add allowed domains, and place the iframe where you want the map to appear. Paid tiers can reduce or remove watermark prominence depending on plan.
Secret keys should stay server-side for REST API calls. Publishable keys are the browser-safe key type intended for map embeds.
<iframe
src="https://crimescore.io/embed?key=cs_pub_...&lat=40.7128&lng=-74.0060&zoom=12&layer=overall&theme=light"
width="100%"
height="520"
style="border:0;border-radius:12px;"
loading="lazy"
></iframe>