OpenDiveMap

Documentation

Introduction

OpenDiveMap is an open database of dive sites around the world. Every site is a GeoJSON point with structured metadata — location, depth, environment, topology, entry type, region, and sea — served over a simple REST API with no authentication required.

The data is community-driven and version-controlled: every edit is tracked, and previous versions of any site can be retrieved at any time.

Key concepts

GeoJSON + OGC API Features

All API responses follow RFC 7946 with OGC API - Features pagination metadata. A single site is a Feature, a list of sites is a FeatureCollection with numberMatched, numberReturned, and links. Drop the response directly into MapLibre, Leaflet, or any GeoJSON-compatible tool.

Typed fields + flexible tags

Core attributes (name, environment, topologies, entry, max_depth, sea_mrgid) are typed columns you can filter on. Additional objective metadata — local names — lives in a flexible tags JSON object. Sea uses Marine Regions MRGIDs. See the Schema for the full reference.

Version history

Every update to a dive site is automatically snapshotted. You can retrieve the full edit history of any site via GET /sites/:id/history.

Quick start

Fetch all dive sites with a single request:

Request
curl "https://api.opendivemap.com/v1/sites"

You'll get back a GeoJSON FeatureCollection:

Response
{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [-110.3981, 24.2156]
      },
      "properties": {
        "id": "a7x3km",
        "name": "El Bajo Seamount",
        "country_code": "MX",
        "country_name": "Mexico",
        "sea_mrgid": 4314,
        "sea_name": "Gulf of California",
        "environment": "ocean",
        "topologies": ["pinnacle"],
        "max_depth": 40,
        "entry": "boat",
        "tags": { "names_es": ["El Bajo", "El Bajito"] }
      }
    },
    ...
  ],
  "numberMatched": 4,
  "numberReturned": 4,
  "links": [
    { "rel": "self", "href": "...", "type": "application/geo+json" }
  ]
}

Try it

Hit the API right now. Click "Try it" to make a live request.

GET /sites
GET /sites?country=MX&entry=boat

Endpoints

See the full API Reference for parameters, response codes, and multi-language examples.

Next steps

Schema — Learn about the data model, field types, and the tags vocabulary.

API Reference — Full endpoint documentation with request/response examples in cURL, JavaScript, and Python.