/api/stats
Totals, regions and avatars by rating, avatars per scan, new and gone regions per week, and recent changes.
Try it: /api/stats
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.
curl "https://inworldmap.com/api/search?q=beach&rating=general"
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.general, moderate, adult (plus offline for regions that are on the map but down).source: description (from the parcel text) or name (from the name only, weaker).page and return total, page and pages.{"error": "…"}./api/stats
Totals, regions and avatars by rating, avatars per scan, new and gone regions per week, and recent changes.
Try it: /api/stats/api/home
Totals, latest scan and the busiest regions right now.
Try it: /api/home/api/search
Search regions and parcels by name or description (typo tolerant). Without q, lists every online region.
| Parameter | Description |
|---|---|
| q | Text to search. Leave empty to list all regions. |
| rating | general, moderate or adult |
| lang | Likely language code: en, pt, es, fr, de, it… |
| sort | busiest (default) or name. Only when q is empty. |
| page | Page number, 20 results per page |
{
"q": "beach",
"rating": "",
"language": "",
"total": 420,
"page": 1,
"pages": 21,
"items": [
{
"type": "parcel",
"name": "Beach",
"region": "Miniard",
"rating": "Moderate",
"rating_slug": "moderate",
"language": null,
"language_name": null,
"language_source": null,
"language_from_name": null,
"language_from_name_name": null,
"avatars": 0,
"online": true,
"for_sale": false,
"snippet": "",
"x": 84,
"y": 4
},
{
"type": "region",
"name": "Beach Bay",
"region": "Beach Bay",
"rating": "Moderate",
"rating_slug": "moderate",
"language": "en",
"language_name": "English",
"language_source": "description",
"language_from_name": null,
"language_from_name_name": null,
"avatars": 0,
"online": true,
"for_sale": false,
"snippet": "",
"x": 128,
"y": 128
}
]
}
/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.
| Parameter | Description |
|---|---|
| name | Region name (case insensitive), URL encoded |
{
"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"
}
/api/land
Parcels for sale with a public price.
| Parameter | Description |
|---|---|
| price_min, price_max | Price in L$ |
| area_min, area_max | Area in m² |
| ppm_min, ppm_max | Price per m² |
| rating | general, moderate or adult |
| sort | ppm (default), price, area, region or name |
| dir | asc (default) or desc |
| page | Page number, 50 results per page |
{
"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"
}
]
}
/api/land/{id}
One parcel and its price at every scan.
| Parameter | Description |
|---|---|
| id | Parcel UUID (from /api/land) |
/api/map
Map layers for a bounding box, in map grid units (one unit = one region).
| Parameter | Description |
|---|---|
| layer | regions (rating of each region), sale (parcels for sale) or heat (anonymous avatar dots) |
| xmin, xmax, ymin, ymax | Bounding box. Up to 4,000 regions per request; zoom in if truncated is true. |
/api/region-at
Name of the region at a map position.
| Parameter | Description |
|---|---|
| x, y | Map grid position |
/api/languages
Likely languages with region counts and the busiest regions of each.
Try it: /api/languages/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{
"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
]
}
/api/random
A random online region. Never cached.
Try it: /api/random