Next free-source hunt
We check for new free data every weekday.
Datasets / OSINT
planet.openstreetmap.org/

OpenStreetMap Planet Files

Freeauth: noneODbL-1.0#osint#geospatial#real-time#historical-data#alt-data✓ verified Nov 1, 2026

OpenStreetMap Planet Files

Complete OpenStreetMap database snapshots as compressed XML and PBF, plus full-history files, changesets and minutely, hourly and daily replication diffs. Nodes, ways and relations carry geometry, tags, versions, timestamps and changeset metadata; downloads need no account or key.

Required Attribution:

Acceptable form: "© OpenStreetMap contributors". Also make clear that the data is available under the Open Database License.

Coverage

Worldwide weekly snapshots are available back to April 2006, with minutely, hourly and daily diffs between releases. On 2026-11-01, the latest PBF was 89 GB and the compressed XML planet was 167 GB; the weekly files had been created three days earlier.

Verdict

A broad geospatial signal for roads, buildings, points of interest, land use and mapped infrastructure worldwide. Coverage, tagging and update quality vary by place and contributor activity, so absence of a feature is not evidence that it does not exist. Full snapshots are very large and arrive weekly; replication diffs reduce lag but require ordered state management. Public use must follow ODbL attribution and database share-alike requirements.

Get the free weekly email

Free weekly email of newly verified free data. Unsubscribe by emailing us.

Use in your agent

Load an OSM minute diff into pandas and Parquet. Checked against the provider's documentation on Nov 1, 2026.

Raw skill file (/skills/openstreetmap-planet.md)Also in our MCP server: call get_ingestion_skill with {"slug": "openstreetmap-planet"}.

Access

  • No account or key. Replication state and compressed minute diffs are public downloads.
  • The minute-diff example is a small incremental slice; initial full-database replication still requires a planet snapshot.

Request

bash
curl -O 'https://planet.openstreetmap.org/replication/minute/007/354/232.osc.gz'

Format

Gzip-compressed OSM change XML with create, modify and delete groups containing node, way and relation elements. Elements include IDs, versions, timestamps, changesets, optional coordinates and nested tags or members.

Load into pandas and Parquet

Needs Python 3 with requests, pandas and pyarrow.

python
"""Latest OpenStreetMap minute replication diff -> pandas -> Parquet."""
import gzip
import xml.etree.ElementTree as ET
import requests
import pandas as pd

BASE = "https://planet.openstreetmap.org/replication/minute"
HEADERS = {"User-Agent": "SignalLabCheck/1.0"}
state = requests.get(f"{BASE}/state.txt", headers=HEADERS, timeout=30)
state.raise_for_status()
sequence = int(next(line.split("=", 1)[1] for line in state.text.splitlines()
                    if line.startswith("sequenceNumber=")))
path = f"{sequence:09d}"
diff_url = f"{BASE}/{path[:3]}/{path[3:6]}/{path[6:]}.osc.gz"
r = requests.get(diff_url, headers=HEADERS, timeout=60)
r.raise_for_status()
root = ET.fromstring(gzip.decompress(r.content))
rows = []
for group in root:
    action = group.tag if group.tag in {"create", "modify", "delete"} else "unknown"
    for obj in group:
        rows.append({
            "action": action, "type": obj.tag, "id": int(obj.attrib["id"]),
            "version": int(obj.attrib.get("version", 0)),
            "timestamp": obj.attrib.get("timestamp"), "lat": obj.attrib.get("lat"),
            "lon": obj.attrib.get("lon"), "changeset": obj.attrib.get("changeset"),
            "tag_count": sum(child.tag == "tag" for child in obj)
        })
df = pd.DataFrame(rows)
df["timestamp"] = pd.to_datetime(df["timestamp"], utc=True)
df[["lat", "lon"]] = df[["lat", "lon"]].apply(pd.to_numeric, errors="coerce")
df.to_parquet("osm_minute_diff.parquet", index=False)
print(len(df), "changed objects", "sequence", sequence,
      df["timestamp"].min().isoformat(), "to", df["timestamp"].max().isoformat())

Run by us on 2026-11-01 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 3502 changed objects sequence 7354232 2026-11-01T17:09:11+00:00 to 2026-11-01T17:10:10+00:00

Limits

  • Download rate limit: Not stated.
  • The checked full snapshot was 89 GB as PBF and 167 GB as compressed XML.
  • Weekly snapshots, daily diffs and hourly or minutely diffs have different lag and storage costs.

Quirks

  • Apply replication sequences in order and persist the last committed sequence; skipping or replaying a diff can make a local database inconsistent.
  • Ways reference node IDs and relations reference nodes, ways or other relations, so a flat object table is only a staging representation.
  • Delete records and some non-node objects have no latitude or longitude; preserve action, type, ID and version.
  • The full-history files include older versions and deleted objects; the latest planet snapshot represents current data.

Terms and attribution

  • Current OpenStreetMap planet data is licensed under ODbL 1.0.
  • Public use requires OpenStreetMap attribution and notice of the Open Database License.
  • ODbL share-alike conditions can apply to altered or derivative databases; older pre-12 September 2012 files use CC BY-SA 2.0.

Sources

Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer