Skip to main content

Location API Documentation

Complete documentation for all location-based services.


Reverse Geocoding​

Convert GPS coordinates to human-readable address.

Method​

Barikoi::reverseGeocode(float $longitude, float $latitude, array $options = [])

Parameters​

ParameterTypeRequiredDescription
longitudefloatYesLongitude coordinate (-180 to 180)
latitudefloatYesLatitude coordinate (-90 to 90)
optionsarrayNoAdditional options

Options​

OptionTypeDefaultDescription
districtbooleanfalseInclude district name
post_codebooleanfalseInclude postal code
countrybooleanfalseInclude country
country_codestringbdThe two-letter country code (ISO Alpha-2) representing the desired country (e.g., sa for Saudi Arabia). You can find codes in the ISO Alpha-2 country code standard.
sub_districtbooleanfalseInclude sub-district
unionbooleanfalseInclude union
pauroshovabooleanfalseInclude pauroshova (municipality)
location_typebooleanfalseInclude location type
divisionbooleanfalseInclude division name
addressbooleanfalseInclude full address
areabooleanfalseInclude area name
banglabooleanfalseInclude Bangla address
thanabooleanfalseInclude thana

Usage​

use Barikoi\BarikoiApis\Facades\Barikoi;
use Barikoi\BarikoiApis\Exceptions\BarikoiValidationException;
use Barikoi\BarikoiApis\Exceptions\BarikoiApiException;

try {
// Basic usage (returns stdClass)
$result = Barikoi::reverseGeocode(90.3572, 23.8067);

// With all options
$result = Barikoi::reverseGeocode(90.3572, 23.8067, [
'district' => true,
'post_code' => true,
'country' => true,
'country_code' => 'sa',
'sub_district' => true,
'union' => true,
'pauroshova' => true,
'location_type' => true,
'division' => true,
'address' => true,
'area' => true,
'bangla' => true,
'thana' => true,
]);

// Access response (object / stdClass)
$address = $result->place->address;
$district = $result->place->district;

} catch (BarikoiValidationException $e) {
// Invalid coordinates
echo "Error: " . $e->getMessage();
} catch (BarikoiApiException $e) {
// API error
echo "API Error: " . $e->getMessage();
}

Response​

{
"place": {
"id": 443524,
"distance_within_meters": 24.7438,
"address": "Shahbagh Road, Shahbagh, Dhaka",
"area": "Shahbagh",
"city": "Dhaka",
"district": "Dhaka", // if requested
"postCode": 1000, // if requested
"country_code": "bd" // if provided
},
"status": 200
}

Note: In PHP, Barikoi::reverseGeocode() returns a stdClass object that mirrors this JSON shape.
Access fields using -> (for example, $result->place->address, $result->status).

Conditions​

  • Longitude must be between -180 and 180
  • Latitude must be between -90 and 90

Country Code Reference​

  • Uses ISO Alpha-2 codes (default BD)
  • See the country code list: docs/country-codes.md
  • For all other countries, refer to the ISO 3166-1 Alpha-2 standard.

Error Handling​

Error CodeExceptionCauseSolution
400BarikoiValidationExceptionInvalid coordinates (out of range)Verify lat/lng values
401BarikoiApiExceptionInvalid API keyCheck .env configuration
404BarikoiApiExceptionLocation not foundCoordinates may be in ocean/invalid area
429BarikoiApiExceptionRate limit exceededReduce request frequency
500BarikoiApiExceptionServer errorRetry after some time

Geocoding (Rupantor)​

Convert address text to GPS coordinates.

Method​

Barikoi::geocode(string $address, array $options = [])

Parameters​

ParameterTypeRequiredDescription
addressstringYesAddress in Bengali or English (sent as q parameter)

Usage​

use Barikoi\BarikoiApis\Facades\Barikoi;
use Barikoi\BarikoiApis\Exceptions\BarikoiValidationException;
use Barikoi\BarikoiApis\Exceptions\BarikoiApiException;

try {
// Basic usage (returns stdClass object)
$result = Barikoi::geocode('shawrapara');

// Access response (object / stdClass)
$coordinates = $result->geocoded_address->geo_location;
$latitude = $coordinates[1];
$longitude = $coordinates[0];
$address = $result->geocoded_address->address;

} catch (BarikoiValidationException $e) {
echo "Invalid address: " . $e->getMessage();
} catch (BarikoiApiException $e) {
echo "Geocoding failed: " . $e->getMessage();
}

