Skip to main content

Geographies

Stable
English and FrenchUS 🇺🇸 and Canada 🇨🇦

Use this endpoint to retrieve the names and IDs of geographies (e.g. neighbourhoods, cities) associated with a specific location (lat/lng). The geography IDs (e.g. g10_f25dyhcn) in the returned dictionary can be used to query the Local Profiles, and Scores APIs by geog_id.

GET v3/geographies

GET v3/geographies

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
latrequiredA decimal number between -90 and 90 (Latitude)
lngrequiredA decimal number between -180 and 180 (Longitude)
includeoptionalThe only supported value is "geometry". If set, the response will contain the geometry of each of the geographies. Geometries are returned as a list of lists of tuples of lat/lng. This feature only works for Canadian geographies.

Usage examples

require('node-fetch')('https://api.locallogic.co/v3/geographies?' + new URLSearchParams({
lat: 41.847206,
lng: -87.668825,
}), {
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": "geographies",
"geographies": {
"g10_f25dyhcn": {
"name": {
"fr": "Le Faubourg Saint-Laurent",
"en": "Le Faubourg Saint-Laurent"
},
"level_type": {
"fr": "quartier",
"en": "neighbourhood"
},
"level": 10
},
"g20_f25dyhf3": {
"name": {
"en": "Ville-Marie",
"fr": "Ville-Marie"
},
"level_type": {
"en": "borough",
"fr": "arrondissement"
},
"level": 20
},
"g30_f25dfkes": {
"name": {
"en": "Montréal",
"fr": "Montréal"
},
"level_type": {
"en": "city",
"fr": "ville"
},
"level": 30
}
}
},
"meta": {
"order": [
"g10_f25dyhcn",
"g20_f25dyhf3",
"g30_f25dfkes"
]
}
}

GET v3/geographies/{geog_id}

GET v3/geographies/{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
includeoptionalThe only supported value is "geometry". If set, the response will contain the geometry of each of the geographies. Geometries are returned as a list of lists of tuples of lat/lng. This feature only works for Canadian geographies.

Usage examples

require('node-fetch')('https://api.locallogic.co/v3/geographies/g10_c3r13ej7'), {
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": "geographies",
"geographies": {
"g35_dnuqnr1n": {
"name": {
"fr": "Whiteoak",
"en": "Whiteoak"
},
"level_type": {
"fr": "canton",
"en": "township"
},
"level": 35
}
}
},
"meta": {
"order": [
"g35_dnuqnr1n"
]
}
}

Error codes

When calling Local Logic’s API, you may receive an HTTP error code. 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.

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. Example:

{
"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. Example:

{
"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!). Example:

{
"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]).

{
"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
}

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 Example:

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

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. Example:

{
"message": "Internal server error"
}