Guía rápida para el consumo de datos de la Herramienta para el Análisis y Monitoreo de Precios de Guatemala vía API

Los precios publicados en este sitio se pueden acceder mediante informes PDF, chatbot, app y Web. La herramienta Web permite la generación de gráficos, comparativas y descarga de tablas de datos entre otras funcionalidades. También permite la descarga de datos mediante una API que genera los datos en CSV o JSON dependiendo las solicitudes.

Aclaraciones

A menos que se especifique lo contrario, todos los recursos generan respuesta con codificación UTF-8. Los archivos cambian una vez al día, el más importante sería el de precios de cada producto, se recomienda gestionar cachés locales que se actualicen de forma diaria.

El uso de los datos es libre pero al mencionar la fuente como mínimo debe incluir la dirección de este sitio Web y el nombre de Ministerio de Agricultura, Ganadería y Alimentación. Considere que los datos se actualizan una vez al día, por lo tanto; al detectarse muchas conexiones diarias se bloqueara el acceso a las IPs solicitantes.

Obtener los precios de un producto

Deseamos obtener los precios diarios del Frijol negro de primera que existan en la herramienta. Primero necesitamos definir los códigos del producto para buscar en la API. Vamos a https://precios.maga.gob.gt/data/v1/commodities/GTM para encontrar los códigos del producto a trabajar:

Ahí hay dos códigos pertenecientes a las columnas hs-class-code que significa el grupo al que pertenece el producto y commodity-code que es el código único para el producto. En este caso tenemos que el grupo es 0713 y el código único 07133200800501600000000050131. Entonces vamos a https://precios.maga.gob.gt/tool/api/v1/series/?country=GTM&cmmgroup=0713 y ahí obtenemos el siguiente archivo JSON con los datos de los productos que pertenecen a ese grupo:

Ahora hacemos un filtrado o búsqueda dentro del archivo, en este ejemplo con Python, usando el código único del producto:

Con este resultado podemos obtener todos los datos identificativos que pertenecen a este producto. Por ejemplo, tenemos que la unidad de medida es Quintal, el mercado es La Terminal, Zona 4 y podemos ver su rango de fechas de precios disponibles en dateRanges. En links está lo que nos va a generar los precios, en esto hay dos tipos principales pero usaremos los más descriptivos aunque sean más extensos, entonces filtramos para precios diarios (daily) en moneda local (nominal), unidad de medida original (local) y códigos descriptivos (codes) usando daily_nominal_local_codes:

Viendo los otros elementos de links si encontramos kg la unidad se ha convertido a kilogramos, tonne a tonelada y usd convertido a dólar estadounidense según la tasa de referencia del Banguat. El filtrado que hicimos nos da el link:

https://precios.maga.gob.gt/tool/api/v1/series/datapoint/GTM/MKT001/07133200800501600000000050131/wholesale/daily/GTQ/2/nominal/local

Donde:

  • GTM = Guatemala.

  • MKT001 = el código descriptivo del mercado.

  • 07133200800501600000000050131 = el código del producto buscado, frijol negro de primera.

  • wholesale = el actor, mayorista.

  • daily = periodicidad, diario.

  • GTQ = moneda, Quetzal.

  • 2 = código de la medida que podemos ver en measureUnit, Quintal.

  • nominal = precio no convertido.

  • local = unidad de medida original.

Usando este link obtenemos acceso a todos los datos de ésta serie de precios también en formato json, de esto nos va a servir el elemento data, contendrá pares de fechas y precios, la fecha está en formato de marca temporal en milisegundos de Unix.

Aquí podemos decidir obtener los precios de un rango de fechas, por ejemplo del 25 al 29 de mayo del 2020. Éstas fechas convertidas a marca temporal (en zona UTC) serían 1590364800000 para la primera y 1590710400000 para la segunda, esto lo alimentamos con la aplicación que estemos usando.

También se pueden obtener estos datos filtrando directamente en el link convirtiendo las fechas al formato de fecha extendido completo de la ISO 8601 que sería 2020-05-25 para la primera y 2020-05-29 para la segunda. Usando lo siguiente ?start-date=2020-05-25&end-date=2020-05-29 lo agregamos a nuestro link:

Nos da sólo el rango solicitado de fechas con sus precios, para elegir un día en particular se usa la misma fecha en start-date y en end-date.

Obtener los productos de un mercado

Queremos obtener el listado de códigos de los productos que tiene el mercado de la 21 Calle, primeros obtenemos el código del mercado usando https://precios.maga.gob.gt/data/v1/markets/GTM:

Ahí vemos que la columna market-code dice MKT003, ese será el código con el cuál filtraremos el json en https://precios.maga.gob.gt/tool/api/v1/series/?country=GTM:

Luego estos códigos los alimentamos a nuestra aplicación y podemos generar los precios y los tipos de precios que necesitemos consumir así como hicimos en la sección anterior.

Referencia

https://precios.maga.gob.gt/data/v1/markets/GTM

Genera un CSV con el listado de mercados existentes.

https://precios.maga.gob.gt/data/v1/commodities/GTM

Genera un CSV con el listado de productos existentes.

https://precios.maga.gob.gt/data/v1/prices/GTM/wholesale/monthly

Genera un CSV con todos los precios diarios al mayorista existentes. Usar daily en lugar de monthly para obtener los precios mensuales. Este archivo es bastante grande, se recomienda sólo cuando se va a hacer la copia inicial de los datos.

https://precios.maga.gob.gt/tool/api/v1/series/?country=GTM

Genera un archivo JSON con los datos de los productos existentes. Se pueden filtrar usando &cmmgroup=XXXX para un grupo determinado, también se pueden encadenar varios grupos usando &, por ejemplo &cmmgroup=XXXX&cmmgroup=YYYY.

Archivos

En este enlace se encuentra el código Python mostrado en los ejemplos.