Response​

{
"given_address": "shawrapara",
"fixed_address": "shawrapara",
"address_status": "complete",
"confidence_score_percentage": 95,
"status": 200,
"geocoded_address": {
"latitude": "23.7459408",
"longitude": "90.37546663",
"geo_location": [90.37546663, 23.7459408],
"address": "Shawrapara, Mirpur, Dhaka",
"area": "Mirpur",
"city": "Dhaka",
"postcode": 1216,
"district": "Dhaka", // if requested
"thana": "Mirpur", // if requested
}
}

Note: In PHP, Barikoi::geocode() returns a stdClass object that mirrors this JSON shape. Access fields using -> (for example, $result->geocoded_address->address, $result->status).

Conditions​

  • Address should be in Bangladesh
  • More specific addresses give better results
  • Can use Bengali or English text

Error Handling​

Error CodeExceptionCauseSolution
400BarikoiValidationExceptionEmpty or invalid addressProvide valid address string
404BarikoiApiExceptionAddress not foundTry more specific address
429BarikoiApiExceptionRate limit exceededImplement request throttling

Autocomplete​

Get place suggestions as user types.

Method​

Barikoi::autocomplete(string $query, array $options = [])

Parameters​

ParameterTypeRequiredDescription
querystringYesSearch query (min 2 characters), sent as q
optionsarrayNoSupports bangla, city, sub_area, sub_district

Supported Options​

OptionTypeDefaultDescription
banglabooleanfalseWhen true, returns Bangla text in the response (where available)
citystringnullFilter results by city name (e.g., dhaka)
sub_areabooleanfalseInclude sub-area information in results
sub_districtbooleanfalseInclude sub-district information in results

Usage​

try {
// Basic autocomplete
$suggestions = Barikoi::autocomplete('Dhaka');

// With Bangla and city filter
$suggestions = Barikoi::autocomplete('barikoi', [
'bangla' => true,
'city' => 'dhaka',
'sub_area' => true,
'sub_district' => true,
]);

foreach ($suggestions->places as $place) {
echo $place->address;
}

} catch (BarikoiValidationException $e) {
echo "Invalid query: " . $e->getMessage();
}

Response​

{
"places": [
{
"id": 3354,
"longitude": "90.36402004477634",
"latitude": "23.823730671721",
"address": "Barikoi HQ (barikoi.com), Dr Mohsin Plaza, House 2/7, Begum Rokeya Sarani, Pallabi, Mirpur, Dhaka",
"address_bn": "বাড়িকই HQ (বারিকই.কম), ডঃ মহসিন প্লাজা, বাড়ি ২/৭, বেগম রোকেয়া সরণী, পল্লবী, মিরপুর, ঢাকা, ঢাকা",
"city": "Dhaka",
"city_bn": "ঢাকা",
"area": "Mirpur",
"area_bn": "মিরপুর",
"postCode": 1216,
"pType": "Office",
"subType": "Head Office",
"district": "Dhaka",
"uCode": "BKOI2017",
"sub_area": "Pallabi",
"sub_district": "Pallabi"
}
// ... more results
],
"status": 200
}

Note: In PHP, Barikoi::autocomplete() returns a stdClass object that mirrors this JSON shape.
Access fields using -> (for example, $suggestions->places[0]->address, $suggestions->status).

Conditions​

  • Minimum 2 characters required
  • Maximum 100 characters
  • Results limited to Bangladesh

Error Handling​

Error CodeExceptionCauseSolution
400BarikoiValidationExceptionQuery too short (< 2 chars)Require minimum 2 characters
401BarikoiApiExceptionInvalid API keyCheck credentials
429BarikoiApiExceptionToo many requestsAdd debounce to search input

Search Place​

Search for places by query string.

Method​

Barikoi::searchPlace(string $query, array $options = [])

Parameters​

ParameterTypeRequiredDescription
querystringYesSearch query

Usage​

try {
// Basic search (returns stdClass object)
$results = Barikoi::searchPlace('barikoi');

// Access results (object / stdClass)
foreach ($results->places as $place) {
echo $place->address . ' (' . $place->place_code . ')' . PHP_EOL;
}

// Access session_id and status
$sessionId = $results->session_id ?? null;
$status = $results->status;

} catch (BarikoiApiException $e) {
echo "Search failed: " . $e->getMessage();
}

Response​

{
"places": [
{
"address": "Barikoi HQ (barikoi.com), Dr Mohsin Plaza, House 2/7, Begum Rokeya Sarani, Pallabi, Mirpur, Dhaka",
"place_code": "BKOI2017"
},
{
"address": "Barikoi Global Map Office Rajshahi, Silicon Tower, Rajshahi Hi Tech Park, Zia Nagar, Bashuri, Rajshahi",
"place_code": "HPADN93670"
}
// ... more results
],
"session_id": "df365f41-602d-4211-94b9-46242947f3a0",
"status": 200
}

Note: In PHP, Barikoi::searchPlace() returns a stdClass object that mirrors this JSON shape.
Access fields using -> (for example, $results->places, $results->status, $results->session_id).

Error Handling​

Error CodeExceptionCauseSolution
400BarikoiValidationExceptionInvalid queryProvide valid search query
401BarikoiApiExceptionInvalid API keyCheck credentials
404BarikoiApiExceptionNo results foundTry different search terms

Place Details​

Get detailed information about a place using its place_code.

Method​

Barikoi::placeDetails(string $placeCode, array $options = [])

Parameters​

ParameterTypeRequiredDescription
placeCodestringYesThe place_code from search results (e.g., 'BKOI2017')
optionsarrayNoOptional parameters (see below)

Options​

OptionTypeDescription
session_idstringSession ID from a previous searchPlace() call for better accuracy

Usage​

use Barikoi\BarikoiApis\Facades\Barikoi;
use Barikoi\BarikoiApis\Exceptions\BarikoiApiException;
use Barikoi\BarikoiApis\Exceptions\BarikoiValidationException;

try {
// With session_id from searchPlace() for better accuracy
$searchResults = Barikoi::searchPlace('barikoi');
$sessionId = $searchResults->session_id ?? null;

$placeDetails = Barikoi::placeDetails('BKOI2017', [
'session_id' => $sessionId
]);

// Access response (object / stdClass)
$address = $placeDetails->place->address ?? null;
$placeCode = $placeDetails->place->place_code ?? null;
$latitude = $placeDetails->place->latitude ?? null;
$longitude = $placeDetails->place->longitude ?? null;
$sessionId = $placeDetails->session_id ?? null;
$status = $placeDetails->status;

} catch (BarikoiApiException $e) {
echo "API Error: " . $e->getMessage();
} catch (BarikoiValidationException $e) {
echo "Validation Error: " . $e->getMessage();
}

Response​

{
"place": {
"address": "Barikoi HQ (barikoi.com), Dr Mohsin Plaza, House 2/7, Begum Rokeya Sarani, Pallabi, Mirpur, Dhaka",
"place_code": "BKOI2017",
"latitude": "23.823730671721",
"longitude": "90.36402004477634"
},
"session_id": "4c47157f-22d6-4689-abdf-c9f81eb43ae4",
"status": 200
}

Note: In PHP, Barikoi::placeDetails() returns a stdClass object that mirrors this JSON shape.
Access fields using -> (for example, $placeDetails->place->address, $placeDetails->status, $placeDetails->session_id).

Conditions​

  • Place code must be valid (obtained from searchPlace() or autocomplete() results)
  • Using session_id from a previous searchPlace() call improves accuracy
  • Place code format: alphanumeric string (e.g., 'BKOI2017')

Error Handling​

Error CodeExceptionCauseSolution
400BarikoiValidationExceptionInvalid place codeVerify place code from search results
401BarikoiApiExceptionInvalid API keyCheck credentials
404BarikoiApiExceptionPlace not foundVerify place code is correct

Find places within a specified radius.

Method​

Barikoi::nearby(float $longitude, float $latitude, float $distance = 0.5, int $limit = 10)

Parameters​

ParameterTypeRequiredDescription
longitudefloatYesCenter longitude
latitudefloatYesCenter latitude
distancefloatNoRadius in kilometers (default: 0.5)
limitintNoMaximum number of results (default: 10)

Usage​

