Index: src/wp-includes/class-oembed.php
===================================================================
--- src/wp-includes/class-oembed.php	(revision 38732)
+++ src/wp-includes/class-oembed.php	(working copy)
@@ -47,6 +47,15 @@
 	private $compat_methods = array( '_fetch_with_format', '_parse_json', '_parse_xml', '_parse_body' );
 
 	/**
+	 * Regex used to handle Amazon oEmbed requests.
+	 *
+	 * @since  4.7.0
+	 * @access public
+	 * @var string
+	 */
+	public static $oembed_amazon_format = '#https?://([a-z0-9-]+\.)?amazon\.(com|co\.uk|de|fr|it|es|co\.jp|cn|com\.au|in|com\.mx|com\.br|ca|nl|ru)/.*#i';
+
+	/**
 	 * Constructor.
 	 *
 	 * @since 2.9.0
@@ -108,6 +117,14 @@
 			'#https?://www\.facebook\.com/notes/.*#i'             => array( 'https://www.facebook.com/plugins/post/oembed.json/',        true  ),
 			'#https?://www\.facebook\.com/.*/videos/.*#i'         => array( 'https://www.facebook.com/plugins/video/oembed.json/',       true  ),
 			'#https?://www\.facebook\.com/video\.php.*#i'         => array( 'https://www.facebook.com/plugins/video/oembed.json/',       true  ),
+			self::$oembed_amazon_format                           => array( 'https://read.amazon.com/kp/api/oembed',                     true  ),
+			'#https?://(www\.)?a.co/.*#i'                         => array( 'https://read.amazon.com/kp/api/oembed',                     true  ),
+			'#https?://(www\.)?amz.onl/.*#i'                      => array( 'https://read.amazon.com/kp/api/oembed',                     true  ),
+			'#https?://(www\.)?amzn.to/.*#i'                      => array( 'https://read.amazon.com/kp/api/oembed',                     true  ),
+			'#https?://(www\.)?amzn.eu/.*#i'                      => array( 'https://read.amazon.co.uk/kp/api/oembed',                   true  ),
+			'#https?://(www\.)?amzn.in/.*#i'                      => array( 'https://read.amazon.in/kp/api/oembed',                      true  ),
+			'#https?://(www\.)?amzn.asia/.*#i'                    => array( 'https://read.amazon.com.au/kp/api/oembed',                  true  ),
+			'#https?://(www\.)?z.cn/.*#i'                         => array( 'https://read.amazon.cn/kp/api/oembed',                      true  ),
 		);
 
 		if ( ! empty( self::$early_providers['add'] ) ) {
@@ -181,6 +198,13 @@
 		 * | Twitter      | twitter.com/user      |      Yes       | 4.7.0     |
 		 * | Twitter      | twitter.com/likes     |      Yes       | 4.7.0     |
 		 * | Twitter      | twitter.com/lists     |      Yes       | 4.7.0     |
+		 * | Amazon Kindle| a.co                  |      Yes       | 4.7.0     |
+		 * | Amazon Kindle| amzn.onl              |      Yes       | 4.7.0     |
+		 * | Amazon Kindle| amzn.to               |      Yes       | 4.7.0     |
+		 * | Amazon Kindle| amzn.eu               |      Yes       | 4.7.0     |
+		 * | Amazon Kindle| amzn.in               |      Yes       | 4.7.0     |
+		 * | Amazon Kindle| amzn.asia             |      Yes       | 4.7.0     |
+		 * | Amazon Kindle| z.cn                  |      Yes       | 4.7.0     |
 		 *
 		 * No longer supported providers:
 		 *
@@ -201,6 +225,10 @@
 		 */
 		$this->providers = apply_filters( 'oembed_providers', $providers );
 
+		// Route Amazon URLs to the correct endpoint based on their TLD.
+		add_filter( 'oembed_fetch_url', array( $this, '_match_amazon_tld' ), 10, 2 );
+
+
 		// Fix any embeds that contain new lines in the middle of the HTML which breaks wpautop().
 		add_filter( 'oembed_dataparse', array($this, '_strip_newlines'), 10, 3 );
 	}
@@ -690,4 +718,62 @@
 
 		return str_replace( $tokens, $pre, $stripped );
 	}
+
+	/**
+	 * Route Amazon URLs to the correct endpoint based on their TLD.
+	 *
+	 * Checks if the given URL is an Amazon URL, and if so, alters the
+	 * provider's subdomain and TLD to match the URL's TLD.
+	 *
+	 * These transformations are applied to the oEmbed endpoint served by
+	 * one of the read.amazon.com regionalized domains, which services all
+	 * *.amazon.* URLs for the corresponding region.
+	 *
+	 * This method ensures that oEmbed requests for different Amazon
+	 * marketplaces (.com, .de, .jp, etc) are routed to the correct oEmbed
+	 * endpoint for those marketplaces.
+	 *
+	 * @since  4.7.0
+	 * @access public
+	 *
+	 * @param string $provider The URL to the default oEmbed provider.
+	 * @param string $url      The URL to the content that is desired to be embedded.
+	 * @return string          The URL to the oEmbed provider.
+	 */
+	public function _match_amazon_tld( $provider, $url ) {
+		if ( 1 !== preg_match( self::$oembed_amazon_format, $url, $matches ) ) {
+			return $provider;
+		}
+
+		$tld = $matches[2];
+		switch ( $tld ) {
+			case 'de':
+				$subdomain = 'lesen';
+				break;
+			case 'fr':
+				$subdomain = 'lire';
+				break;
+			case 'it':
+				$subdomain = 'leggi';
+				break;
+			case 'es':
+			case 'com.mx':
+				$subdomain = 'leer';
+				break;
+			case 'com.br':
+				$subdomain = 'ler';
+				break;
+			case 'nl':
+				$subdomain = 'lezen';
+				break;
+			default:
+				$subdomain = 'read';
+		}
+
+		return preg_replace(
+			'#^https://read.amazon.com/#',
+			sprintf( 'https://%s.amazon.%s/', $subdomain, $tld ),
+			$provider
+		);
+	}
 }
Index: tests/phpunit/tests/oembed.php
===================================================================
--- tests/phpunit/tests/oembed.php	(revision 38732)
+++ tests/phpunit/tests/oembed.php	(working copy)
@@ -801,6 +801,12 @@
 					'https://www.facebook.com/video.php?v=317622575398',
 				),
 			),
+			array(
+				$providers['amazon'],
+				array(
+					'https://read.amazon.com/kp/embed?asin=B00Y7WCHQW&reshareId=06R3BYY9AN8CQ15Q6FTB&reshareChannel=system',
+				),
+			),
 		);
 	}
 
