curl --request GET \
--url https://app.orgo.space/api/v1/companies-map-public \
--header 'Api-Token: <api-key>'import requests
url = "https://app.orgo.space/api/v1/companies-map-public"
headers = {"Api-Token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'Api-Token': '<api-key>'}};
fetch('https://app.orgo.space/api/v1/companies-map-public', 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://app.orgo.space/api/v1/companies-map-public",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Api-Token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.orgo.space/api/v1/companies-map-public"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Api-Token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.orgo.space/api/v1/companies-map-public")
.header("Api-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.orgo.space/api/v1/companies-map-public")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Api-Token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"clusters": [
{
"lat": 42.3601,
"lng": -71.0589,
"count": 12,
"users": [
{
"uuid": "01938d8e-9c4f-7c2a-b8e1-3f7a9b8c4f12",
"name": "Boston Chapter",
"logo": "https://cdn.orgo.space/tenants/acme/logo.png"
}
],
"clusterLat": 42.3601,
"clusterLng": -71.0589,
"clusterPrecision": 42,
"isSinglePoint": true
}
],
"actualBounds": {},
"zoom": 42
}Get company map clusters for the public map
Anonymous version of /companies-map-clusters for the public company map (the iframe embed, also rendered by the website company map block). Requires the tenantSlug query parameter; accepts the same zoom and viewport bounds (north, south, east, west). Pins carry company identity only (uuid, name, logo): a lone pin carries its one company, and a grouped pin of up to 50 companies carries all of them, so companies that share one point (usually their town or country centre) can be drawn as one pin each. Larger groups carry none; zoom in until they split. isSinglePoint marks a pin zooming will never split. Open a company with /companies-map-public-card. Answers 404 for an unknown slug, when the tenant company module is off, or until the tenant switches the public company map on. Rate-limited per IP.
curl --request GET \
--url https://app.orgo.space/api/v1/companies-map-public \
--header 'Api-Token: <api-key>'import requests
url = "https://app.orgo.space/api/v1/companies-map-public"
headers = {"Api-Token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'Api-Token': '<api-key>'}};
fetch('https://app.orgo.space/api/v1/companies-map-public', 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://app.orgo.space/api/v1/companies-map-public",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Api-Token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.orgo.space/api/v1/companies-map-public"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Api-Token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.orgo.space/api/v1/companies-map-public")
.header("Api-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.orgo.space/api/v1/companies-map-public")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Api-Token"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"clusters": [
{
"lat": 42.3601,
"lng": -71.0589,
"count": 12,
"users": [
{
"uuid": "01938d8e-9c4f-7c2a-b8e1-3f7a9b8c4f12",
"name": "Boston Chapter",
"logo": "https://cdn.orgo.space/tenants/acme/logo.png"
}
],
"clusterLat": 42.3601,
"clusterLng": -71.0589,
"clusterPrecision": 42,
"isSinglePoint": true
}
],
"actualBounds": {},
"zoom": 42
}Authorizations
Server-to-server authentication. Generate a token in the admin UI at
Settings → Developers → API Access. Send the raw token in the
Api-Token header — there is no Bearer prefix.
Tokens can be marked read-only at creation time, in which case the API
rejects any non-GET request with 403 Forbidden.
Query Parameters
The organisation, by its slug
Leaflet zoom level; decides how coarse the grouping grid is. Default 6.
Viewport edge in degrees. Send all four or none; none means worldwide, which is what the first load should ask for.
Viewport edge in degrees. Send all four or none; none means worldwide, which is what the first load should ask for.
Viewport edge in degrees. Send all four or none; none means worldwide, which is what the first load should ask for.
Viewport edge in degrees. Send all four or none; none means worldwide, which is what the first load should ask for.

