Skip to main content
Last updated on

Location Scores

Stable
US 🇺🇸 and Canada 🇨🇦Available via MCP 🔌

For use cases, coverage and pricing, see the Location Scores product overview.

Description

Our Location Scores assess the quality of transportation, amenities, character, education, nature, and wellness characteristics of locations, broken up into 18 scores on a scale of 0 to 5, which are doubled to display scores out of 10 in our SDK products.

Our Location Scores can be queried for specific locations, listing, and addresses, using latitude and longitude, or for specific Local Logic geographies using unique geog_ids. Location Scores are available for neighborhoods (levels 10, 20), cities (level 30), zip and postal codes (level 32), US county divisions (level 35), US/Canadian counties and county equivalents (level 37), regions (level 38), and metropolitan statistical areas (level 40). The Location Scores at the level of geographies & neighborhoods represent the best estimates for the median household value for each score.

Score Types

Local Logic provides the following Location Scores, which can be accessed via the /v3/scores endpoint documented below.

This PDF describes what the values of 0-10 mean for their respective scores.

info

Not all Location Scores are available in all locations.

When scores are missing from the response, it means that Local Logic has insufficient information about the location to be able to provide those scores.

Transportation

Location ScoreScoreNameDescription
Pedestrian friendlypedestrian_friendlyRepresents how many stores and institutions are nearby and how pleasant it is to walk to them.
Cycling friendlycycling_friendlyRepresents how suitable the area is for cycling in terms of nearby bicycle infrastructure and calm streets, as well as the number of destinations that can be reached by bicycle.
Transit friendlytransit_friendlyRepresents the frequency and level of service of public transit.
Car friendlycar_friendlyRepresents how well traffic flows, and how easy it is to park.

Amenities

Location ScoreScoreNameDescription
GroceriesgroceriesDistance to closest grocery store and quantity of grocery stores nearby.
ShoppingshoppingQuantity and diversity of shops nearby.
CaféscafesQuantity and diversity of cafés nearby.
RestaurantsrestaurantsQuantity and diversity of restaurants nearby.
NightlifenightlifeQuantity and diversity of bars nearby.

Education

Location ScoreScoreNameDescription
High Schoolshigh_schoolsDistance to closest high school.
Primary Schoolsprimary_schoolsDistance to closest elementary school.
DaycaresdaycaresDistance to closest daycare school.

Character

Location ScoreScoreNameDescription
QuietquietLevel of noise nearby.
HistorichistoricPresence of heritage buildings and building age in the area.
Note: Historic coverage is currently available in two American cities and a Canadian city.
VibrantvibrantLevel of street activity nearby.

Nature

Location ScoreScoreNameDescription
ParksparksQuantity and area of parks nearby.
GreenerygreeneryQuantity of nearby green spaces and tree canopy coverage.
Note: Greenery coverage is currently available in 8 American cities and two Canadian cities.

Wellness

Location ScoreScoreNameDescription
WellnesswellnessRepresents the quantity of amenities within walking distance that cater to physical activity and healthy eating.

GET /v3/scores

Location Scores for a specific coordinate point location and neighbourhood, macro neighbourhood, and municipality which contains it, can be retrieved using a latitude/longitude request.

Scores for the latitude/longitude point location are returned as a score out of 5, with a precision to the nearest .5. Scores for the neighbourhood, macro neighbourhood, and municipality geography scores are also returned as a score out of 5, but with a precision to the nearest .1.

GET /v3/scores

This API uses JWT token based authentication. This JWT Bearer token is what is used to populate the Authorization header below.

Instructions on how to retrieve this token can be found at Getting Started.

HeaderStatusDescription
AuthorizationrequiredYour bearer token retrieved from our authorization API, ex. Bearer eyJhbGci...
AcceptrequiredThe datatype to request, this API will return application/json.

QueryString

The endpoint is queried by specifying a lat/lng coordinate for obtaining scores at an exact location.

ParameterStatusDescription
latoptionalA decimal number between -90 and 90, representing the latitude.
lngoptionalA decimal number between -180 and 180, representing the longitude.
geography_idsoptional*A comma separated list of geography ids, ex. g30_dpz89rm7 or g30_dpz89rm7,g10_dpz89rm7. If this parameter is provided, the lat and lng parameters are optional. A maximum of 100 values are allowed.
geography_levelsoptionalA list of geography levels to include, ex. 10,30. If no geography levels are provided, no geography scores will be returned.

Available: Neighbourhood: 10
Macro-Neighbourhood or Borough: 20
Municipality: 30
Zip Code: 32
US County Subdivision: 35
US County / Canadian County Equivalent (Census Division): 37
Region: 38
US Metro Area: 40
includeoptionalA list ScoreNames to return, ex. car_friendly,pedestrian_friendly. If no names are provided, all scores included in your agreement will be returned.
languageoptionalString value representing the two letter ISO 639-1 language code to return the scores in, ex. fr

Available: en and fr
location_scores_roundingoptionalThe type of rounding to apply to the scores returned under data.location. Either .5 (default) to round at the nearest 0.5, or none, to disable rounding.

Usage examples

require('node-fetch')('https://api.locallogic.co/v3/scores?' + new URLSearchParams({
lat: 41.847206,
lng: -87.668825,
geography_ids: 'g30_f25dv0me',
geography_levels: '10,20,30',
include: 'transit_friendly,quiet',
language: 'en',
}), {
method: 'GET',
headers: {
Accept: 'application/json',
Authorization: 'Bearer eyJhbGciOiJ...'
}
})
.then(response => response.json())
.then(body => {
console.log(body)
})
.catch(error => {
console.log(error)
})

Response example

{
"data": {
"type": "scores",
"location": {
"transit_friendly": {
"value": "4.5",
"text": "Within walking distance of a subway and frequent bus lines"
},
"quiet": { "value": "1.0", "text": "Many sources of noise nearby" }
},
"geographies": [
{
"geog_id": "g30_f25dv0me",
"name": "Westmount",
"geog_level_type": "municipality",
"scores": {
"transit_friendly": {
"value": "4.5",
"text": "Within walking distance of a subway and frequent bus lines"
},
"quiet": {
"value": "2.7",
"text": "Multiple sources of noise nearby"
}
}
},
// Plus other geography score objects
]
},
"meta": {
"message": "Successfully called v3/scores API.",
"type": "LocalLogic.API.Success",
"statusCode": 200
}
}

GET /v3/scores/{geog_id}

Location Scores for a specific geography (a neighbourhood, macro neighbourhood, municipality, postal code, county, etc.) can be retrieved with this endpoint. The scores represent the Location Score of the median household inhabiting the area: half of households will have a lower score and half of housesholds will have a higher score.

Scores for the geography are returned as precise as possible and are not rounded.

GET /v3/scores/{geog_id}

Header

This API uses JWT token based authentication. This JWT Bearer token is what is used to populate the Authorization header below.

Instructions on how to retrieve this token can be found at Getting Started.

HeaderStatusDescription
AuthorizationrequiredYour bearer token retrieved from our authorization API, ex. Bearer eyJhbGci...
AcceptrequiredThe datatype to request, this API will return application/json.

QueryString

ParameterStatusDescription
includeoptionalA list ScoreNames to return, ex. car_friendly,pedestrian_friendly. If no names are provided, all scores included in your agreement will be returned.
languageoptionalString value representing the two letter ISO 639-1 language code to return the scores in, ex. fr

Available: en and fr

Usage examples

require('node-fetch')('https://api.locallogic.co/v3/scores/g37_9zh9deu6',
{
method: 'GET',
headers: {
Accept: 'application/json',
Authorization: 'Bearer eyJhbGciOiJ...'
}
})
.then(response => response.json())
.then(body => {
console.log(body)
})
.catch(error => {
console.log(error)
})

Response example

