diff --git a/api/incubator/src/main/java/io/opentelemetry/api/incubator/propagation/EnvironmentGetter.java b/api/incubator/src/main/java/io/opentelemetry/api/incubator/propagation/EnvironmentGetter.java
new file mode 100644
index 00000000000..eba1e770c55
--- /dev/null
+++ b/api/incubator/src/main/java/io/opentelemetry/api/incubator/propagation/EnvironmentGetter.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright The OpenTelemetry Authors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package io.opentelemetry.api.incubator.propagation;
+
+import io.opentelemetry.context.propagation.TextMapGetter;
+import java.util.Collections;
+import java.util.Locale;
+import java.util.Map;
+import javax.annotation.Nullable;
+import javax.annotation.concurrent.Immutable;
+
+/**
+ * A {@link TextMapGetter} that extracts context from a map carrier, intended for use with
+ * environment variables.
+ *
+ *
Standard environment variable names are uppercase (e.g., {@code TRACEPARENT}, {@code
+ * TRACESTATE}, {@code BAGGAGE}). This getter translates keys to uppercase and replaces characters
+ * not allowed in environment variables (e.g., {@code .} and {@code -}) with underscores before
+ * looking them up in the carrier.
+
+ * @see Environment
+ * Variable Format Restrictions
+ */
+@Immutable
+public final class EnvironmentGetter implements TextMapGetter