Obtener datos de Search Console día a día con php

Publicado por Lino Uruñuela el 21 de agosto del 2015

El oto día Google anunció lo que muchos SEOs veníamos pidiendo desde hace años, una API decente para acceder a los datos que nos da Google Search Console.

Anteriormente se hacía la extracción de estos datos emulando un acceso normal de usuario y se extraían esos datos, pero era muy engorroso y muy poco práctico. Pero esto ha cambiado y Google por fin nos da acceso mediante una API.

Hoy vamos a ver cómo extraer esos datos mediante la API desde PHP y guardar esos datos en una base de datos, yo he usado MongoDB, y es que por fin estoy migrando todas mis herramientas de MySql a MongoDB, la diferencia es abismal :)

En este post no explicaré nada de MongoDB simplemente el cómo extraer los datos con PHP, así luego cualquiera podrá usarlo y guardarlos dónde y como quiera.

Limitaciones de la API

Una de las cosas que siempre echamos de menos en Google Search Console (GSC) es que solo nos ofrece 90 días de "consultas de búsqueda" y muchas veces esto puede ser una putada gran pega ya que para muchas cosas se nos queda corto este intervalo de tiempo.

Por ello mi primera recomendación es guardar los datos en nuestro propio sistema (en mi caso MongoDB) e ir actualizándolo día a día, de esta manera podremos tener un histórico completo.

Activar el uso de la API

Lo primero que debemos hacer crear un proyecto en la consola y después activar la API para ese proyecto desde la Consola de APIs de Google, dónde activaremos la API "Google Search Console"

API Google Search Console

El segundo paso una vez activada es elegir el tipo de acceso que queremos, en nuestro caso será una "cuenta de servicio" ya que lo que queremos es que pueda tener acceso sin presencia humana, es decir, sin tener que meter usuario y contraseña de Google para identificarnos cada vez que se ejecute, sino que pueda acceder sin ninguna intervención.

API Google Search Console


Y elegiremos como tipo de clave un fichero P12

API Google Search Console

Nos descargamos nuestro fichero y lo guardamos en la misma carpeta donde ejecutaremos el script.

Ahora veremos que nos ha creado un usuario de correo muy raro y largo

API Google Search Console

Este usuario tendremos que darle de alta en GSC y darle permiso de lectura en nuestro dominio dentro de GSC

API Google Search Console

Una vez tengamos esto hecho, ya podemos centrarnos en el código.

Código PHP

Como en otras APIs ofrecidas por Google haremos el acceso mediante la librería ofrecida por el propio Google y que te puedes descargar desde aquí. Y también nos ofrece una guía de cómo usarla.

Una vez la descarguemos tendremos que incluirla en nuestro código, si la descargamos en el mismo directorio del script sería

		require_once 'google-api-php-client/src/Google/autoload.php';
		

Ahora vamos a obtener las credenciales para el acceso

		$key_file_location ='Fichero-c36f200a8499.p12'; //Fichero P12 
		$service_account_name = 'Nombre del Proyecto'; //Nombre del Proyecto en la consola de APis de Google 
		$client_id = 'XXXX-XCXXX.apps.googleusercontent.com';
		$Email_address = 'XXXX-XCXXX@developer.gserviceaccount.com';	 	
		
		$client = new Google_Client();	 	
		$client->setApplicationName("Nombre del Proyecto");
		$key = file_get_contents($key_file_location);	 
		$scopes ="https://www.googleapis.com/auth/webmasters.readonly"; 	
		$cred = new Google_Auth_AssertionCredentials(	 
			$Email_address,	 	 
			array($scopes),	 	
			$key	 	 
			);	 	
		$client->setAssertionCredentials($cred);
		

Obtenidas ya las credenciales llamamos al servicio Webmasters que nos proporciona Google

		$webmastersService = new Google_Service_Webmasters($client);
		$searchanalytics = $webmastersService->searchanalytics;
		$request = new Google_Service_Webmasters_SearchAnalyticsQueryRequest;
		

Ahora vamos a indicar de que fechas queremos obtener los datos, pensando en ejecutar este script día a día, la fecha final y la inicial serán la misma. Y teniendo en cuenta que GSC ofrece como datos más recientes los tres días a la fecha de hoy nos queda

		$fecha_Inicial = date("Y-m-d",strtotime('-3 day',strtotime(date("Y-m-d"))));
		$fecha_Final = date("Y-m-d",strtotime('-3 day',strtotime(date("Y-m-d"))));
		

