Skip to main content
POST
/
api
/
points-of-interest
/
List points of interest near a coordinate
curl --request POST \
  --url https://pandora.ask-wire.com/api/points-of-interest/ \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "latitude": 37.9797085,
  "longitude": 23.75967373
}
'
import requests

url = "https://pandora.ask-wire.com/api/points-of-interest/"

payload = {
"latitude": 37.9797085,
"longitude": 23.75967373
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({latitude: 37.9797085, longitude: 23.75967373})
};

fetch('https://pandora.ask-wire.com/api/points-of-interest/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://pandora.ask-wire.com/api/points-of-interest/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'latitude' => 37.9797085,
'longitude' => 23.75967373
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://pandora.ask-wire.com/api/points-of-interest/"

payload := strings.NewReader("{\n \"latitude\": 37.9797085,\n \"longitude\": 23.75967373\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://pandora.ask-wire.com/api/points-of-interest/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"latitude\": 37.9797085,\n \"longitude\": 23.75967373\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://pandora.ask-wire.com/api/points-of-interest/")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"latitude\": 37.9797085,\n \"longitude\": 23.75967373\n}"

response = http.request(request)
puts response.read_body
[
  {
    "id": 61086,
    "external_id": "w1155869110",
    "name_en": "Park",
    "name_gr": "Πάρκο",
    "place_category": "Park",
    "place_type": "park",
    "latitude": 37.9797085,
    "longitude": 23.75967373,
    "distance": 0
  },
  {
    "id": 65625,
    "external_id": "n2330727927",
    "name_en": "Sklavenitis",
    "name_gr": "Σκλαβενίτης",
    "place_category": "Supermarket",
    "place_type": "supermarket",
    "latitude": 37.9802376,
    "longitude": 23.7587177,
    "distance": 102.38
  },
  {
    "id": 64921,
    "external_id": "n5197500021",
    "name_en": "Lidl",
    "name_gr": "Lidl",
    "place_category": "Supermarket",
    "place_type": "supermarket",
    "latitude": 37.9798503,
    "longitude": 23.7608444,
    "distance": 103.81
  },
  {
    "id": 48106,
    "external_id": "n4384306110",
    "name_en": "REVOIL",
    "name_gr": "REVOIL",
    "place_category": "Energy",
    "place_type": "fuel_station",
    "latitude": 37.9810814,
    "longitude": 23.7596605,
    "distance": 152.66
  },
  {
    "id": 26129,
    "external_id": "11759",
    "name_en": "EYDAP",
    "name_gr": "ΕΥΔΑΠ",
    "place_category": "Transportation",
    "place_type": "bus_stop",
    "latitude": 37.9787034,
    "longitude": 23.7581591,
    "distance": 173.53
  },
  {
    "id": 64524,
    "external_id": "n7181693185",
    "name_en": "My Market",
    "name_gr": "My Market",
    "place_category": "Supermarket",
    "place_type": "supermarket",
    "latitude": 37.9796253,
    "longitude": 23.7616994,
    "distance": 177.79
  },
  {
    "id": 45860,
    "external_id": "w661525262",
    "name_en": "AVIN",
    "name_gr": "AVIN",
    "place_category": "Energy",
    "place_type": "fuel_station",
    "latitude": 37.98126315,
    "longitude": 23.7587619,
    "distance": 190.45
  },
  {
    "id": 50418,
    "external_id": "n3439694902",
    "name_en": "ETEKA",
    "name_gr": "ΕΤΕΚΑ",
    "place_category": "Energy",
    "place_type": "fuel_station",
    "latitude": 37.9806927,
    "longitude": 23.7576414,
    "distance": 209.06
  },
  {
    "id": 24826,
    "external_id": "n6193520910",
    "name_en": "National Bank of Greece",
    "name_gr": "Εθνική Τράπεζα της Ελλάδος",
    "place_category": "Bank",
    "place_type": "bank",
    "latitude": 37.9811669,
    "longitude": 23.7578501,
    "distance": 227.7
  },
  {
    "id": 51106,
    "external_id": "n2830767495",
    "name_en": "Prolipsis",
    "name_gr": "Πρόληψις",
    "place_category": "Medical",
    "place_type": "clinic",
    "latitude": 37.9805322,
    "longitude": 23.7569626,
    "distance": 254.66
  },
  {
    "id": 74634,
    "external_id": "1014140",
    "name_en": "6th Day Epal Athinon",
    "name_gr": "6ο Ημερήσιο Επα. Λ. Αθηνών",
    "place_category": "Education",
    "place_type": "high_school",
    "latitude": 37.981939,
    "longitude": 23.758828,
    "distance": 258.86
  },
  {
    "id": 51145,
    "external_id": "n4394190110",
    "name_en": "New Medicine",
    "name_gr": "Νέα Ιατρική",
    "place_category": "Medical",
    "place_type": "clinic",
    "latitude": 37.9799343,
    "longitude": 23.7627978,
    "distance": 274.96
  },
  {
    "id": 74898,
    "external_id": "1000343",
    "name_en": "7th Evening Epa.L Athinon",
    "name_gr": "7ο Εσπερινό Επα. Λ Αθηνών",
    "place_category": "Education",
    "place_type": "high_school",
    "latitude": 37.982125,
    "longitude": 23.758742,
    "distance": 280.84
  },
  {
    "id": 59921,
    "external_id": "w790360242",
    "name_en": "Park",
    "name_gr": "Πάρκο",
    "place_category": "Park",
    "place_type": "park",
    "latitude": 37.9806993,
    "longitude": 23.75644097,
    "distance": 304.01
  },
  {
    "id": 27341,
    "external_id": "60924",
    "name_en": "1st Ilision",
    "name_gr": "1η Ιλισίων",
    "place_category": "Transportation",
    "place_type": "bus_stop",
    "latitude": 37.9780679,
    "longitude": 23.7565904,
    "distance": 326.06
  },
  {
    "id": 50677,
    "external_id": "n4464612064",
    "name_en": "General Hospital \"Alexandra\" (Outpatient Clinics)",
    "name_gr": "Γεν. Νοσ. \"Αλεξάνδρα\" (Εξωτερικά Ιατρεία)",
    "place_category": "Medical",
    "place_type": "hospital",
    "latitude": 37.9810314,
    "longitude": 23.7562692,
    "distance": 332.68
  }
]
{
"error": 123,
"message": "<string>"
}

Overview

This endpoint returns the neighbourhood points of interest for any coordinate pair, using the exact same selection logic as the Marketability Report — so an ad-hoc lookup and a report’s neighbourhood section always return the same POIs for the same coordinates. Although the operation is a read with no side effects, the coordinates are passed in a JSON request body, which is why the endpoint uses POST rather than GET.
The route requires the trailing slash (/api/points-of-interest/). A redirected slashless POST can drop its request body in some clients.

Request body

Send a JSON object with both coordinates:
{ "latitude": 37.9797085, "longitude": 23.75967373 }
FieldTypeRequiredConstraintsDescription
latitudenumberYes-90 ≤ value ≤ 90Latitude to search around.
longitudenumberYes-180 ≤ value ≤ 180Longitude to search around.
Coordinates may be sent as JSON numbers, integers, or numeric strings — all are coerced to floats. Trailing zeros are irrelevant (40.7120 and 40.712 are the same value).

Selection logic

Each POI category is searched within its own radius around the queried point:
CategorySearch radius
Airport10 000 m
Metro / Future metro / Tram / Train2 000 m
All other place types1 000 m
Results are ordered nearest-first, capped at 3 per place type and 16 total. These limits are fixed and cannot be tuned per request.

Response fields

The response is a JSON array of POI objects (an empty array [] when nothing is within range — this is not an error condition).
FieldTypeDescription
idintegerPOI identifier.
external_idstring | nullIdentifier from the source dataset.
name_enstring | nullEnglish name.
name_grstring | nullGreek name.
place_categorystring | nullSource-provided category label.
place_typestringPOI type (see values below).
latitudenumber | nullPOI latitude.
longitudenumber | nullPOI longitude.
distancenumber | nullDistance from the queried point, in metres, rounded to 2 decimals.

place_type values

airport, bank, bus_stop, bus_station, metro_station, future_metro_station, tram_station, elementary_school, high_school, primary_school, kindergarden, hospital, clinic, park, playground, fuel_station, sports, church, police, post_office, shopping_mall, train_station, university, city_hall, supermarket

Errors

StatusWhen
400 Bad RequestMissing latitude/longitude, out-of-range value, or non-numeric value.
401 UnauthorizedMissing or invalid JWT.

Example request

curl -X POST "https://pandora.ask-wire.com/api/points-of-interest/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "latitude": 37.9797085, "longitude": 23.75967373}'
Example response:
[
  {
    "id": 61086,
    "external_id": "w1155869110",
    "name_en": "Park",
    "name_gr": "Πάρκο",
    "place_category": "Park",
    "place_type": "park",
    "latitude": 37.9797085,
    "longitude": 23.75967373,
    "distance": 0.0
  },
  {
    "id": 65625,
    "external_id": "n2330727927",
    "name_en": "Sklavenitis",
    "name_gr": "Σκλαβενίτης",
    "place_category": "Supermarket",
    "place_type": "supermarket",
    "latitude": 37.9802376,
    "longitude": 23.7587177,
    "distance": 102.38
  },
  {
    "id": 64921,
    "external_id": "n5197500021",
    "name_en": "Lidl",
    "name_gr": "Lidl",
    "place_category": "Supermarket",
    "place_type": "supermarket",
    "latitude": 37.9798503,
    "longitude": 23.7608444,
    "distance": 103.81
  },
  {
    "id": 48106,
    "external_id": "n4384306110",
    "name_en": "REVOIL",
    "name_gr": "REVOIL",
    "place_category": "Energy",
    "place_type": "fuel_station",
    "latitude": 37.9810814,
    "longitude": 23.7596605,
    "distance": 152.66
  },
  {
    "id": 26129,
    "external_id": "11759",
    "name_en": "EYDAP",
    "name_gr": "ΕΥΔΑΠ",
    "place_category": "Transportation",
    "place_type": "bus_stop",
    "latitude": 37.9787034,
    "longitude": 23.7581591,
    "distance": 173.53
  },
  {
    "id": 64524,
    "external_id": "n7181693185",
    "name_en": "My Market",
    "name_gr": "My Market",
    "place_category": "Supermarket",
    "place_type": "supermarket",
    "latitude": 37.9796253,
    "longitude": 23.7616994,
    "distance": 177.79
  },
  {
    "id": 45860,
    "external_id": "w661525262",
    "name_en": "AVIN",
    "name_gr": "AVIN",
    "place_category": "Energy",
    "place_type": "fuel_station",
    "latitude": 37.98126315,
    "longitude": 23.7587619,
    "distance": 190.45
  },
  {
    "id": 50418,
    "external_id": "n3439694902",
    "name_en": "ETEKA",
    "name_gr": "ΕΤΕΚΑ",
    "place_category": "Energy",
    "place_type": "fuel_station",
    "latitude": 37.9806927,
    "longitude": 23.7576414,
    "distance": 209.06
  },
  {
    "id": 24826,
    "external_id": "n6193520910",
    "name_en": "National Bank of Greece",
    "name_gr": "Εθνική Τράπεζα της Ελλάδος",
    "place_category": "Bank",
    "place_type": "bank",
    "latitude": 37.9811669,
    "longitude": 23.7578501,
    "distance": 227.7
  },
  {
    "id": 51106,
    "external_id": "n2830767495",
    "name_en": "Prolipsis",
    "name_gr": "Πρόληψις",
    "place_category": "Medical",
    "place_type": "clinic",
    "latitude": 37.9805322,
    "longitude": 23.7569626,
    "distance": 254.66
  },
  {
    "id": 74634,
    "external_id": "1014140",
    "name_en": "6th Day Epal Athinon",
    "name_gr": "6ο Ημερήσιο Επα. Λ. Αθηνών",
    "place_category": "Education",
    "place_type": "high_school",
    "latitude": 37.981939,
    "longitude": 23.758828,
    "distance": 258.86
  },
  {
    "id": 51145,
    "external_id": "n4394190110",
    "name_en": "New Medicine",
    "name_gr": "Νέα Ιατρική",
    "place_category": "Medical",
    "place_type": "clinic",
    "latitude": 37.9799343,
    "longitude": 23.7627978,
    "distance": 274.96
  },
  {
    "id": 74898,
    "external_id": "1000343",
    "name_en": "7th Evening Epa.L Athinon",
    "name_gr": "7ο Εσπερινό Επα. Λ Αθηνών",
    "place_category": "Education",
    "place_type": "high_school",
    "latitude": 37.982125,
    "longitude": 23.758742,
    "distance": 280.84
  },
  {
    "id": 59921,
    "external_id": "w790360242",
    "name_en": "Park",
    "name_gr": "Πάρκο",
    "place_category": "Park",
    "place_type": "park",
    "latitude": 37.9806993,
    "longitude": 23.75644097,
    "distance": 304.01
  },
  {
    "id": 27341,
    "external_id": "60924",
    "name_en": "1st Ilision",
    "name_gr": "1η Ιλισίων",
    "place_category": "Transportation",
    "place_type": "bus_stop",
    "latitude": 37.9780679,
    "longitude": 23.7565904,
    "distance": 326.06
  },
  {
    "id": 50677,
    "external_id": "n4464612064",
    "name_en": "General Hospital \"Alexandra\" (Outpatient Clinics)",
    "name_gr": "Γεν. Νοσ. \"Αλεξάνδρα\" (Εξωτερικά Ιατρεία)",
    "place_category": "Medical",
    "place_type": "hospital",
    "latitude": 37.9810314,
    "longitude": 23.7562692,
    "distance": 332.68
  }
]

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
latitude
number
required

Latitude to search around.

Required range: -90 <= x <= 90
Example:

40.712776

longitude
number
required

Longitude to search around.

Required range: -180 <= x <= 180
Example:

-74.005974

Response

Points of interest near the queried coordinate, ordered nearest-first. An empty array means nothing is within range — not an error.

id
integer

POI identifier.

external_id
string | null

Identifier from the source dataset.

name_en
string | null

English name.

name_gr
string | null

Greek name.

place_category
string | null

Source-provided category label.

place_type
enum<string>

POI type.

Available options:
airport,
bank,
bus_stop,
bus_station,
metro_station,
future_metro_station,
tram_station,
elementary_school,
high_school,
primary_school,
kindergarden,
hospital,
clinic,
park,
playground,
fuel_station,
sports,
church,
police,
post_office,
shopping_mall,
train_station,
university,
city_hall,
supermarket
latitude
number | null

POI latitude.

longitude
number | null

POI longitude.

distance
number | null

Distance from the queried point, in metres, rounded to 2 decimals.