diff --git src/wp-includes/class-oembed.php src/wp-includes/class-oembed.php
index 9790d26..732f57a 100644
--- src/wp-includes/class-oembed.php
+++ src/wp-includes/class-oembed.php
@@ -457,7 +457,14 @@ class WP_oEmbed {
 
 		$provider = add_query_arg( 'maxwidth', (int) $args['width'], $provider );
 		$provider = add_query_arg( 'maxheight', (int) $args['height'], $provider );
-		$provider = add_query_arg( 'url', urlencode($url), $provider );
+
+		//Only add the 'url' query variable if it is not already present:
+		//@see https://core.trac.wordpress.org/ticket/34335
+		$provider_parts = parse_url( $provider );
+		parse_str( $provider_parts['query'], $query_variables );
+		if ( ! isset ( $query_variables['url'] ) ) {
+			$provider = add_query_arg( 'url', urlencode( $url ), $provider );
+		}
 
 		/**
 		 * Filters the oEmbed URL to be fetched.
diff --git tests/phpunit/tests/oembed/wpOembed.php tests/phpunit/tests/oembed/wpOembed.php
index b7e6887..01d5ea6 100644
--- tests/phpunit/tests/oembed/wpOembed.php
+++ tests/phpunit/tests/oembed/wpOembed.php
@@ -69,4 +69,60 @@ class Tests_WP_oEmbed extends WP_UnitTestCase {
 		$this->assertTrue( false !== $this->pre_oembed_result_filtered );
 		$this->assertFalse( $actual );
 	}
+
+	/**
+	 * @ticket https://core.trac.wordpress.org/ticket/34335
+	 */
+	public function test_fetch_of_provider_with_url() {
+
+		$this->_provider_url = null;
+		add_filter( 'pre_http_request', array( $this, '_http_mock_response' ), 10, 3 );
+
+		//Discovered endpoint contains an url query variable, this should be used instead of the passed url
+		$this->oembed->fetch( 'discovered.com/provider/endpoint?url=discovered.com/post', 'original.url', array(
+			'discovered' => true
+		) );
+
+		remove_filter( 'pre_http_request', array( $this, '_http_mock_response' ) );
+
+		//Confirm that
+		$provider_parts = parse_url( $this->_provider_url );
+		parse_str( $provider_parts['query'], $query_variables );
+		$this->assertEquals( 'discovered.com/post', $query_variables['url'] );
+	}
+
+	/**
+	 * @ticket https://core.trac.wordpress.org/ticket/34335
+	 */
+	public function test_fetch_of_provider_without_url() {
+
+		$this->_provider_url = null;
+		add_filter( 'pre_http_request', array( $this, '_http_mock_response' ), 10, 3 );
+
+		//Discovered endpoint does not contain an url query variable, we should insert the passed url
+		$this->oembed->fetch( 'discovered.com/provider/endpoint', 'original.url', array(
+			'discovered' => true
+		) );
+
+		remove_filter( 'pre_http_request', array( $this, '_http_mock_response' ) );
+
+		//Confirm that
+		$provider_parts = parse_url( $this->_provider_url );
+		parse_str( $provider_parts['query'], $query_variables );
+		$this->assertEquals( 'original.url', $query_variables['url'] );
+	}
+
+	public function _http_mock_response( $response,  $request_args, $request_url ) {
+		$this->_provider_url = $request_url;
+		return array(
+			'headers'  => array(),
+			'body'     => '',
+			'response' => array(
+				'code'    => 200,
+				'message' => '',
+			),
+			'cookies'  => array(),
+			'filename' => false,
+		);
+	}
 }
