Nuestra Reporting API se utiliza para extraer información y métricas de tu cuenta de ContentKing. Entre los usos más comunes están conectar difrentes soluciones de software para agilizar la  elaboración de informes, y  la integración de ContentKing en tu portal de cliente.

Términos de uso de Reporting API

Al utilizar la Reporting API, aceptas los Términos de uso.

Recuperar tu token de Reporting API

Para usar la Reporting API necesitas el token de Reporting API de tu cuenta de ContentKing. Lo encontrarás en la sección de Cuenta, bajo la pestaña Ajustes de cuenta.

Encabezados de solicitud API

Cuando haces una solicitud necesitas enviar los siguientes encabezados de solicitud:

Authorization: token <place-your-API-token-here>
Content-Type: application/json

Nota: necesitas proporcionar el  “token” de cadena, seguido de un espacio y el token de API.

URL de Reporting API

La Reporting API de ContentKing está disponible en la siguiente URL:

https://api.contentkingapp.com/

Conseguir una lista de sitios web en tu cuenta

Envía la siguiente solicitud para conseguir una lista de los sitios web en tu cuenta:

GET /v1/websites

La respuesta será así:

200 OK
[
	{
		"id": "1-234",
		"app_url": "https://app.contentkingapp.com/websites/1-234/dashboard",
		"domain": "https://www.contentkingapp.com",
		"name": null,
		"page_capacity": 1000
	},
	{
		"id": "1-2345",
		"app_url": "https://app.contentkingapp.com/websites/1-2345/dashboard",
		"domain": "https://www.contentkingapp.de",
		"name": "ContentKing - DE",
		"page_capacity": 1000
	}
]

Conseguir una lista de alertas para un sitio web

Envía la siguiente solicitud para conseguir una lista de alertas para un sitio web determinado en tu cuenta:

GET /v1/websites/<website_id>/alerts

La respuesta será así:

200 OK
[
	{
		"id": "1",
		"app_url": "https://app.contentkingapp.com/websites/1-234/events?event=1",
		"date_last_updated": "2018-05-10T12:59:21+02:00",
		"date_opened": "2018-05-10T12:59:21+02:00",
		"name": "robots_txt_changed",
		"scope": "platform",
		"type": "warning"
	},
	{
		"id": "2",
		"app_url": "https://app.contentkingapp.com/websites/1-234/events?event=2",
		"date_last_updated": "2018-07-21T03:21:46+02:00",
		"date_opened": "2018-07-16T14:33:43+02:00",
		"name": "issue_opened.meta_information/title_missing",
		"scope": "pages",
		"type": "alert"
	}
]

Conseguir una lista de problemas de un sitio web

Envía la siguiente solicitud para conseguir una lista de problemas de un sitio web determinado en tu cuenta:

GET /v1/websites/<website_id>/issues

La respuesta será así:

200 OK
[
	{
		"name": "content_headings/h1_duplicate",
		"points_gained": 24,
		"points_to_gain": 0,
		"scope": "pages"
	},
	{
		"name": "xml_sitemap/missing",
		"points_gained": 10,
		"points_to_gain": 0,
		"scope": "platform"
	}
]

Conseguir una lista de segmentos de un sitio web

Envía la siguiente solicitud para conseguir una lista de segmentos de un sitio web determinado en tu cuenta:

GET /v1/websites/<website_id>/segments

La respuesta será así:

200 OK
[
	{
		"id": "1",
		"color": "72c035",
		"label": "Indexable",
		"shortcode": "I"
	},
	{
		"id": "2",
		"color": "9ea6af",
		"label": "Non-indexable",
		"shortcode": null
	}
]

Conseguir estadísticas de un sitio web o segmento de un sitio web

Envía la siguiente solicitud para conseguir estadísticas de un sitio web determinado en tu cuenta:

GET /v1/websites/<website_id>/statistics/website

O envía la siguiente solicitud para solicitar las estadísticas de un segmento determinado dentro del sitio web:

GET /v1/websites/<website_id>/statistics/segment:<segment_id>

La respuesta será así:

200 OK
{
	"health": 969,
	"number_of_issues": 15,
	"number_of_urls":
	{
		"missing": 2,
		"page": 9,
		"redirect": 4,
		"server_error": 0,
		"unreachable": 0
	}
}

Errores específicos de la solicitud de estadísticas

404 Not found
{
	"error": "No statistics found for given scope"
}

Esta respuesta significa que las estadísticas solicitadas (del sitio web o segmento) no están disponibles en este momento. Es posible que estén disponibles más tarde.

Conseguir datos de una página determinada dentro de un sitio web

Envía la siguiente solicitud para conseguir información de un sitio web determinado en tu cuenta:

GET /v1/websites/<website_id>/pages?url=<url>

Respuesta para una página

La respuesta para una página existente (la URL devuelve un código de estado HTTP 200) sería así:

200 OK
{
	"url": "https://www.contentkingapp.com/",
	"is_https": true,
	"ga_average_time": 10,
	"ga_bounce_rate": 5,
	"ga_date_range":
	{
		"since": "2018-05-09",
		"until": "2018-08-07"
	},
	"ga_page_value": 0,
	"ga_page_views": 1,
	"ga_unique_page_views": 2,
	"gsc_clicks": 0,
	"gsc_ctr": 0,
	"gsc_date_range":
	{
		"since": "2018-05-09",
		"until": "2018-08-07"
	},
	"gsc_impressions": 4,
	"gsc_position": 5,
	"health": 935,
	"is_disallowed_in_robots_txt": false,
	"is_indexable": true,
	"is_indexable_due_to_meta_robots": "yes",
	"is_indexable_due_to_x_robots_tag": "yes",
	"is_in_sitemap": true,
	"relevance": 8.72,
	"status_code": 200,
	"time_document_download": 183,
	"type": "page",
	"content": [
		{
			"type": "canonical",
			"content": null
		},
		{
			"type": "title",
			"content": "Blog"
		},
		{
			"type": "meta_description",
			"content": "some meta description"
		},
		{
			"type": "h1",
			"content": "ContentKing"
		},
		{
			"type": "h2",
			"content": "Pricing"
		},
		{
			"type": "meta_robots",
			"content": null
		},
		{
			"type": "open_graph_description",
			"content": null
		},
		{
			"type": "open_graph_image",
			"content": null
		},
		{
			"type": "open_graph_title",
			"content": null
		},
		{
			"type": "open_graph_type", 
			"content": null
		},
		{
			"type": "open_graph_url",
			"content": null
		},
		{
			"type": "twitter_card",
			"content": null
		},
		{
			"type": "twitter_site",
			"content": null
		},
		{
			"type": "google_analytics",
			"content": "UA-XXXXXX-X"
		}
	],
	"custom_elements": {
		"author": "Josie Walters",
		"date_published": "12 August 2019"
	},
	"schema_org": [],
	"segments":	[
		"1",
		"3"
	],
	"app_url": "https://app.contentkingapp.com/websites/1-234/pages/3",
	"open_issues": [
		{
			"name": "open_graph/missing"
		},
		{
			"name": "twitter_cards/missing"
		},
		{
			"name": "meta_information/meta_description_incorrect_length"
		},
		{
			"name": "meta_information/title_incorrect_length"
		}
	]
}

Respuesta para una redirección

La respuesta para una redirección (la URL devuelve un código de estado HTTP 3xx) sería así:

200 OK
{
	"url": "https://www.contentkingapp.com/this-redirects",
	"is_https": true,
	"gsc_clicks": 9,
	"gsc_ctr": 5,
	"gsc_date_range":
	{
		"since": "2018-05-09",
		"until": "2018-08-07"
	},
	"gsc_impressions": 1,
	"gsc_position": 4,
	"is_disallowed_in_robots_txt": false,
	"is_indexable": false,
	"is_indexable_due_to_meta_robots": "not_applicable",
	"is_indexable_due_to_x_robots_tag": "not_applicable",
	"is_in_sitemap": true,
	"redirect":
	{
		"location": "https://www.contentkingapp.com/",
		"url": "https://www.contentkingapp.com/",
	},
	"status_code": 302,
	"time_document_download": 149,
	"type": "redirect",
	"segments":	[
		"1"
	],
	"app_url": "https://app.contentkingapp.com/websites/1-234/pages/4",
}

