Skip to main content

Geocode API

Transform ambiguous physical addresses, landmarks, and street descriptions into pinpoint spatial coordinates to power accurate mapping, routing, and dispatching.


Overview & Solution​

Addresses across rapidly growing urban centers and rural territories are often unstructured, inconsistent, or lack standardized numbering. The Geocode API provides intelligent natural language parsing, address normalization, and spatial indexing to convert raw text into exact latitude and longitude coordinates.

Key Value Propositions​

  • Sub-Second Geocoding: Optimized for high-throughput enterprise pipelines during customer onboarding and checkout flows.

Industry Use Cases​

1. E-Commerce & Last-Mile Delivery​

  • Instant Address Verification: Validate delivery addresses at the time of checkout to prevent costly returns and failed delivery attempts (RTO).
  • Driver Dispatch Preparation: Ensure delivery drivers receive accurate coordinates directly navigating them to the customer doorstep.

2. Banking, Insurance & FinTech​

  • KYC & Customer Verification: Pinpoint customer residence and commercial premises to fulfill regulatory Know-Your-Customer (KYC) location checks.
  • Property Risk & Underwriting: Identify exact geographic positions of collateral or insured properties to evaluate flood and catastrophe risks.

3. Telecom & Utility Services​

  • Service Feasibility Checks: Determine whether a prospective broadband, fiber, or utility subscriber is within coverage reach of existing line infrastructure.

How Sovereign Solutions Solves Address Ambiguity​

graph LR
A[Unstructured Address Input] --> B[Sovereign NLP Normalizer]
B --> C[Regional Landmark & Pincode Graph]
C --> D[Precision Coordinate & Administrative Hierarchy]
  1. Input Parsing: Deconstructs raw address strings into building, street, sub-locality, locality, city, state, and postal code.
  2. Graph Matching: Evaluates candidates against Sovereign Solutions' comprehensive geographic database of millions of verified POIs and road networks.
  3. Structured Output: Delivers precise coordinates alongside complete administrative metadata for downstream workflows.


API reference​

note

Typeahead suggestion (Geocode Suggest) is part of the same service, so it is documented here.

Geocode API​

Master list reference: #1

Location and Address Intelligence APIs · API key only

Converts an address, landmark or place name into latitude/longitude. The optional bounds object restricts results to a map viewport.

Endpoints​

MethodPathPurpose
POST/geocode/searchGeolocation Place Search
POST/geocode/searchGeocode API - in bounds
POST/geocode/searchGeocode API - by coordinates

All requests need only your API key, as the api-key query parameter - no bearer token:

?api-key=<apiKey>
POST /geocode/search

Base URL: https://api-gw.sovereignsolutions.com/gateway

Request Parameters

ParameterInTypeRequiredDescriptionExample
searchKeybodystringNoSearch text - an address, landmark or place name. A "lat, lon" string instead returns the administrative area at that point.
skipbodyintegerNoNumber of results to skip.
takebodyintegerNoMaximum number of results to return.

Request body

{
"searchKey": "coffee",
"skip": 0,
"take": 10
}

Response Schema

200 OK

{
"docs": [
{
"name": "Fitness Cafe",
"location_llt": "12.9418354,77.625556",
"subcategorye": "Fitness Clubs & Centers",
"categorye": "Sports Center",
"province": "KARNATAKA",
"_version_": 1852549247623233500,
"district": "Bangalore",
"groupe": "Sport",
"id": "df6490db-0bc1-40fa-a2a4-51c919d836d8",
"groupCode": 9,
"categoryCode": 7320,
"subCategoryCode": 7320002,
"longitude": 77.625556,
"latitude": 12.9418354,
"resultType": 2
},
{
"name": "Fitness Cafe",
"location_llt": "12.9925717,77.6834013",
"subcategorye": "Fitness Clubs & Centers",
"categorye": "Sports Center",
"province": "KARNATAKA",
"_version_": 1852549245644570600,
"district": "Bangalore",
"groupe": "Sport",
"id": "e51e5c14-f87a-415c-83ae-d92cdc32092e",
"groupCode": 9,
"categoryCode": 7320,
"subCategoryCode": 7320002,
"longitude": 77.6834013,
"latitude": 12.9925717,
"resultType": 2
}
]
}
FieldTypeDescription
docsarrayMatches, best first.
docs[]object
docs[].namestringPlace name.
docs[].location_lltstring"lat,lon" string - the same position as latitude / longitude.
docs[].subcategoryestringSub-category name.
docs[].categoryestringCategory name.
docs[].provincestringState.
docs[]._version_integerInternal index version. Ignore it.
docs[].districtstringDistrict.
docs[].groupestringGroup name.
docs[].idstringResult ID.
docs[].groupCodeintegerNumeric group code.
docs[].categoryCodeintegerNumeric category code.
docs[].subCategoryCodeintegerNumeric sub-category code.
docs[].longitudenumberLongitude of the point, decimal degrees.
docs[].latitudenumberLatitude of the point, decimal degrees.
docs[].resultTypeintegerKind of match. 2 = place / POI match; 3 = coordinate lookup (see the coordinate example).
Geocode API - in bounds​
POST /geocode/search

Base URL: https://api-gw.sovereignsolutions.com/gateway

Request Parameters

ParameterInTypeRequiredDescriptionExample
searchKeybodystringNoSearch text - an address, landmark or place name. A "lat, lon" string instead returns the administrative area at that point.
boundsbodyobjectNoRectangle to search in.
bounds.lxbodynumberNoWest edge, longitude.
bounds.lybodynumberNoSouth edge, latitude.
bounds.rxbodynumberNoEast edge, longitude.
bounds.rybodynumberNoNorth edge, latitude.

Request body

{
"searchKey": "Mumbai",
"bounds": {
"lx": 72.7,
"ly": 18.8,
"rx": 73.1,
"ry": 19.3
}
}

Response Schema

200 OK

{
"docs": [
{
"name": "Mumbai Central",
"location_llt": "18.9696305,72.8193674",
"subcategorye": "Unspecified",
"categorye": "Railway Station",
"province": "MAHARASHTRA",
"_version_": 1852552040196079600,
"district": "Mumbai",
"groupe": "Transport",
"id": "862104a3-1b8c-41fd-b5b1-deae4ed5de08",
"groupCode": 11,
"categoryCode": 7380,
"subCategoryCode": 7380001,
"longitude": 72.8193674,
"latitude": 18.9696305,
"resultType": 2
},
{
"name": "Mumbai Central",
"location_llt": "18.9696305,72.8193674",
"subcategorye": "Unspecified",
"categorye": "Railway Station",
"province": "MAHARASHTRA",
"_version_": 1852552036590026800,
"district": "Mumbai",
"groupe": "Transport",
"id": "bf557f5f-4280-4158-a765-c7d0721ecb21",
"groupCode": 11,
"categoryCode": 7380,
"subCategoryCode": 7380001,
"longitude": 72.8193674,
"latitude": 18.9696305,
"resultType": 2
}
]
}
FieldTypeDescription
docsarrayMatches, best first.
docs[]object
docs[].namestringPlace name.
docs[].location_lltstring"lat,lon" string - the same position as latitude / longitude.
docs[].subcategoryestringSub-category name.
docs[].categoryestringCategory name.
docs[].provincestringState.
docs[]._version_integerInternal index version. Ignore it.
docs[].districtstringDistrict.
docs[].groupestringGroup name.
docs[].idstringResult ID.
docs[].groupCodeintegerNumeric group code.
docs[].categoryCodeintegerNumeric category code.
docs[].subCategoryCodeintegerNumeric sub-category code.
docs[].longitudenumberLongitude of the point, decimal degrees.
docs[].latitudenumberLatitude of the point, decimal degrees.
docs[].resultTypeintegerKind of match. 2 = place / POI match; 3 = coordinate lookup (see the coordinate example).

bounds restricts results to a rectangle: lx/ly are the west longitude / south latitude, rx/ry the east longitude / north latitude.

Geocode API - by coordinates​
POST /geocode/search

Base URL: https://api-gw.sovereignsolutions.com/gateway

Request Parameters

ParameterInTypeRequiredDescriptionExample
searchKeybodystringNo"lat, lon" string, e.g. "28.7074634, 77.1751171".

Request body

{
"searchKey": "28.7074634, 77.1751171"
}

Response Schema

200 OK

