Artsy API: Datos para entender el arte

Artsy API: Datos para entender el arte

Artsy es una empresa de corretaje de arte en línea con sede en Nueva York. Su página web le da servicio a numerosas galerías, museos y colecciones privadas en el mundo.

Como muchas otras páginas, Artsy API (Application Programming Interface o Interfaz de Programación de Aplicación) permite el fácil acceso a su base de datos.

Supongamos que queremos vender una obra de arte de nuestro bisabuelo, ¿dónde será mejor venderla para maximizar su precio de venta?, ¿en cuánto se venden obras de artistas similares?, ¿en qué momento del año es el mejor momento de vender? Preguntas de este tipo las podemos contestar mediante esta API.

El API de Artsy es sencillo de utilizar y accesible. Solo hay que registrarse para obtener una API key con la que podremos hacer requests utilizando las llamadas REST (REpresentational State Transfer).

En el presente artículo explicaré paso a paso cómo obtener datos de la API con Curl y Python.

Empecemos por crear una cuenta de desarrollador en la página de Artsy:

Crea y nombra tu app (¡no necesitas agregar redirect urls!), con lo que automáticamente te darán el Client ID. Al darle clic en edit veremos también el Client Secret. Estos dos campos son los más importantes para obtener tu token para consultas.

En la página Public API Documentation -> General -> Getting Started igualmente verás los datos de tu API y en el punto 4 te dirán cómo obtener el token.

Abre terminal o el command prompt en Windows (necesitas haber instalado Curl previamente) y copia y pega el link:

⚠️
Nota: Ten cuidado y no compartas los datos de tu API en público. Esta API la creé para este artículo y la borré terminando de escribirlo para brindarte un ejemplo de cómo luce.



Hasta abajo de la respuesta se lee: xapptoken, token: XXXX hasta donde dice expires_at.

Copia y pega el token en tu notebook en Python para tenerlo guardado, el cual  expirará en la fecha anunciada.

Para hacer consultas, necesitaremos conseguir un endpoint, el cual dependerá de los datos que queramos consultar. Todos los endpoints disponibles están en la documentación de Artsy.

Empecemos cargando las librerías que vamos a utilizar:

import numpy as np

import pandas as pd

import json

import os

import requests

⚠️
Nota: Necesitas tener una versión de Pandas superior a la 16 para utilizar este código.


Con print(pd.__version__) puedes verificar tu versión de Pandas.

Consultemos como ejemplo los datos de las ventas:

API_KEY = os.getenv("ARTSY_API_KEY")

headers = {

"X-XAPP-Token": "TU_TOKEN"

}

sales_endpoint = "https://api.artsy.net/api/sales?"

sales_response = requests.get(sales_endpoint, headers=headers)


El json de respuesta contiene tres campos. Dentro del campo ‘_embedded’ es donde encuentras los datos que te interesan para la base de datos. Convirtamos la consulta de json en un Pandas Data Frame y extraigamos los campos dentro de embedded y sales.

if sales_response.status_code== 200:

data = sales_response.json()

sales = data['_embedded']['sales']

auctionsData=pd.DataFrame(sales)

else:

raise Exception('Failed to get data from the API')

Esto nos dará un Data Frame:


Veamos cómo se ve la data en json para entender esto mejor:


Como mencioné, los datos que nos interesan están en _embedded, sales.

Cada request te arroja únicamente cinco resultados. En el campo ‘next’ del json hay un nuevo link para obtener la siguiente página de resultados. A este problema lo conocemos como Pagination.

Podemos darle la vuelta al problema de Pagination con el código:

url =  "https://api.artsy.net/api/sales?"

results_count = 0

all_sales = []

while url:

response = requests.get(url, headers=headers)

data = response.json()

# process the data as needed

results_count += len(data['_embedded']['sales'])

all_sales.extend(data['_embedded']['sales'])

if '_links' in data and 'next' in data['_links']:

url = data['_links']['next']['href']

else:

url = None

df = pd.DataFrame(all_sales)

Por ser un while loop, es normal que sea tardado. El tiempo de respuesta dependerá del hardware de tu computadora, de cuánta memoria tengas asignada para tu notebook, y de cuántos casos arrojó el query.

Artsy API es una gran opción, pero su experiencia dependerá de que se use una  computadora con buena cantidad de RAM (16 GB o más) porque sino será un while loop tardado y a veces ineficiente. Existen otras alternativas, aunque eso dependerá de tus necesidades.

Hay muchos otros campos que explorar, como cuáles artistas venden en más galerías, por ejemplo. Para responder a esta pregunta, necesitaremos solicitar las galerías e identificar cuáles artistas se repiten.

Espero que este tutorial te sea muy útil. ¡Inténtalo!

⚠️
Las opiniones y comentarios emitidos en este artículo son propiedad única de su autor y no necesariamente representan el punto de vista de Revelo.

Revelo Content Network da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.