Skip to main content

Local Content

English and FrenchUS πŸ‡ΊπŸ‡Έ and Canada πŸ‡¨πŸ‡¦

Provide a comprehensive understanding of the location of any property in the US and Canada and an overview of the characteristics that matter most to the home buyer and renter.


Our SDK products are served from a single source.

The SDKs are designed to work with React and other declarative frameworks.

First, install the entry script with npm, yarn, or pnpm:

npm i --save @local-logic/sdks-js
yarn add @local-logic/sdks-js
pnpm add @local-logic/sdks-js


import { useRef, useEffect } from "react";
import LLSDKsJS from "@local-logic/sdks-js";

const globalOptions = {
locale: "en", // If available, change to either english or french
appearance: {
theme: "day",
// Add any other appearance changes here
variables: {
"--ll-color-primary": "#fd3958",
"--ll-color-primary-variant1": "#d5405b",
"--ll-border-radius-small": "8px",
"--ll-border-radius-medium": "16px",
"--ll-font-family": "Avenir, sans-serif"

const localLogicClient = LLSDKsJS("your-api-key-here", globalOptions);

function LocalContentSDKComponent() {
const containerRef = useRef(null);

useEffect(() => {
if (!containerRef.current) {

const sdkOptions = {
// Set the lat and lng of the location
lat: 45.5282164,
lng: -73.5978527,

// ...Other sdk specific options

const sdkInstance = localLogicClient.create(

// It is important to destroy the SDK instance when the component is unmounted.
return () => {
}, []);

return (
// Height is dependent on the SDK you are implementing
height: "700px",
width: "100%",

export default LocalContentSDKComponent;


API Key​

Your API Key will be provided to you by the LocalLogic team.


If you are migrating from an old Local Logic SDK product, the API keys from the legacy versions do not work with our existing products.

Please reach out to Local Logic support to get your new key.

Global options​

const localLogicClient = localLogicSDK(apiKey, globalOptions)

These options are available accross SDKs. You will also be able to specify SDK specific options depending on the SDK you are implementing. These options will be available in the SDK specific documentation

apiKeytruestringApiKey required for making requests to the Local Logic API.
globalOptions.appearancefalseAppearanceThe appearance option provides theme and variable support customizing the look and feel of your widgets.
globalOptions.localefalse"en" or "fr""en"The locale option specifies the language of the scores and the UI interface.


Local Logic SDKs support visual customization using the Appearance API, which allows you to match the look of the SDK to your brand.

type Appearance = {
theme?: "day" | "night"; // Defaults to "day"
variables?: {
[key: string]: string;

Commonly used variables​

--ll-color-primaryThe primary brand color.
--ll-color-primary-variant1A slightly darker version of the primary brand colour. This variable should always be changed in conjunction with --ll-color-primary.
--ll-font-familyChanges the font family used throughout the SDKs. Currently, the SDKs only support system fonts. This value should always include a fallback font family, ex. Inter, sans-serif.
--ll-font-size-baseUsed to scale the font size up or down.
--ll-spacing-base-unitUsed to scale the overall padding of the SDKs.


Once you initialize your SDK client with your API key and global options, several functions are available.


const sdkInstance = localLogicClient.create("local-content", container, sdkOptions)

This function creates a new SDK widget based on the name specified.

sdkOptions are specific to each SDK being created.

sdkTypetruestringThe SDK you would like to create. "local-content" in this case.
containertrueHTMLElementThe element to render in to.
sdkOptionstrueSDKOptionsOptions required for te specified sdkType. Options are detailed below.


sdkOptions.lattruenumberInitial viewport latitude.
sdkOptions.lngtruenumberInitial viewport longitude.
sdkOptions.markertrueMarkerWill render a pin marker on the map representing the lat/lng. The marker can be used to symbolize a location being analyzed.
sdkOptions.zoomfalsenumber16Initial viewport zoom.
sdkOptions.pitchfalsenumber0Initial viewport pitch.
sdkOptions.bearingfalsenumber0Initial viewport bearing.
sdkOptions.cooperativeGesturesfalsebooleantrueIf true, scroll zoom will require pressing the ctrl or ⌘ key while scrolling to zoom map, and touch pan will require using two fingers while panning to move the map.
sdkOptions.distanceUnitfalseDistanceUnitmetricPrimarily used for the commute calculator. Will display the distance in mi/yd under the imperial system or km/m under the metric system.
sdkOptions.mapProviderfalseMapProvider{ name: "maptiler" }Desired map provider data; key is only required if name is set to "google".
sdkOptions.hideScoresfalsebooleanfalseSpecifies whether or not scores should be hidden. NOTE: If set to true, scores without POIs won't be displayed.
sdkOptions.collapseScoresfalsebooleanfalseSpecifies whether or not the first score inside a category should be auto-expanded on load. If set to false, all score accordions will be collapsed by default.



This function is used to update the widget with new values. This can be useful when, for example, you want to change the widget location.

The sdkOptions object follows the same structure as on creation.


sdkInstance.on(event, callback)

This function takes a callback which is triggered when an event occurs. Currently, there is only one event.

eventtrue"change"The name of the event.
callbacktrueCallbackFunctionThe callback to be triggered when the specified event occurs.
type CallbackFunction = ({ type: string, data: unknown }) => void;



This function is used to teardown the created SDK widget.


The SDK currently supports 2 maps: MapTiler and Google Maps.

MapTiler is used by default and the map api key belongs to Local Logic.

Type definitions​

Marker type​

// Typically the same as lat / lng provided in the main options
type Marker = {
lat: number;
lng: number;

DistanceUnit type​

type DistanceUnit = "metric" | "imperial";

MapProvider type​

type MapProvider = {
name: "maptiler" | "google",
key?: string; // Required when "google"