diff --git a/site/docs/how-to-release.md b/site/docs/how-to-release.md
index eca2757c764e..bed1f1adc4c9 100644
--- a/site/docs/how-to-release.md
+++ b/site/docs/how-to-release.md
@@ -360,6 +360,7 @@ Once this is done, create a PR against the `javadoc` branch, similar to https://
Submit a PR, following the approach in https://github.com/apache/iceberg/pull/12242,
to update the Iceberg version, the links to the new version's documentation, and the release notes.
+Also bump `snapshotVersion` in `site/mkdocs.yml` to the next development version (the new release with its minor version incremented, suffixed with `-SNAPSHOT`) so the [nightly snapshots](nightly-snapshots.md) page stays current.
Once this PR is merged, the [`site-ci`](https://github.com/apache/iceberg/blob/main/.github/workflows/site-ci.yml)
GitHub Actions workflow is automatically triggered for any push to `main` that touches `docs/`, `site/`,
diff --git a/site/docs/multi-engine-support.md b/site/docs/multi-engine-support.md
index bdfe87123aa3..37caeaf8d18a 100644
--- a/site/docs/multi-engine-support.md
+++ b/site/docs/multi-engine-support.md
@@ -135,6 +135,6 @@ This allows the Iceberg support to evolve with the engine.
Projects such as [Trino](https://trino.io/docs/current/connector/iceberg.html) and [Presto](https://prestodb.io/docs/current/connector/iceberg.html) are good examples of such support strategy.
In this approach, an Iceberg version upgrade is needed for an engine to consume new Iceberg features.
-To facilitate engine development against unreleased Iceberg features, a daily snapshot is published in the [Apache snapshot repository](https://repository.apache.org/content/repositories/snapshots/org/apache/iceberg/).
+To facilitate engine development against unreleased Iceberg features, [nightly snapshots](nightly-snapshots.md) are published daily to the Apache snapshot repository.
If bringing an engine directly to the Iceberg main repository is needed, please raise a discussion thread in the [Iceberg community](community.md).
diff --git a/site/docs/nightly-snapshots.md b/site/docs/nightly-snapshots.md
new file mode 100644
index 000000000000..f2a4e3de1b3a
--- /dev/null
+++ b/site/docs/nightly-snapshots.md
@@ -0,0 +1,113 @@
+---
+title: "Nightly Snapshots"
+---
+
+
+# Nightly Snapshots
+
+Every night, Apache Iceberg publishes a snapshot of every module to the
+[Apache snapshot repository](https://repository.apache.org/content/repositories/snapshots/org/apache/iceberg/).
+These nightly snapshots let developers build and test against the latest unreleased
+changes on `main` before they are included in an official release.
+
+!!! warning "For Iceberg developers only"
+
+ Snapshots are **unreleased**, in-development builds. They are **not** an official
+ Apache release, may change or break at any time, and **must not be used in
+ production**. For production use, always depend on an official
+ [release](releases.md). Per the ASF
+ [release policy](https://apache.org/legal/release-policy#publication), unreleased
+ artifacts are intended only for developers who are actively participating in
+ Iceberg development.
+
+## Snapshot version
+
+Snapshots are published daily at 00:00 UTC under the version `{{ snapshotVersion }}`,
+which tracks the next unreleased version (the latest release with its minor version
+incremented). Browse the
+[snapshot repository listing](https://repository.apache.org/content/repositories/snapshots/org/apache/iceberg/)
+to see which modules and versions are available.
+
+## Usage
+
+Add the Apache snapshot repository to your build and depend on the `{{ snapshotVersion }}`
+version of the Iceberg modules you need. The examples below use `iceberg-core`; replace
+it with the artifacts your project requires, such as an engine runtime like
+`iceberg-spark-runtime-{{ sparkVersionMajor }}`.
+
+=== "Gradle"
+
+ In `build.gradle`:
+
+ ```gradle
+ repositories {
+ mavenCentral()
+ maven {
+ url = uri("https://repository.apache.org/content/repositories/snapshots")
+ }
+ }
+
+ dependencies {
+ implementation "org.apache.iceberg:iceberg-core:{{ snapshotVersion }}"
+ }
+ ```
+
+=== "Maven"
+
+ In `pom.xml`:
+
+ ```xml
+
+
+ apache-snapshots
+ https://repository.apache.org/content/repositories/snapshots
+
+ true
+
+
+
+
+
+
+ org.apache.iceberg
+ iceberg-core
+ {{ snapshotVersion }}
+
+
+ ```
+
+=== "sbt"
+
+ In `build.sbt`:
+
+ ```scala
+ resolvers += "Apache Snapshots" at "https://repository.apache.org/content/repositories/snapshots"
+
+ libraryDependencies += "org.apache.iceberg" % "iceberg-core" % "{{ snapshotVersion }}"
+ ```
+
+=== "Spark"
+
+ Pass the snapshot repository and a snapshot runtime to `spark-shell` (or
+ `spark-sql`, `pyspark`, or `spark-submit`):
+
+ ```sh
+ spark-shell \
+ --repositories https://repository.apache.org/content/repositories/snapshots \
+ --packages org.apache.iceberg:iceberg-spark-runtime-{{ sparkVersionMajor }}:{{ snapshotVersion }}
+ ```
diff --git a/site/mkdocs.yml b/site/mkdocs.yml
index e8d11687d6ee..3899b69120a5 100644
--- a/site/mkdocs.yml
+++ b/site/mkdocs.yml
@@ -112,6 +112,7 @@ markdown_extensions:
extra:
icebergVersion: '1.11.0'
+ snapshotVersion: '1.12.0-SNAPSHOT'
nessieVersion: '0.105.3'
flinkVersion: '2.1.0'
flinkVersionMajor: '2.1'
diff --git a/site/nav.yml b/site/nav.yml
index c5e9fa5ed0ba..9873c392a45e 100644
--- a/site/nav.yml
+++ b/site/nav.yml
@@ -98,6 +98,7 @@ nav:
- Project:
- Contributing: contribute.md
- Multi-engine support: multi-engine-support.md
+ - Nightly snapshots: nightly-snapshots.md
- Benchmarks: benchmarks.md
- Security: security.md
- How to release: how-to-release.md