{
"docs": [
{
"latitude": "28.7074634",
"longitude": "77.1751171",
"postalCode": "110009",
"Country": "India",
"District": "North",
"PinCode": {
"OfficeName": "Nirankari Colony",
"OfficeType": "S.O",
"Value": "110009"
},
"Road": "",
"State": "DELHI",
"Status": true,
"Tehsil": "Model Town",
"Village": "",
"location_llt": "28.7074634,77.1751171",
"country": "India",
"province": "DELHI",
"district": "North",
"ward": "Model Town",
"resultType": 3,
"address": "Model Town, North, DELHI",
"shortAddress": "Model Town, North, DELHI",
"name": "Model Town, North, DELHI"
}
]
}
FieldTypeDescription
docsarrayOne document for the point.
docs[]object
docs[].latitudestringLatitude you sent, as a string.
docs[].longitudestringLongitude you sent, as a string.
docs[].postalCodestringPostal code (PIN).
docs[].Countrystring
docs[].DistrictstringDistrict.
docs[].PinCodeobject
docs[].PinCode.OfficeNamestringPost office name.
docs[].PinCode.OfficeTypestringPost office type, e.g. S.O (sub office).
docs[].PinCode.ValuestringPostal code (PIN).
docs[].RoadstringNearest road. Empty when none is known.
docs[].StatestringState.
docs[].Statusbooleantrue when an address was found.
docs[].TehsilstringTehsil (sub-district).
docs[].VillagestringVillage. Empty when not in a village.
docs[].location_lltstring"lat,lon" string.
docs[].countrystring
docs[].provincestring
docs[].districtstring
docs[].wardstring
docs[].resultTypeinteger3 = coordinate lookup.
docs[].addressstringFormatted address.
docs[].shortAddressstringShort formatted address.
docs[].namestringDisplay name.

Sending a "lat, lon" string as searchKey returns one resultType: 3 document describing the administrative area at that point.

Example​

curl -X POST 'https://api-gw.sovereignsolutions.com/gateway/geocode/search?api-key=$API_KEY' \
-H 'Content-Type: application/json' \
-d '{"searchKey": "coffee", "skip": 0, "take": 10}'

Geocode Suggest API​

Master list reference: #6

Location and Address Intelligence APIs · API key only

Predicts places as the user types - send the partial text and show the returned suggestions.

Endpoints​

All requests need only your API key, as the api-key query parameter - no bearer token:

?api-key=<apiKey>
Suggest places as the user types​
POST /geocode/suggest

Base URL: https://api-gw.sovereignsolutions.com/gateway

Request Parameters

ParameterInTypeRequiredDescriptionExample
searchKeybodystringNoPartial text typed so far.

Request body

{
"searchKey": "superm"
}

Response Schema

200 OK

{
"docs": [
{
"name": "J.D Fresh Supermarket",
"location_llt": "19.23262075,72.96960290000001",
"country": "India",
"categorye": "greengrocer",
"province": "MAHARASHTRA",
"_version_": 1852547300003414000,
"district": "Thane",
"id": "b8d22390-269a-4a86-aa17-2e52beec00e1",
"categoryCode": 2528,
"subCategoryCode": 994875171,
"longitude": 72.96960290000001,
"latitude": 19.23262075,
"resultType": 2
},
{
"name": "Royalmart Supermarket",
"location_llt": "13.049469035867427,77.50793970982083",
"country": "India",
"categorye": "retail",
"province": "KARNATAKA",
"_version_": 1852547287804280800,
"district": "Bangalore",
"id": "9dd98de3-0b63-4090-a9fa-28da6d71ed20",
"categoryCode": 7212,
"subCategoryCode": 726126339,
"longitude": 77.50793970982083,
"latitude": 13.049469035867427,
"resultType": 2
}
]
}
FieldTypeDescription
docsarraySuggestions, best first.
docs[]object
docs[].namestringPlace name.
docs[].location_lltstring"lat,lon" string - the same position as latitude / longitude.
docs[].countrystringCountry.
docs[].categoryestringCategory name.
docs[].provincestringState.
docs[]._version_integerInternal index version. Ignore it.
docs[].districtstringDistrict.
docs[].idstringResult ID.
docs[].categoryCodeintegerNumeric category code.
docs[].subCategoryCodeintegerNumeric sub-category code.
docs[].longitudenumberLongitude of the point, decimal degrees.
docs[].latitudenumberLatitude of the point, decimal degrees.
docs[].resultTypeintegerKind of match. 2 = place / POI.

Example​

curl -X POST 'https://api-gw.sovereignsolutions.com/gateway/geocode/suggest?api-key=$API_KEY' \
-H 'Content-Type: application/json' \
-d '{"searchKey": "superm"}'