Recorremos cada uno de los resultados y los vamos introduciendo en nuestra base de datos, en mi caso en MongoDB

		while ($fecha_Inicial<=	$fecha_Final){
			$request->setStartDate($fecha_Inicial);
			$request->setEndDate($fecha_Inicial);
			$request->setDimensions(["date","query","page","country","device"]);
			$qsearch = $searchanalytics->query($miDominio, $request); 
			$rows2 = $qsearch->getRows();
			foreach($rows2 as $fila){
				$kwFecha = $fila["keys"][0];
				$kwQuery = $fila["keys"][1];
				$kwPage = $fila["keys"][2];
				$kwCountry = $fila["keys"][3];
				$kwDevice = $fila["keys"][4];
				$kwClicks = $fila["clicks"];
				$kwCtr = round($fila["ctr"],2);
				$kwImpresiones = $fila["impressions"];
				$kwPosicion = round($fila["position"],2);
				$MongoFecha = new MongoDate(strtotime($kwFecha." 02:00:00"));
				$datos = array("GSCId"=>getNextSequence("GSCId"),"fecha"=>$MongoFecha,"kw"=>$kwQuery,"page"=>$kwPage,"impresiones"=>$kwImpresiones,"clicks"=>$kwClicks,"ctr"=>$kwCtr,"posicion"=>$kwPosicion,"country"=>$kwCountry,"device"=>$kwDevice);
				$collection->insert($datos);
			}
			$varFecha_Inicial = new DateTime($fecha_Inicial);
			$varFecha_Inicial=date_add($varFecha_Inicial, date_interval_create_from_date_string('1 days'));
			$fecha_Inicial=$varFecha_Inicial->format("Y-m-d");	
			$contador_dias++;
		}
		

Y con esto ya estaremos metiendo los datos que nos da la API del día más reciente a hoy, es decir, los datos de hace tres días.

API Google Search Console


Como vemos obtenemos todas las dimensiones posibles,  para que los datos sean los más exactos posibles. Luego ya en nuestro sistema podremos hacer las consultas tal como queramos en cada momento, agrupando, sumando lo que queramos.

En próximos posts veremos como dar todavía más valor a estos datos :)

 




Posts anteriores en Google Search Console


    gg
  • Martes 11 de Marzo del 2014

Publicado el 11 de marzo del 2014 by Lino UruñuelaErrioxa Hace tiempo que no escribo con frecuencia, pero eso está cambiando! Para motivarme voy a comenzar una serie de post donde explicar cómo usar distintas APIs de Google, y hoy vamos a comenzar con la API de Webmaster Too

Seguir leyendo
    gg
  • Lunes 30 de Noviembre del -0001

Publicado el 10 de enero del 2014 by Lino Uruñuela Como ayer comenté, en WMT ha habido algún cambio en cuanto a la exactitud de los datos que nos arroja sobre nuestra web, concretamente sobre las Consu

Seguir leyendo
    gg
  • Jueves 09 de Enero del 2014

Publicado el 9 de enero del 2014 by Lino Uruñuela   Ayer cuando me reconecté después de mi mes sabático una de las cosas que hice fue ir a WMT para comprobar si había ocurrido algo en alguno de los sites. Cuando fui a "Consultas de búsqueda&qu

Seguir leyendo
yy ¿Google disavow link o herramienta para despenalización?
Publicado el 21 de octubre del 2012 ACTUALIZACIÓN: Este experimento ha sido un total fracaso por mi parte ya que tengo un puñetero canonical en la landing page... así que no vale para nada. Volveré a repetirlo en cuanto vuelva de VACACIONES!!!! Esta sema

Seguir leyendo
    gg
  • Lunes 30 de Noviembre del -0001

El otro día Google anunció que el formato de los sitemaps de Google News han cambiado y que tenemos 6 meses para modificarlos. Si aún tienes el formato viejo te salrá un icono de advertencia en webmsater tools, pero según Google hasta dentro de 6 meses seguir&aa

Seguir leyendo
    gg
  • Lunes 17 de Agosto del 2009

Publicado el 17 de agosto del 2009 Google ha realizado otra mejora en Webmaster Tools, se trata del organizador de parámetros y sirve para ignorar determinados paramatros. Está en "Organización -> Organización de parámetros" Por ejemplo si tenemo

Seguir leyendo
    gg
  • Martes 01 de Septiembre del 2009

Publicado el 1 de septiembre del 2009 Últimamente Google le está dando bastante importancia a los microformatos (en cuanto a nombrarlos se dice, porque la verdad nadie hemos sido capaces de hacerlos funcionar) en alguno de sus servicios, como Google Maps, y sólo unas pocas we

Seguir leyendo
    gg
  • Miercoles 14 de Enero del 2009

Publicado el 14 de enero del 2009 Una de las cosas que más dolores de cabeza nos pueden dar las páginas web muy muy grandes es la de creación de sitemaps generales. En páginas web normales es relativamente sencillo crear un sitemaps mediante programación php + M

Seguir leyendo
    gg
  • Sábado 09 de Febrero del 2008

