✦ Built on OpenStreetMap · Zero Retention

The context layer for your automations

Send GPS coordinates. Get back a place name and a stable category — gym, grocery, gas_station — that your Apple Shortcuts, Python scripts, and apps can act on instantly.

GET api.geolabel.dev/label?lat=41.88&lng=-87.62
Response
"place" "Planet Fitness - Chicago"
"label" "Planet Fitness"
"category" gym
"distance_meters" 12.1
"is_open" true
"closes_at" "23:00"
"cached" false

No coordinate logging

Query params are stripped from all server logs before they touch disk.

Ephemeral cache

In-memory only, purged every 10 minutes. No movement history stored.

Open data

Powered by OpenStreetMap. No Google Maps, no expensive licensing.

Never sold

Your location data is processed in real-time and immediately discarded.

One endpoint. Instant context.

No SDKs to install. No accounts to create for basic use. One GET request with your coordinates returns everything your automation needs.

1

Send coordinates

Pass lat and lng as query parameters with your API key in the header. That's the entire integration.

2

We query OpenStreetMap

GeoLabel searches the world's largest open map database for the nearest named place. Results are cached for 10 minutes so repeated lookups are instant.

3

Act on category

category: "gym" fires whether you're at Planet Fitness, Equinox, YMCA, or any other gym on Earth. Build the logic once; it works everywhere.

Your phone already knows where you are.
Now it knows what to do.

Each recipe uses category so it works at any location of that type — not just one specific venue.

category = "gym"

🏋️ Gym Mode

Walk into any gym. Your phone switches into workout mode before you touch the floor.

  • Set Focus → Workout
  • Start your gym playlist
  • Log check-in time to Notes
category = "grocery"

🛒 Grocery List Auto-Open

Walk into any grocery store. Your list opens automatically — Walmart, Whole Foods, your local market.

  • Open Reminders → Grocery List
  • Works at every store worldwide
category = "gas_station"

⛽ Gas Station Reward

Pull into any gas station. Your rewards app opens so you never forget to scan.

  • Open your gas station rewards app
  • Log fill-up to a spreadsheet
category = "restaurant"

🍽️ Dining Log

Sit down at any restaurant. The name and date get logged automatically.

  • Append place name + timestamp to Notes
  • Build a full dining history without lifting a finger

Full step-by-step Apple Shortcuts instructions → Shortcut Library →

Works everywhere you write code.

One HTTP request is all it takes. Use whatever language or tool you already have.

# Get a free key at geolabel.dev, then:
curl "https://api.geolabel.dev/label?lat=41.8827&lng=-87.6233" \
  -H "X-API-Key: your_key_here"
import httpx

result = httpx.get(
    "https://api.geolabel.dev/label",
    headers={"X-API-Key": "your_key_here"},
    params={"lat": 41.8827, "lng": -87.6233},
).json()

print(result["category"])  # → "gym"
print(result["label"])     # → "Planet Fitness"

if result["category"] == "gym":
    start_workout_mode()
elif result["category"] == "grocery":
    open_shopping_list()
const res = await fetch(
  "https://api.geolabel.dev/label?lat=41.8827&lng=-87.6233",
  { headers: { "X-API-Key": "your_key_here" } }
);
const { category, label } = await res.json();

const actions = {
  gym:         () => startWorkoutMode(),
  grocery:     () => openShoppingList(),
  gas_station: () => openRewardsApp(),
};

actions[category]?.();
let url = URL(string: "https://api.geolabel.dev/label?lat=41.8827&lng=-87.6233")!
var request = URLRequest(url: url)
request.setValue("your_key_here", forHTTPHeaderField: "X-API-Key")

let (data, _) = try await URLSession.shared.data(for: request)
let result = try JSONDecoder().decode(GeoLabelResponse.self, from: data)

switch result.category {
case "gym":        startWorkoutMode()
case "grocery":   openShoppingList()
default:          break
}

Works in every MCP-compatible agent

One package. Any MCP client — Claude, Hermes Agent, or OpenClaw — can call GeoLabel directly. No Shortcuts, no copy-pasting coordinates.

  1. 1

    Get a free API key

    Generate your key — 10 seconds, no credit card.

  2. 2

    Add to your agent

    Pick your client from the tabs, paste the config, and drop in your key. One-time setup.

  3. 3

    Share coordinates, get context

    Your agent calls GeoLabel, gets the label, category, and live hours, and responds naturally.

✦ Claude Desktop ✦ Claude Code ✦ Hermes Agent ✦ OpenClaw ✦ Any MCP client
── claude_desktop_config.json ───────────

{
  "mcpServers": {
    "geolabel": {
      "command": "uvx",
      "args": ["geolabel-mcp"],
      "env": {
        "GEOLABEL_API_KEY": "glk_your_key_here"
      }
    }
  }
}

── Claude Code (one-liner) ──────────────

claude mcp add geolabel -- uvx geolabel-mcp

── Result ───────────────────────────────

You:    I'm at 41.8827, -87.6233 — what's here?
Claude: Planet Fitness (gym) · open · closes 23:00
── ~/.hermes/config.json ────────────────

{
  "mcpServers": {
    "geolabel": {
      "command": "uvx",
      "args": ["geolabel-mcp"],
      "env": {
        "GEOLABEL_API_KEY": "glk_your_key_here"
      }
    }
  }
}

── Result ───────────────────────────────

You:    I'm at 41.8827, -87.6233 — what's here?
Hermes: Planet Fitness (gym) · open · closes 23:00
── Register via CLI ─────────────────────

openclaw mcp set geolabel \
  --command uvx \
  --args geolabel-mcp \
  --env GEOLABEL_API_KEY=glk_your_key_here

── Verify ───────────────────────────────

openclaw mcp list

── Result ───────────────────────────────

You:      I'm at 41.8827, -87.6233 — what's here?
OpenClaw: Planet Fitness (gym) · open · closes 23:00

Start free. Scale when you need to.

No credit card required for the free tier. Upgrade anytime.

Free
$0/mo

Enough to see it works. Not enough to automate a daily routine.
  • 5 requests / minute
  • 100 requests / day
  • Full API access
  • Zero-Retention guarantee
Hobbyist
$9/mo
$90/yr

≈ $7.50/mo · 2 months free

Perfect for Home Assistant and power Shortcuts users.
  • 30 requests / minute
  • 1,000 requests / day
  • Full API access
  • Zero-Retention guarantee
  • Email support
Professional
$79/mo
$790/yr

≈ $66/mo · 2 months free

Where the real money is — includes a Zero-Retention Compliance Seal for your TOS.
  • 500 requests / minute
  • 250,000 requests / day
  • Full API access
  • Zero-Retention Compliance Seal
  • Zero-Retention guarantee
  • Dedicated support
Enterprise
$249 / mo & up  ·  Custom fit
High-volume fleet, logistics, or B2B integrations. Uptime SLAs, custom rate limits, and direct access to the team.
Custom rate limits Uptime SLA White-glove onboarding Dedicated support channel Zero-Retention guarantee
Contact us →