try {
// Find places within 0.5km (default), max 10 results (default)
// Returns stdClass object with "places" array
$nearby = Barikoi::nearby(90.38305163, 23.87188719);

// Find places within 1km, max 20 results
$nearby = Barikoi::nearby(90.38305163, 23.87188719, 1.0, 20);

// Access results (object / stdClass)
foreach ($nearby->places as $place) {
// API uses "Address" (capital A) and "distance_in_meters"
echo $place->Address . ' (' . $place->distance_in_meters . 'm)' . PHP_EOL;
}

} catch (BarikoiValidationException $e) {
echo "Invalid parameters: " . $e->getMessage();
}

Conditions​

  • Distance is in kilometers (e.g., 0.5 = 500 meters)
  • Coordinates must be valid
  • Returns nearest places first

Snap to Road​

Correct GPS coordinates to nearest road point.

Method​

Barikoi::snapToRoad(float $latitude, float $longitude)

Parameters​

ParameterTypeRequiredDescription
latitudefloatYesLatitude coordinate
longitudefloatYesLongitude coordinate

Usage​

try {
// Snap single point to nearest road
// Returns stdClass object with coordinates [lon, lat]
$snapped = Barikoi::snapToRoad(23.806525320635505, 90.36129978225671);

// Access results (object / stdClass)
$coordinates = $snapped->coordinates ?? null; // [lon, lat]
$distance = $snapped->distance ?? null; // meters
$type = $snapped->type ?? null; // e.g. "Point"

} catch (BarikoiValidationException $e) {
echo "Invalid coordinates: " . $e->getMessage();
}

Response​

{
"coordinates": [90.36124781587853, 23.80659275779645],
"distance": 9.174944594219724,
"type": "Point"
}

Note: In PHP, Barikoi::snapToRoad() returns a stdClass object that mirrors this JSON shape.
Access fields using -> (for example, $snapped->coordinates, $snapped->distance, $snapped->type).

Conditions​

  • Accepts a single point (latitude, longitude)
  • Point is sent as "latitude,longitude" format to the API
  • Points should be on or near roads
  • Points should be in sequence

Error Handling​

Error CodeExceptionCauseSolution
400BarikoiValidationExceptionInvalid coordinatesCheck parameters
404BarikoiApiExceptionNo places foundTry larger radius
400BarikoiValidationExceptionInvalid coordinatesCheck latitude/longitude values

Check Nearby​

Check if the current location is within a specified radius of a destination point.

Method​

Barikoi::checkNearby(
float $destinationLatitude,
float $destinationLongitude,
float $currentLatitude,
float $currentLongitude,
float $radius = 50
)

Parameters​

ParameterTypeRequiredDescription
destinationLatitudefloatYesLatitude of the destination (-90 to 90)
destinationLongitudefloatYesLongitude of the destination (-180 to 180)
currentLatitudefloatYesLatitude of the current location (-90 to 90)
currentLongitudefloatYesLongitude of the current location (-180 to 180)
radiusfloatNoRadius in meters (default: 50, must be positive)

Usage​

use Barikoi\BarikoiApis\Facades\Barikoi;
use Barikoi\BarikoiApis\Exceptions\BarikoiValidationException;
use Barikoi\BarikoiApis\Exceptions\BarikoiApiException;

try {
$result = Barikoi::checkNearby(
23.76245538673939,
90.37852866512583,
23.762412943322726,
90.37864864706823,
50
);

$isNearby = $result['is_nearby'] ?? false;

} catch (BarikoiValidationException $e) {
echo "Invalid coordinates: " . $e->getMessage();
} catch (BarikoiApiException $e) {
echo "API error: " . $e->getMessage();
}

Response​

{
"message": "Inside geo fence",
"status": 200,
"data": {
"id": "635085",
"name": "Songsodh vaban",
"radius": "55",
"longitude": "90.37852866512583",
"latitude": "23.76245538673939",
"user_id": 2978
}
}

Conditions​

  • All latitude values must be between -90 and 90
  • All longitude values must be between -180 and 180
  • Radius must be a positive number

Error Handling​

Error CodeExceptionCauseSolution
400BarikoiValidationExceptionInvalid coordinates or radiusCheck input values
401BarikoiApiExceptionInvalid API keyCheck credentials
404BarikoiApiExceptionLocation not foundVerify coordinates
429BarikoiApiExceptionRate limit exceededReduce request frequency
500BarikoiApiExceptionServer errorRetry after some time