Respuesta para una página que falta

La respuesta para una página que falta (la URL devuelve un código de estado HTTP 4xx) sería así:

200 OK
{
	"url": "https://www.contentkingapp.com/this-does-not-exist",
	"is_https": true,
	"is_disallowed_in_robots_txt": false,
	"is_indexable": false,
	"is_indexable_due_to_meta_robots": "not_applicable",
	"is_indexable_due_to_x_robots_tag": "not_applicable",
	"is_in_sitemap": true,
	"status_code": 404,
	"time_document_download": 218,
	"type": "missing",
	"segments": [
		"2"
	],
	"app_url":"https://app.contentkingapp.com/websites/1-234/pages/5",
}

Errores específicos en la solicitud de datos de página

404 Not found
{
	"error": "Requested URL was not found"
}

Esta respuesta significa que la URL de la solicitud no es monitorizada por ContentKing.

404 Not found
{
	"error": "Requested URL cannot be provided via Reporting API"
}

Esta respuesta significa que los datos de la URL de la solicitud no están disponibles a través de Reporting API.

Obtener la lista de páginas de un sitio web

Envía la siguiente solicitud para obtener una lista de las páginas de un sitio web en particular:

GET /v1/websites/<website_id>/pages/list?page=1&per_page=100&sort=url&direction=desc
GET /v1/websites/<website_id>/pages/list?page=1&per_page=100&sort=url&direction=desc&filter%5Bsegment%5D=18

Paginación

Los parámetros de búsqueda per_page y page se utilizan para iterar sobre grandes conjuntos de resultados.

  • per_page puede estar en el rango de 1 a 500
  • page puede ir de 1 hasta ceil(total / per_page). Si page es mayor que el valor máximo, el campo de urls será una matriz vacia.

Respuesta para una página

Cada respuesta API contiene dos elementos clave:

  • total: recuento de urls en el conjunto de resultados para una búsqueda determinada
  • urls: urls paginadas en base a los parámetros de búsqueda per_page y page
200 OK
{
	"total": 1,
	"urls": [
		{
			"app_url": "https://app.contentkingapp.com/websites/1-2/pages/3",
			"analytics_services": [
				"google_analytics"
			],
			"canonical_type": "internal_self",
			"custom_elements": {
				"author": "Josie Walters",
				"date_published": "12 August 2019"
			},
			"ga_average_time": 5.788,
			"ga_bounce_rate": 48,
			"ga_page_value": 0,
			"ga_page_views": 248,
			"ga_unique_page_views": 214,
			"gsc_clicks": 3,
			"gsc_ctr": 0.183,
			"gsc_impressions": 1635,
			"gsc_position": 41.021,
			"health": 950,
			"h1": "H1 page header",
			"hreflang_language": "en",
			"is_disallowed_in_robots_txt": false,
			"is_indexable": true,
			"is_indexable_due_to_meta_robots": true,
			"is_indexable_due_to_x_robots_tag": null,
			"is_in_sitemap": true,
			"is_linked": true,
			"link_amp": null,
			"link_next": null,
			"link_prev": null,
			"meta_description": "ContentKing keeps track of your website 24/7 so that you can catch unexpected changes and issues before search engines and visitors do. Try it today!",
			"mobile_variant": null,
			"number_of_hreflangs": 6,
			"number_of_incoming_internal_canonicals": 1,
			"number_of_incoming_internal_links": 314,
			"number_of_incoming_internal_redirects": 0,
			"number_of_outgoing_external_links": 10,
			"number_of_outgoing_internal_links": 65,
			"open_graph_description": "Get more visitors and increase conversions with ContentKing. Monitor your website and catch problems before search engines and visitors do. Try now!",
			"open_graph_image": "https://www.contentkingapp.com/wp-content/uploads/2017/12/%5B600x314%5D%20Facebook%20Open%20Graph%20-%[email protected]",
			"open_graph_title": "Content Optimization and Monitoring service ContentKing",
			"open_graph_type": "website",
			"open_graph_url": "https://www.contentkingapp.com/",
			"relevance": 5.97,
			"schema_org_number_of_types": 1,
			"schema_org_types":	[
				"Website"
			],
			"segments":	[
				"18"
			],
			"status_code": 200,
			"tag_managers": [
				"google_tag_manager"
			],
			"time_document_download": 947,
			"title": "Real-time SEO Auditing and Content Change Tracking - ContentKing",
			"twitter_card": "summary_large_image",
			"twitter_description": "Get more visitors and increase conversions with ContentKing. Catch problems before search engines and visitors do. Try it today!",
			"twitter_image": "https://www.contentkingapp.com/wp-content/uploads/2017/12/%5B600x314%5D%20Facebook%20Open%20Graph%20-%[email protected]",
			"twitter_site": "@contentking",
			"twitter_title": "Content Optimization service ContentKing",
			"type": "page",
			"url": "https://www.contentkingapp.com/",
			"url_depth": 0,
			"visual_analytics_services": [
				"mouseflow"
			]
		}
	]
}

