OpenStreetMap Planet Files
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.
By entering your email and clicking Subscribe, you agree to receive the Signal Lab weekly email from Quantum Data Technologies Ltd., 3200-650 West Georgia Street, Vancouver, BC V6B 4P7, Canada (signal-lab@qdt.ai). You can unsubscribe at any time: reply "unsubscribe" to any email or write to signal-lab@qdt.ai. See our Privacy Policy.
Use in your agent
Load an OSM minute diff into pandas and Parquet. Checked against the provider's documentation on Nov 1, 2026.
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
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.
"""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
- https://wiki.openstreetmap.org/wiki/Planet.osm: “Planet files are very large (tens of GBs) so please check the size before starting to download.”
- https://wiki.openstreetmap.org/wiki/Planet.osm: “A daily diff is generally about 40-80 MB, but can easily grow to 300-400 MB (both compressed) in exceptional cases.”
- https://www.openstreetmap.org/copyright: “You are free to copy, distribute, transmit and adapt our data,”
- https://osmfoundation.org/wiki/Licence/Attribution_Guidelines: “The historical forms of attribution “© OpenStreetMap contributors” or “© OpenStreetMap” are acceptable.”
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