{
"data": {
"type": "scores",
"scores": {
"pedestrian_friendly": {
"value": "3.389361",
"text": "Most day-to-day needs are within walking distance"
},
"vibrant": {
"value": "2.271424",
"text": "Vibrant atmosphere at various times of the day"
},
"nightlife": {
"value": "2.51681",
"text": "Variety of bars within a short drive"
},
"high_schools": {
"value": "2.95529",
"text": "At least one high school within a 20-minute walk"
},
"daycares": {
"value": "2.955288",
"text": "At least one daycare within a short drive"
},
"cycling_friendly": {
"value": "2.525079",
"text": "Somewhat suitable for bicycle commuting and/or recreational cycling"
},
"transit_friendly": {
"value": "2.600652",
"text": "Transit is available for most trips"
},
"parks": {
"value": "3.613697",
"text": "Large amount of park space nearby"
},
"primary_schools": {
"value": "3.75381",
"text": "At least one elementary school within a 15-minute walk"
},
"car_friendly": {
"value": "4.144336",
"text": "Excellent access to freeways and/or major arteries, with a very low chance of parking problems"
},
"cafes": {
"value": "1.23387",
"text": "Some cafés within a short drive"
},
"wellness": {
"value": "2.769637",
"text": "Some amenities promoting health and activity within walking distance"
},
"restaurants": {
"value": "2.332912",
"text": "Variety of restaurants within a short drive"
},
"quiet": {
"value": "2.245218",
"text": "Some sources of noise nearby"
},
"groceries": {
"value": "2.226187",
"text": "Variety of groceries within a short drive"
},
"shopping": {
"value": "2.359544",
"text": "Variety of shops within a short drive"
}
}
},
"meta": {
"message": "Successfully called v3/scores/{geog_id} API.",
"type": "LocalLogic.API.Success",
"statusCode": 200
}
}
How this is calculated

What they measure — and what they don't. Location Scores rate the area around a specific point — how close and frequent transit is, the quantity and variety of nearby groceries, and so on. In principle, nearer and more frequent amenities count for more. They don't measure property-specific attributes (price, size, condition), and a school score reflects access to schools rather than school quality, which is a separate ratings layer.

Coverage. Address-level and geography-level across the US and Canada. A small number of scores have narrower coverage and are actively expanding.

Updated. Monthly; POI-based scores are updated as we update points of interest, in addition to periodic updates based on infrastructure data (street networks, transit lines, etc).

Where our data comes from

Frequently asked questions

What are Local Logic Location Scores?

Location Scores are 18 human-readable ratings that describe what it's like to live at a specific location — from how walkable and transit-friendly it is, to nearby groceries, cafés and schools, to how quiet, historic, or vibrant the area feels. Each is presented on a 0–10 scale and comes with a plain-language description, so scores can be shown directly to end users without further interpretation.

How are the 18 Location Scores organized?

The 18 scores are grouped into six categories:

  • Transportation - pedestrian friendly, cycling friendly, transit friendly, car friendly
  • Amenities - groceries, shopping, cafés, restaurants, nightlife
  • Education - high schools, primary schools, daycares
  • Character - quiet, historic, vibrant
  • Nature - parks, greenery
  • Wellness - wellness

How are Location Scores calculated?

Each score is computed at the address level from the features around that location. In principle, nearer and more frequent amenities count for more — a grocery store around the corner contributes more to the Groceries score than one across town.

Why are scores 0–5 in the API but shown out of 10?

The API returns each Location Score on a 0–5 scale. Local Logic's SDK and Neighborhood Reports double this to a 0–10 scale for display, because a 0–10 range is easier for end users to read and rank at a glance. Both represent the same underlying score — 0–5 is the raw API value, 0–10 is the presentation.

At which geography levels are scores available?

Location Scores can be retrieved for an exact latitude/longitude point or for a Local Logic geography by ID. Supported geography levels are neighborhood (10), macro-neighborhood/borough (20), municipality (30), zip or postal code (32), US county subdivision (35), US/Canadian county or equivalent (37), region (38), and US metro area (40). At the geography level, a score represents the experience of the median household in that area.

What happens when there's no score for a location?