Obtener la lista de páginas de una alerta del sitio web

Envía la siguiente solicitud para obtener una lista de páginas de una alerta de sitio web determinada:

GET /v1/websites/<website_id>/alerts/<alert_id>/pages?page=1&per_page=100

Paginación

Los parámetros de búsqueda per_page y page se utilizan para iterar sobre grandes conjuntos de resultados.

  • per_page puede estar en el rango de 1 a 500
  • page puede ir de 1 hasta ceil(total / per_page). Si page es mayor que el valor máximo, el campo de urls será una matriz vacia.

Respuesta para una página

Cada respuesta API contiene dos elementos clave:

  • total: recuento de urls en el conjunto de resultados para una búsqueda determinada
  • urls: urls paginadas en base a los parámetros de búsqueda per_page y page
200 OK
{
	"total": 1,
	"urls": [
		{
			"app_url": "https://app.contentkingapp.com/websites/1-2/pages/3",
			"relevance": 5.97,
			"segments":	[
				"18"
			],
			"url": "https://www.contentkingapp.com/"
		}
	]
}

Obtener una lista de páginas de un problema del sitio web

Envía la siguiente solicitud para obtener una lista de páginas de un problema del sitio web determinado:

GET /v1/websites/<website_id>/issues/<issue>/pages?page=1&per_page=100

Paginación

Los parámetros de búsqueda per_page y page se utilizan para iterar sobre grandes conjuntos de resultados.

  • per_page puede estar en el rango de 1 a 500
  • page puede ir de 1 hasta ceil(total / per_page). Si page es mayor que el valor máximo, el campo de urls será una matriz vacia.

Respuesta para una página

Cada respuesta API contiene dos elementos clave:

  • total: recuento de urls en el conjunto de resultados para una búsqueda determinada
  • urls: urls paginadas en base a los parámetros de búsqueda per_page y page
200 OK
{
	"total": 1,
	"urls": [
		{
			"app_url": "https://app.contentkingapp.com/websites/1-2/pages/3",
			"relevance": 5.97,
			"segments": [
				"18"
			],
			"url": "https://www.contentkingapp.com/"
		}
	]
}

Lista de problemas