Publicado el viernes 29 de febrero del 2008 Google acaba de crear un gadget para poder ver los datos de la herrmaienta para webmasters Google WebMmaster Tools en la página personalizada de iGoogle. Así podrás ver sin entrar en la página de la herramienta los datos p

Seguir leyendo
    gg
  • Lunes 30 de Noviembre del -0001

Google hoy nos enseña un poco más de cómo indexa las páginas webs de nuestros sitios. Según Google los robots rastrean una página según estos factores: Porque ya conoce la página. Porque otras páginas enlazan con ella. Porqu

Seguir leyendo
    gg
  • Lunes 30 de Noviembre del -0001

Otra vez Google nos da el privilegio de ver más información sobre los enlaces externos hacia nuestra web dentro de Weebmaster Tool.Según dicen, y digo según dicen porque ahora la herramienta está petada y no muestra nada, las mejoras incluyen         &nbs

Seguir leyendo
    gg
  • Lunes 30 de Noviembre del -0001

Desde el Blog oficial de Google nos comunican que han hecho tres mejoras con respecto al sitemaps de Google. La primera es que está disponible en 18 idiomas La segunda y más novedosa es que podemos decir dónde está nuestro sitemap desde el archivo robots.txt añadiendo la siguiente lín

Seguir leyendo
    gg
  • Lunes 30 de Noviembre del -0001

Parece ser que Google se está poniendo muy serio con el webSpam de la red.Hoy mismo a sacado una nota a los webmaster diciendo cosas muy muy importantes de cara al futuro. Para hacer spamreport, hay dos modos uno, anónimo y otro especial para los webmaster que se puede ver desde Google Webma

Seguir leyendo

Últimos posts

Últimos comentarios


javier

Buenas , esto del onclik ha cambiado actuamente en algunas web que tengo las lee y sigue enlaces
Post: ¿Cómo ejecuta, interpreta e indexa Google el contenido cargado mediante javascript?

David Girona

Antes de Nada muchas gracias por la aportación. Estoy probando de poner en marcha este procedimiento y me surgen un par de dudas. En
Post: Cómo añadir el valor del meta Robots a Google Analytics via Google Tag Manager

Javier Espinoza

Gracias por la informacion!! Este tipo de blogs me parecen muy importantes, esto lo estudio en la universidad. gracias por la informacion. h
Post: Atacados por los .cn .cz .pl

juan

Hola Lino Uruñuela, una duda ¿aun funciona? porque no lo logro. Mira, en un index.php tengo este codigo: Camuflados
Post: Ofuscando enlaces para mejorar Link Juice

DUQUEredes

Google pasa del canonical bastante :-(
Post: Comprobando comportamiento de Google con meta canonical

Marinette

Gracias por la información!
Post: Nuevo Google Search Console ¿qué información nos ofrecerá?

Adolfo

Parece que a todo el mundo le ha gustado este artículo sexista y lleno de situaciones de agresión sexual y violencia de género, ya tendr
Post: Tipos de marketing

FDM

Hola, Lino: Genial el post, como siempre. Es genial contar con personas tan curiosas y que investigan al detalle el funcionamiento de Goo
Post: La segunda ola de indexación y cómo saber qué renderiza Google

Lino Uruñuela

@Cesar saltarse alguna orden del código es un falta de respeto!, que para algo lo hice :D No se les da muy bien esperar, su tiempo es or
Post: La segunda ola de indexación y cómo saber qué renderiza Google

César Aparicio

Hola Lino, Nos conocemos de películas como: Los de Google son muy frikis o Pasodobles y SEO. Mi cuestión es la siguiente: entiendo
Post: La segunda ola de indexación y cómo saber qué renderiza Google

Contacta

Lánzate y pregunta!


He leído y acepto la política de privacidad

Mecagoenlos.com te informa que los datos de carácter personal que nos proporciones rellenando el presente formulario serán tratados por Lino Uruñuela. como responsable de esta web.

La finalidad de la recogida y tratamiento de los datos personales que te solicitamos es para enviar un correo con los datos que introduzcas, sin guardarse en ninguna base de datos.

Legitimación: Al marcar la casilla de aceptación, estás dando tu legítimo consentimiento para que tus datos sean tratados conforme a las finalidades de este formulario descritas en la política de privacidad.

Como usuario e interesado te informamos que los datos que nos facilitas estarán ubicados en los servidores de Linode.com (proveedor de hosting de Mecagoenlos.com) cumpliendo la ley de protección de datos. Ver política de privacidad de Linode.com.

Podrás ejercer tus derechos de acceso, rectificación, limitación y suprimir los datos en info@mecagoenlos.com, así como el derecho a presentar una reclamación ante una autoridad de control. Más información aquí.