When Local Logic has insufficient information for a location, the missing scores are simply omitted from the response, and a request for a location with no data returns a 204 No Content (recognized location, nothing to score) or 404 Not Found. A 204/404 therefore means "no data here," not an error in your request.

How do school scores work?

Local Logic's school-related Location Scores — primary schools, high schools, and daycares — are based on access and proximity: how close the nearest school of that type is. School quality ratings (letter grades) are a separate layer, available via Schools API — currently in the United States, and in Ontario and British Columbia in Canada.

Are score descriptions available in French?

A Location Score itself is a number, so it isn't language-specific. The language parameter sets the language of the plain-language description text that accompanies each score, available in English (en) and French (fr).

SDK Implementations

Scores is used by multiple SDKs:

SDKDescription
Local Content SDKRetrieves the scores for a given location for use in the grouped POI categories within the SDK.
NeighborhoodHighlights SDKRetrieves the scores for the neighborhood in order to calculate the highlights (top scores) of the neighborhood.
NeighborhoodCharacteristics SDKRetrieves all of the relevant scores available for the given neighborhood.

Response codes

When calling Local Logic’s API, you may receive an HTTP response code indicating an error or no data. These errors are explained below.

In general, error codes starting with “4” are due to an invalid API call and can be fixed on your end, whereas error codes starting with “5” are due to server errors (that is, problems on our end). If you receive something not described here, please contact us at support@locallogic.co.

204 - No Content

This "error code" is not an error, and it happens when we don't have the requested data for a specific location. For example, if you send a lat/lng pair to fetch scores in uninhabited parts of northern Canada, we may return an empty 204 response as we recognize the location, but don't calculate scores that remotely so there is nothing to be returned.

400 - BadRequest

This error code happens when the request inputs are incorrect. Use the detail field of the response for clarification. Example:

{
"code": "LocalLogic.API.BadRequest",
"detail": "ValidationErrors: AroundEndpoint is invalid:\n\tinclude is invalid: \"bad_input\" is not an acceptable value: \"groceries\", \"restaurants\", \"nightlife\", \"cafes\", \"shopping\", \"daycares\", \"primary_schools\", \"high_schools\""
}

401 - Unauthorized

This error code happens when your API key cannot access specific resources or locations. For example, some API keys can only access certain countries / states / provinces. Feel free to contact us for more information.

{
"code": "LocalLogic.API.Unauthorized",
"detail": "Your API KEY doesn't support this region"
}

403 - Forbidden

This error code happens when you forgot to include security credentials with your request or you are requesting a parameter that you do not have access to.

{
"message": "Forbidden"
}

404 - NotFound

This error code happens when we don’t have data for the requested location. For example, if you send a lat/lng pair for a location in Antarctica, we will return this error as we don’t have data for Antarctica (yet!).

{
"code": "LocalLogic.API.NotFound",
"detail": "No Location Scores found for this location."
}

422 - Unprocessable Entity

This error code is returned when the correct parameters have been sent however, the data they contain is not valid. For example, if you send a lat/lng pair and the latitude is invalid (ie. not in the range [-90, 90]) and/or the longitude is invalid (ie. not in the range [-180, 180]). The message returned will explain the specific issue with your parameters that makes them invalid.

{
"message": "Latitude must be within [-90, 90], Longitude must be within [-180, 180], Requires at least lat/lng pair, or geography_ids. None supplied.",
"code": "LocalLogic.API.BadRequest",
"statusCode": 422
}

429 - Too Many Requests

This error code can be returned when you need to throttle your requests. Internally, we set limits that exceed all contractual limitations that could cause this error code to be returned. If you have questions or see this error, please contact us at support@locallogic.co.

500 - ServerError

This error code means that an error occurred on our end. Feel free to retry the same request to see if the problem persists. If you received a lot of these errors, please contact us at support@locallogic.co.

{
"message": "Unexpected internal server error.",
"type": "LocalLogic.API.ServerError",
"statusCode": 500
}

502 - BadGateway

This error code means that an error came from our cloud provider. Feel free to retry the same request to see if the problem persists.

{
"message": "Internal server error"
}