Problema Descripción
Analytics  
analytics/analytics_missing No Analytics instalado
analytics/visual_analytics_missing No Visual analytics no está instalado
Encabezado de contenido  
h1/duplicate El encabezado H1 no es único
h1/incorrect_length El encabezado H1 tiene una longitud incorrecta
h1/missing No se encuentra el encabezado H1
h1/too_many Hay más de un encabezado H1
Enlace canónico  
canonical_link/incorrectly_canonicalized Hay un enlace canónico hacia otra página en una página no indexable
canonical_link/points_to_unindexable El enlace canónico está vinculado a una página no indexable
canonical_link/too_many Hay más de un enlace canónico
canonical_link/missing No se encuentra el enlace canónico
Imágenes  
images/alt_attribute No aparece el atributo alt en las imágenes
images/title_attribute No aparece el atributo title en las imágenes
Enlaces  
links/broken La página contiene enlaces rotos
links/redirected La página contiene enlaces hacia redirecciones
links/to_canonicalized La página contiene enlaces hacia URLs canonicalizadas
Meta información  
meta_description/duplicate La meta descripción no es única
meta_description/incorrect_length La meta descripción tiene una longitud incorrecta
meta_description/missing No se encuentra la meta descripción
meta_description/too_many Existen múltiples meta descripciones en la página
title/duplicate El título de página no es único
title/incorrect_length El título de página tiene una longitud incorrecta
title/missing No se encuentra el título
title/too_many Existen múltiples títulos en las páginas
Open Graph  
open_graph/description_incorrect_length La descripción de Open Graph tiene una longitud incorrecta
open_graph/description_missing Falta la descripción de Open Graph
open_graph/image_missing Falta la imágen de Open Graph
open_graph/title_incorrect_length El título de Open Graph tiene una longitud incorrecta
open_graph/title_missing Falta el título de Open Graph
open_graph/url_missing Falta la URL de Open Graph
Twitter Cards  
twitter_cards/description_incorrect_length La descripción de Twitter Cards tiene una longitud incorrecta
twitter_cards/description_missing Falta la descripción de Twitter Cards
twitter_cards/image_missing Falta la imágen de Twitter Cards
twitter_cards/site_missing Falta la propiedad de sitio de Twitter Cards
twitter_cards/title_incorrect_length El título de Twitter Cards tiene una longitud incorrecta
twitter_cards/title_missing Falta el título de Twitter Cards
twitter_cards/type_invalid Valor de tipo de Twitter Cards no válido
twitter_cards/type_missing Falta tipo de Twitter Cards
Mapa de sitio XML  
xml_sitemap/incorrectly_missing La página no está incluida en el mapa de sitio XML
xml_sitemap/incorrectly_present Las páginas no están presentes correctamente en el mapa de sitio XML

Errores API comunes

Falta autorización

401 Unauthorized
{
	"code": "auth_missing_token",
	"message": "Authentication token must be passed in Authorization HTTP header.",
	"errors": []
}

Esta respuesta significa que la solicitud ha sido recibida, pero falta el token de autorización y por lo tanto no puede ser procesada. Asegúrate de configurar el encabezado de autorización correctamente.

Autorización fallida

401 Unauthorized
{
	"code": "auth_failed",
	"message": "Authentication token is expired or invalid.",
	"errors": []
}

Si recibes esta respuesta significa que la solicitud no ha podido ser procesada porque el token API proporcionado no es válido o ha expirado.

Términos de uso de Reporting API no aceptados

403 Forbidden
{
	"code": "terms_of_use_not_accepted",
	"message": "Reporting API Terms of Use have not been accepted yet. Please accept Terms of Use in Account Settings.",
	"errors": []
}

Si recibes esta respuesta significa que aún no has aceptado los Términos de uso de Reporting API. Tienes que aceptarlos en los Ajustes de cuenta antes de poder empezar a utilizar Reporting API.

Sitio web no encontrado

404 Not found
{
	"error": "Requested website ID was not found"
}

Si recibes esta respuesta, el ID del sitio web que has especificado no se encuentra en tu cuenta.

Autorización malformada

422 Unprocessable Entity
{
	"code": "auth_malformed",
	"message": "Authorization HTTP header must conform to format described in docs.",
	"errors": []
}

Esta respuesta significa que la solicitud ha sido recibida, pero la autorización no tenía el formato correcto. Asegúrate de configurar el encabezado de autorización correctamente.

Comenzar tus 14 días de prueba gratuita

Comience en tan solo 20 segundos

Ponga un nombre de dominio válido, por favor (www.ejemplo.es).
  • No se requiere ninguna tarjeta de crêdito
  • No hay que instalar nada
  • Sin compromiso