Inworld Map

API

Everything on this site comes from a free, read-only JSON API. No key needed: just send GET requests. The data is a snapshot of the whole Second Life world map and refreshes after every full scan.

Base URL
https://inworldmap.com
Rate limit
120 requests per minute per IP
Caching
Cache-Control 60 s and ETag (send If-None-Match)
Example
curl "https://inworldmap.com/api/search?q=beach&rating=general"

Conventions

  • Times are ISO 8601 in UTC (the site shows them in SLT).
  • x, y are map grid positions (one unit per region). Global coordinates are x × 256, y × 256. Inside a region, positions go from 0 to 255.
  • Ratings: general, moderate, adult (plus offline for regions that are on the map but down).
  • Languages are guesses, with a source: description (from the parcel text) or name (from the name only, weaker).
  • Lists are paginated with page and return total, page and pages.
  • Errors return a status code and {"error": "…"}.

Endpoints

GET /api/stats

Totals, regions and avatars by rating, avatars per scan, new and gone regions per week, and recent changes.

Try it: /api/stats
GET /api/regions/{name}

Everything about one region: rating, position, anonymous avatar dots, center parcel, parcels for sale, crowd history, average by hour (SLT) and change history.

ParameterDescription
nameRegion name (case insensitive), URL encoded
Try it: /api/regions/NOTORIOUS Kingdom
Example response (shortened)
{
  "name": "NOTORIOUS Kingdom",
  "x": 582,
  "y": 1342,
  "rating": "Adult",
  "rating_slug": "adult",
  "online": true,
  "language": {
    "code": "en",
    "name": "English",
    "confidence": 0.47,
    "source": "name"
  },
  "language_from_name": null,
  "avatars": 101,
  "points": [
    {
      "x": 32,
      "y": 16,
      "count": 1
    },
    {
      "x": 32,
      "y": 128,
      "count": 1
    }
  ],
  "water_height": 0,
  "map_image": "https://secondlife-maps-cdn.akamaized.net/map-1-582-1342-objects.jpg",
  "slurl": "https://maps.secondlife.com/secondlife/NOTORIOUS%20Kingdom/128/128/25",
  "viewer_link": "secondlife:///app/teleport/NOTORIOUS%20Kingdom/128/128/25",
  "center_parcel": null,
  "for_sale": [],
  "history": [
    {
      "when": "2026-10-09T02:41:06.624085Z",
      "avatars": 25
    },
    {
      "when": "2026-10-09T12:14:20.680107Z",
      "avatars": 99
    }
  ],
  "by_hour": [
    {
      "hour": 0,
      "average": null,
      "samples": 0
    },
    {
      "hour": 1,
      "average": null,
      "samples": 0
    }
  ],
  "events": [],
  "timezone": "America/Los_Angeles"
}
GET /api/land

Parcels for sale with a public price.

ParameterDescription
price_min, price_maxPrice in L$
area_min, area_maxArea in m²
ppm_min, ppm_maxPrice per m²
ratinggeneral, moderate or adult
sortppm (default), price, area, region or name
dirasc (default) or desc
pagePage number, 50 results per page
Try it: /api/land?rating=general&sort=price
Example response (shortened)
{
  "filters": {
    "price_min": null,
    "price_max": null,
    "area_min": null,
    "area_max": null,
    "ppm_min": null,
    "ppm_max": null,
    "rating": "",
    "sort": "ppm",
    "dir": "asc",
    "page": 1
  },
  "total": 4247,
  "page": 1,
  "pages": 85,
  "items": [
    {
      "id": "e1b4b3f1-7228-3c30-3521-d0b9da568410",
      "name": "Want OCEANFRONT? www.pansland.com/oceanfront  ",
      "region": "Kanaloa",
      "rating": "Moderate",
      "rating_slug": "moderate",
      "price": 788,
      "area": 2048,
      "price_per_m2": 0.384765625,
      "price_changed": true,
      "language": null,
      "x": 241,
      "y": 238,
      "slurl": "https://maps.secondlife.com/secondlife/Kanaloa/241/238/25"
    },
    {
      "id": "bf1b1b89-9849-4f35-51ae-5da1eca6070e",
      "name": ".:: SCENIC BORDER SCREENS for LAND and HOME  - Premium Quality ",
      "region": "Kanaloa",
      "rating": "Moderate",
      "rating_slug": "moderate",
      "price": 154,
      "area": 400,
      "price_per_m2": 0.385,
      "price_changed": true,
      "language": {
        "code": "en",
        "name": "English",
        "source": "name"
      },
      "x": 73,
      "y": 181,
      "slurl": "https://maps.secondlife.com/secondlife/Kanaloa/73/181/25"
    }
  ]
}
GET /api/map

Map layers for a bounding box, in map grid units (one unit = one region).

ParameterDescription
layerregions (rating of each region), sale (parcels for sale) or heat (anonymous avatar dots)
xmin, xmax, ymin, ymaxBounding box. Up to 4,000 regions per request; zoom in if truncated is true.
Try it: /api/map?layer=regions&xmin=990&xmax=1010&ymin=990&ymax=1010
GET /api/world

Every online region in one compact array, handy for drawing the whole grid. points is flat: x, y, rating (0 general, 1 moderate, 2 adult, 3 offline), avatars, repeated.

Try it: /api/world
Example response (shortened)
{
  "xmin": 66,
  "xmax": 1821,
  "ymin": 118,
  "ymax": 2021,
  "view": {
    "xmin": 427,
    "xmax": 1819,
    "ymin": 884,
    "ymax": 1656
  },
  "fields": [
    "x",
    "y",
    "rating",
    "avatars"
  ],
  "points": [
    1821,
    1194,
    2,
    0,
    1821,
    1193,
    2,
    0
  ]
}