2026-09-18
API significa “interfaz de programación de aplicaciones” ( del ingles Application Programming Interface).
Su utilidad radica en que son mecanismos que permiten a dos componentes de software comunicarse entre sí mediante un conjunto de definiciones y protocolos (AWS, 2026) independientemente de la naturaleza, arquitectura o tecnología de dichos componentes, usando criterios o definiciones equivalentes que puedan interpretar ambos componentes (Bonilla Melara, 2024).
(Statistical Data and Metadata eXchange) es un sistema de intercambio de datos estadísticos basado en el estándar ISO 17369, y cuenta con el apoyo de instituciones como el FMI, el BM y Eurostat.
Consta de (SDMx org, 2026):
- Normas técnicas (incluido el Modelo de Información)
- Directrices estadísticas
- Una arquitectura y herramientas de TI
SDMx tambien agrupa los estándares técnicos, las directrices estadísticas y la arquitectura y herramientas de TI pueden contribuir a la mejora de los procesos estadisticos y el manejo de los metadatos.
La Organización para la Cooperación y el Desarrollo Económicos (OCDE) es una organización internacional que trabaja para diseñar mejores políticas que contribuyan a mejorar la calidad de vida (OCDE, 2026) . La precursora de la OCDE fue la Organización Europea para la Cooperación Económica (OECE), creada para administrar la ayuda estadounidense y canadiense del Plan Marshall, destinada a reconstruir Europa tras la Segunda Guerra Mundial. La Convención que transformó la OECE en la OCDE se firmó en el Château de la Muette, en París, el 14 de diciembre de 1960, y entró en vigor el 30 de septiembre de 1961. (OCDE, 2026)
Durante los 60 años siguientes, la OCDE ha ampliado el número de países miembros hasta alcanzar los 38, entre ellos naciones de América Latina, Asia y el Pacífico, y ha cumplido su misión de ayudar a los países a encontrar soluciones comunes a desafíos comunes. (OCDE, 2026)
La OCDE distribuye toda su información estadística a través de su plataforma OECD Data Explorer, cuyo motor de consultas sigue el estándar SDMx 3.0. El flujo de trabajo para acceder a un indicador es el siguiente (OECD, 2023):
Ingresar al sitio https://www.oecd.org/en/data/datasets/oecd-DE.html
Seleccionar los indicadores de interés. Se dividen en las siguientes grandes categorías:
|
|
|
La URL que genera el compositor de consultas de la OCDE, sigue los siguientes elementos (OECD, 2024a):
| Sintasix general de consulta mediante ResFul API |
|---|
| {Host URL}/{Agency identifier},{Dataset identifier},{Dataset version}/{Data selection}?{other optional parameters} |
La URL que genera el compositor de consultas de la OCDE, que contiene la metadata relacionada a la URL de consulta tiene los siguientes elementos (OECD, 2024a):
| Sintaxis general de la estructura de datos relacionada a la consulta |
|---|
| {Host URL}/{Agency identifier},{Dataset identifier},{Dataset version}?Data structure parameters |
Sin embargo, la OCDE pone en disposición la lista completa de datasets, en la siguiente URL:
Endpoint: genera URL para una consulta con sus propios filtros. Usando R Studio ,la consulta y la respuesta se manejan del lado del backend, por lo que el usuario no requiere de mayor conocimiento de programaciòn de API
Tipo de API: RESTful API (peticiones HTTP GET para recursos de datos y metadatos).
Modelo: SDMx (Statistical Data and Metadata eXchange) como modelo para estructuras de datos y metadatos.
Formato de respuesta por default: JSON
Como parámetros extra, la OCDE permite definir el formato de respuesta de la consulta (OECD, 2024a):
| Para XML, agregar al final de la URL de consulta: |
|---|
| format=genericdata |
| Para JSON, agregar al final de la URL de consulta: |
|---|
| format=jsondata |
| Para obtener un CVS, agregar al final de la URL de consulta: |
|---|
| format=cvsfile |
Ingresar a la OCDE Data Explorer, y buscar GDP Forecast Long-term
Se puede acceder directamente a traves de esta dirección:
https://www.oecd.org/es/data/indicators/real-gdp-long-term-forecast.html
Aplicar los filtros necesarios. Para fines de demostración, solo aplicar el filtro de serie temporal para datos de 2026 a 2036.
Acceder al Developer API query builder, y copiar la Data Query generada:
Pegar la url en nuestro codigo en R.
# Carga de librerias:
library(dplyr)
library(tidyverse)
library(rsdmx)
library(knitr)
library(kableExtra)
library(tsbox)
# Como buena practica de documentacion, siempre anotar la URL original del indicador a cargar:
# https://www.oecd.org/es/data/indicators/real-gdp-long-term-forecast.html
# 5.carga de los datos
url_data_query<- "https://sdmx.oecd.org/public/rest/data/OECD.ECO.MAD,DSD_EO_LTB@DF_EO_LTB,/.GDPVTRD_CAP..A?startPeriod=2026&endPeriod=2036&dimensionAtObservation=AllDimensions"
GDPppr_potential_2026_2036<- readSDMX(url_data_query)
# 6.conversion de las consultas a tabla tipo Tibble
GDPppr_potential_2026_2036<-as_tibble(GDPppr_potential_2026_2036,labels=TRUE)
#Mostrar la database tal como se descarga de la OCDE
GDPppr_potential_2026_2036 |>
head(10)# A tibble: 10 × 9
TIME_PERIOD REF_AREA MEASURE SCENARIO FREQ obsValue UNIT_MEASURE UNIT_MULT
<chr> <chr> <chr> <chr> <chr> <dbl> <chr> <chr>
1 2026 A9 GDPVTRD_… BAU1 A 20202. USD_PPP_PS 0
2 2027 A9 GDPVTRD_… BAU1 A 20505. USD_PPP_PS 0
3 2028 A9 GDPVTRD_… BAU1 A 20839. USD_PPP_PS 0
4 2029 A9 GDPVTRD_… BAU1 A 21202. USD_PPP_PS 0
5 2030 A9 GDPVTRD_… BAU1 A 21591. USD_PPP_PS 0
6 2031 A9 GDPVTRD_… BAU1 A 22002. USD_PPP_PS 0
7 2032 A9 GDPVTRD_… BAU1 A 22432. USD_PPP_PS 0
8 2033 A9 GDPVTRD_… BAU1 A 22880. USD_PPP_PS 0
9 2034 A9 GDPVTRD_… BAU1 A 23346. USD_PPP_PS 0
10 2035 A9 GDPVTRD_… BAU1 A 23827. USD_PPP_PS 0
# ℹ 1 more variable: DECIMALS <chr>
# 7. Creación de una tabla con los datos filtrados para USA periodo 2026-2036
Tabla_GDPppr_Potential<-GDPppr_potential_2026_2036 %>%
filter(REF_AREA=="USA",SCENARIO%in%c("BAU1","BAU2")) |>
group_by(TIME_PERIOD, SCENARIO) |>
summarise(
obsValue = round(sum(obsValue, na.rm = TRUE) / 1000, digits = 2),
.groups = "drop"
) |>
pivot_wider(names_from = SCENARIO, values_from = obsValue)
# 8. Aplicación de estilo a la tabla
Tabla_GDPppr_Potential|>
head(11) %>%
rename(
"AÑO"="TIME_PERIOD",
"Bussiness as Usual (medium damage)"= "BAU1",
"Bussiness as Usual (high damage)"= "BAU2"
) |>
kable(caption = "USA: PIB Real Potencial Per Capita (base 2021) expresado en miles de dólares de los Estados Unidos de América, para el periodo 2026-2036, bajo el supuesto que las políticas públicas, las leyes energéticas y las tendencias económicas no sufriran un cambio radical y no se tomen acciones contra el cambio climatico.") %>%
kable_classic(html_font = "Times New Roman", font_size = 14) %>%
add_footnote(label="Datos tomado de la API de la OCDE. Los valores BAU 1 y BAU 2 (Business-As-Usual) en las proyecciones económicas globales de largo plazo son elaborados internamente por el Departamento de Economía de la OCDE, utilizando su propio Modelo de Largo Plazo (LTM, por sus siglas en inglés: OECD Long-Term Model). Ambos escenarios simulan una transición energética ineficaz que no logra limitar el calentamiento global por debajo de los 2°C (OECD,2025)",notation="symbol") |>
kable_styling(full_width = FALSE)| AÑO | Bussiness as Usual (medium damage) | Bussiness as Usual (high damage) |
|---|---|---|
| 2026 | 77.94 | 77.94 |
| 2027 | 79.16 | 79.14 |
| 2028 | 80.45 | 80.39 |
| 2029 | 81.80 | 81.67 |
| 2030 | 83.19 | 82.99 |
| 2031 | 84.61 | 84.31 |
| 2032 | 86.03 | 85.63 |
| 2033 | 87.43 | 86.90 |
| 2034 | 88.79 | 88.13 |
| 2035 | 90.09 | 89.29 |
| 2036 | 91.34 | 90.38 |
| * Datos tomado de la API de la OCDE. Los valores BAU 1 y BAU 2 (Business-As-Usual) en las proyecciones económicas globales de largo plazo son elaborados internamente por el Departamento de Economía de la OCDE, utilizando su propio Modelo de Largo Plazo (LTM, por sus siglas en inglés: OECD Long-Term Model). Ambos escenarios simulan una transición energética ineficaz que no logra limitar el calentamiento global por debajo de los 2°C (OECD,2025) |
# 9. GENERACIÓN DE LA GRÁFICA
# ========================================================================
# Paso A: Preparar y limpiar los datos en formato largo para tsbox
Graf_GDPppr <- GDPppr_potential_2026_2036 %>%
filter(REF_AREA == "USA", SCENARIO %in% c("BAU1", "BAU2")) %>%
# Renombramos las columnas obligatorias que requiere tsbox
select(time = TIME_PERIOD, id = SCENARIO, value = obsValue) %>%
# Dividimos entre 1000 y redondeamos para mantener consistencia con tu tabla
mutate(
value = as.numeric(value),
value = round(value / 1000, digits = 2),
# Renombramos los códigos técnicos a nombres legibles para la leyenda
id = case_match(id,
"BAU1" ~ "Business as Usual (Medium Damage)",
"BAU2" ~ "Business as Usual (High Damage)")
)
# Paso B: Dibujar la serie de tiempo interactiva
ts_plot(Graf_GDPppr,
title = "USA: PIB Real Potencial Per Cápita (Base 2021)",
subtitle = "Proyecciones 2026-2036 en miles de USD bajo escenarios de daño climático")El acceso mediante API a la base de datos de la OCDE usando R Studio, permite enfocarse directamente en el manejo de datos, sin involucrarse en los detalles tecnicos, y lenguajes de programaciòn necesarios para hacer funcionar la interface. La libreria rsdmx realiza el backend de la consulta.
Cada vez que se corre el código, se realiza una consulta HTTP hacia la base de datos de la OCDE. Según las normas y politicas de uso, la OCDE limita la velocidad de acceso, y se reserva el derecho de bloquear un usuario que intente realizar consultas masivas en periodos muy cortos de tiempo. Se permiten un limite de 60 solicitudes por hora (OECD, 2024b).
Según la documentación, existe el paquete OECD en R Studio, versión 0.2.5, lanzado en diciembre 2021. Sin embargo, debido a la actualización y homogenización de la OCDE de sus base de datos para adaptarse al modelo SDMx 3.0, su antiguo servidor Stat, esta fuera de acceso público (Stack Overflow, 2024) . Actualmente hay un paquete beta disponible en github que usa el nuevo modelo SDMx 3.0, pero su testing, sobrepasa los objetivos de esta investigación. La beta esta disponible en
https://github.com/expersso/OECDPreguntas para la clase:
¿Por qué la OCDE adoptó el estándar SDMX para su API en lugar de usar un formato JSON convencional?
¿Cuáles son las ventajas y desventajas de consumir los datos en vivo mediante la API frente a la descarga tradicional de archivos CSV o Excel?
¿Que riesgos potenciales podriamos enfrentar al integrar la API de la OCDE a un entorno de producción o institucional, y como mitigarlos?
¿Cómo podemos aprovechar la API para vincular la consulta del Structure Query con los Data Query?
UN Comtrade es una oficina de propósito estadístico de las Naciones Unidas. Su nombre es el acronimo de Commodity & trade (mercancia y comercio) por lo que su interpretación al castellano es “Comercio de Mercancias.”
La base de datos UN COMTRADE es mantenida por la División de Estadística del DESA/ONU. Ofrece estadísticas detalladas sobre la importación y exportación de bienes y servicios, comunicadas por las autoridades estadísticas de cerca de 200 países y territorios desde 1962. Con cientos de miles de millones de datos, se considera la base de datos de comercio en línea más completa. Los usuarios pueden acceder a información sobre importaciones y exportaciones de bienes y servicios desglosada por socios comerciales y productos (United Nations Statistics Division, 2026a).
Debido al volumen, consistencia, disponibilidad y usos comerciales de la base de datos, la oficina de UN Comtrade divide a sus usuarios en tres categorias (United Nations Statistics Division, 2026a):
Free Tier (Acceso público y gratuito: Abierto para estudiantes, periodistas y analistas que realizan consultas rápidas y de bajo volumen. Limita el acceso a un máximo de 50k registros por consulta; todo mediante una API validada por una KEY, limitanto tambien a un maximo de 500 llamadas de consulta al día (University of Toronto Libraries, 2026).
Institutional Access: Portal que otorga acceso sin restricciones y sin costos para el docente y el alumno, según los convenios que la universidad suscriba con UN Comtrade (Stanford University Libraries, 2026).
Premium Subscription: Destinado a entidades privadas que lucran con la información, a gobiernos y centros de investigación. Se gestiona mediante licencia (United Nations Shop, 2026), la cual brinda acceso sin restricciones de ancho de banda, sin contador de volumen, e incluye soporte técnico. Esto habilita herramientas de descargas asincronicas por lotes, descargas masivas (Bulk Download Tool), gestion on-deman de la cuenta en Azure, y acceso preferencia al DataLake de la ONU (United Nations Shop, 2026). Se separa en acceso individual (un solo usuario) y Premium Institutional (red de usuarios)
| Método | Tipo de Usuario | Capacidad | Caracteristicas clave |
|---|---|---|---|
| Interface Web | Usuarios generales y analistas visuales | Hasta 250k registros en cuentas autorizadas | Formularios dinámicos, filtros por código del Sistema Armonizado (HS) y generación de gráficos en tiempo real. |
| API de Desarrolladores | Programadores y científicos de datos (R, Python). | Varía según nivel (500 llamadas/día gratis o ilimitado Premium). | Automatización de extracción mediante solicitudes HTTP. Integrado en librerías científicas como comtradr en R. |
| Bulk Download Tool | Administradores de macrodatos y analistas de políticas públicas. | Archivos masivos (hasta 2.5M de registros por bloque). | Permite bajar nomenclaturas comerciales completas por país y flujos históricos de un solo golpe. Solo Premium. |
Crear una cuenta en el portal gratuito en https://comtradeplus.un.org o entrar directamente a UN Sign in
Escoger la opción de cuenta social, considerando utilizar nuestra cuenta institucional ues.edu.sv, aprovechando su soporte de google. E iniciar sesión usando las credenciales de estudiante. Se realizaran las comprobaciones acostumbradas para validar el usuario
Una vez registrado, regresar a la pagina principal https://comtradeplus.un.org y en el menu de perfil, ingresar a “Mi Portal API”, esto nos llevara al sitio para desarrolladores en https://comtradedeveloper.un.org/signin Si las cookies estan habilitaadas, automaticamente se vinculara la cuenta creada en el paso anterior.
Ingresar a “Explore APIs” Y navegar hasta llegar a las APi gratuitas. Se deberían tener tres opciones (United Nations Statistics Division, 2026b), es obligatorio suscribirse para obtener la llave para la API:
| API | Descripcion |
|---|---|
| comtrade v1 | API para obtener datos y metadatos comerciales. Se requiere una clave de suscripción. |
| comtrade tools V2 | Herramientas de API para obtener datos de comercio bilateral y de balanza comercial. Se requiere una clave de suscripción. |
| public v1 | API gratuita para previsualizar datos de operaciones. No se requiere clave de suscripción. |
Para fines demostrativos, escogemos la primer opcion comtrade v1 y hacemos clic en suscribir (en cuenta gratuita solo permite una suscripcion)
La llave generada para usar la API podemos encontrarla en la ruta My Account → My API portal → Profile → Primary key esta debe estar en formato Hexadecimal.
Copiar la clave para nuestro código en R
Se realizara la carga de la data de las Exportaciones totales de los paises centroamericanos con el resto del mundo, del periodo 2018 al 2025. Para ello, se emplearan 3 metodos:
- Utilización de la libreria comtradr de R Studio.
- Utilizacion de la libreria comtradr simulando una limitación de consulta de la cuenta gratuita de UN comtrade.
- Utilización de método GET del protocolo HTTP para consulta directa usando las librerias httr2 y jsonlite.
# Carga de librerias
library(comtradr)
library(dplyr)
library(knitr)
library(kableExtra)
library(tidyr)
library(tidyverse)
library(ggplot2)
library(httr2)
library(jsonlite)
m_m_usd <- 1000000000
# Configurar clave API
comtradr::set_primary_comtrade_key("0019ae66e6294f76aa6071daf2557a20")
secundary_comtrade_key <- "4e16602deffc43279e344f14b62bb1b4"#carga de datos de las Exportaciones de los paises centroamericanos hacia el resto del mundo
datos_export_ca <- comtradr::ct_get_data(
reporter = c("BLZ", "GTM", "SLV","HND", "NIC", "CRI"),
partner = "World",
flow_direction = "export",
frequency = "A",
start_date = 2018,
end_date = 2025,
commodity_code = "TOTAL")
exportaciones_ca <- datos_export_ca |> as_tibble()
head (exportaciones_ca)# A tibble: 6 × 47
type_code freq_code ref_period_id ref_year ref_month period reporter_code
<chr> <chr> <int> <int> <int> <chr> <int>
1 C A 20180101 2018 52 2018 84
2 C A 20180101 2018 52 2018 188
3 C A 20180101 2018 52 2018 222
4 C A 20180101 2018 52 2018 320
5 C A 20180101 2018 52 2018 340
6 C A 20180101 2018 52 2018 558
# ℹ 40 more variables: reporter_iso <chr>, reporter_desc <chr>,
# flow_code <chr>, flow_desc <chr>, partner_code <int>, partner_iso <chr>,
# partner_desc <chr>, partner2code <int>, partner2iso <chr>,
# partner2desc <chr>, classification_code <chr>,
# classification_search_code <chr>, is_original_classification <lgl>,
# cmd_code <chr>, cmd_desc <chr>, aggr_level <int>, is_leaf <lgl>,
# customs_code <chr>, customs_desc <chr>, mos_code <chr>, mot_code <int>, …
# Cargar la librería para graficar
# Crear la gráfica paso a paso
grafica_1 <- ggplot(exportaciones_ca, aes(x = ref_year, y = primary_value/m_m_usd, color = reporter_desc)) +
geom_line() + # 1. Dibuja las líneas
geom_point() + # 2. Dibuja los puntos sobre las líneas
labs(
title = "Gráfica 1: Exportaciones de Centroamérica hacia el resto del mundo",
x = "Año",
y = "Valor en miles de millones de USD",
color = "País",
caption = "Fuente: UN Comtrade utilizando API gratuita validada con Key y la libreria comtradr"
)
grafica_1#Bloque sugerido si la consulta llegase a exceder los 50k items.
bloques_paises <- list(c("BLZ", "GTM", "SLV"), c("HND", "NIC", "CRI"))
bloques_anios <- list(c(2018, 2021), c(2022, 2025))
lista_datos <- list()
for (paises in bloques_paises) {
for (anios in bloques_anios) {
bloque_descargado <- tryCatch(
{ct_get_data(
reporter = paises,
partner = "World",
flow_direction = "export",
frequency = "A",
start_date = as.character(anios[1]),
end_date = as.character(anios[2]),
commodity_code = "TOTAL")},
error = function(e) { return(NULL) })
lista_datos <- append(lista_datos, list(bloque_descargado))
Sys.sleep(2)}}
exportaciones_ca2 <- bind_rows(lista_datos)
head (exportaciones_ca2) type_code freq_code ref_period_id ref_year ref_month period reporter_code
1 C A 20180101 2018 52 2018 84
2 C A 20180101 2018 52 2018 222
3 C A 20180101 2018 52 2018 320
4 C A 20190101 2019 52 2019 84
5 C A 20190101 2019 52 2019 222
6 C A 20190101 2019 52 2019 320
reporter_iso reporter_desc flow_code flow_desc partner_code partner_iso
1 BLZ Belize X Export 0 W00
2 SLV El Salvador X Export 0 W00
3 GTM Guatemala X Export 0 W00
4 BLZ Belize X Export 0 W00
5 SLV El Salvador X Export 0 W00
6 GTM Guatemala X Export 0 W00
partner_desc partner2code partner2iso partner2desc classification_code
1 World 0 W00 World H5
2 World 0 W00 World H5
3 World 0 W00 World H5
4 World 0 W00 World H5
5 World 0 W00 World H5
6 World 0 W00 World H5
classification_search_code is_original_classification cmd_code
1 HS TRUE TOTAL
2 HS TRUE TOTAL
3 HS TRUE TOTAL
4 HS TRUE TOTAL
5 HS TRUE TOTAL
6 HS TRUE TOTAL
cmd_desc aggr_level is_leaf customs_code customs_desc mos_code
1 All Commodities 0 FALSE C00 TOTAL CPC 0
2 All Commodities 0 FALSE C00 TOTAL CPC 0
3 All Commodities 0 FALSE C00 TOTAL CPC 0
4 All Commodities 0 FALSE C00 TOTAL CPC 0
5 All Commodities 0 FALSE C00 TOTAL CPC 0
6 All Commodities 0 FALSE C00 TOTAL CPC 0
mot_code mot_desc qty_unit_code qty_unit_abbr qty is_qty_estimated
1 0 TOTAL MOT -1 N/A 0 FALSE
2 0 TOTAL MOT -1 N/A 0 FALSE
3 0 TOTAL MOT -1 N/A 0 FALSE
4 0 TOTAL MOT -1 N/A 0 FALSE
5 0 TOTAL MOT -1 N/A 0 FALSE
6 0 TOTAL MOT -1 N/A 0 FALSE
alt_qty_unit_code alt_qty_unit_abbr alt_qty is_alt_qty_estimated net_wgt
1 -1 N/A 0 FALSE 0
2 -1 N/A 0 FALSE 0
3 -1 N/A 0 FALSE 0
4 -1 N/A 0 FALSE 0
5 -1 N/A 0 FALSE 0
6 -1 N/A 0 FALSE 0
is_net_wgt_estimated gross_wgt is_gross_wgt_estimated cifvalue fobvalue
1 TRUE 0 FALSE NA 240911158
2 TRUE 0 FALSE 0 5905411211
3 TRUE 0 FALSE NA 10863483936
4 TRUE 0 FALSE NA 245901227
5 TRUE 0 FALSE 0 5904956424
6 TRUE 0 FALSE NA 11289176124
primary_value legacy_estimation_flag is_reported is_aggregate
1 240911158 4 FALSE TRUE
2 5905411211 4 FALSE TRUE
3 10863483936 4 FALSE TRUE
4 245901227 4 FALSE TRUE
5 5904956424 4 FALSE TRUE
6 11289176124 4 FALSE TRUE
# Crear la gráfica
grafica_2 <- ggplot(exportaciones_ca2, aes(x = ref_year, y = primary_value/m_m_usd, color = reporter_desc)) +
geom_line() + # 1. Dibuja las líneas
geom_point() + # 2. Dibuja los puntos sobre las líneas
labs(
title = "Gráfica 2: Exportaciones de Centroamérica hacia el resto del mundo",
x = "Año",
y = "Valor en miles de millones de USD",
color = "País",
caption = "Fuente: UN Comtrade utilizando API gratuita validada con key + la libreria comtradr + ciclo for para no saturar consulta"
)
grafica_2# Consulta REST, usando el estandar M9.
solicitud_http <- request("https://comtradeapi.un.org/data/v1/get/C/A/HS") |>
req_headers("Ocp-Apim-Subscription-Key" = secundary_comtrade_key) |>
req_url_query(
reporterCode = "222,320,188,558,84,340",
partnerCode = "0",
flowCode = "X",
period = "2018,2019,2020,2021,2022,2023,2024,2025",
cmdCode = "TOTAL") |>
req_verbose() |>
req_perform()-> GET /data/v1/get/C/A/HS?reporterCode=222%2C320%2C188%2C558%2C84%2C340&partnerCode=0&flowCode=X&period=2018%2C2019%2C2020%2C2021%2C2022%2C2023%2C2024%2C2025&cmdCode=TOTAL HTTP/1.1
-> Host: comtradeapi.un.org
-> User-Agent: httr2/1.3.0 r-curl/8.0.0 libcurl/8.14.1
-> Accept: */*
-> Accept-Encoding: deflate, gzip
-> Ocp-Apim-Subscription-Key: 4e16602deffc43279e344f14b62bb1b4
->
<- HTTP/1.1 200 OK
<- Transfer-Encoding: chunked
<- Content-Type: application/json; charset=utf-8
<- x-frame-options: deny
<- X-Content-Type-Options: nosniff
<- X-XSS-Protection: 1;mode=block
<- strict-transport-security: max-age=31536000;includeSubDomains
<- content-security-policy: frame-src 'self'
<- x-permitted-cross-domain-policies: none
<- Referrer-Policy: no-referrer-when-downgrade
<- Permissions-Policy: accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=()
<- Request-Context: appId=cid-v1:9b6e1d5a-3728-46ff-b743-6d33d23e54a6
<- Date: Fri, 18 Sep 2026 12:10:33 GMT
<-
# A tibble: 6 × 47
typeCode freqCode refPeriodId refYear refMonth period reporterCode reporterISO
<chr> <chr> <int> <int> <int> <chr> <int> <lgl>
1 C A 20180101 2018 52 2018 84 NA
2 C A 20180101 2018 52 2018 84 NA
3 C A 20180101 2018 52 2018 84 NA
4 C A 20180101 2018 52 2018 84 NA
5 C A 20180101 2018 52 2018 84 NA
6 C A 20180101 2018 52 2018 84 NA
# ℹ 39 more variables: reporterDesc <lgl>, flowCode <chr>, flowDesc <lgl>,
# partnerCode <int>, partnerISO <lgl>, partnerDesc <lgl>, partner2Code <int>,
# partner2ISO <lgl>, partner2Desc <lgl>, classificationCode <chr>,
# classificationSearchCode <chr>, isOriginalClassification <lgl>,
# cmdCode <chr>, cmdDesc <lgl>, aggrLevel <lgl>, isLeaf <lgl>,
# customsCode <chr>, customsDesc <lgl>, mosCode <chr>, motCode <int>,
# motDesc <lgl>, qtyUnitCode <int>, qtyUnitAbbr <lgl>, qty <dbl>, …
library (countrycode)
exportaciones_ca3 <- exportaciones_ca3 |>
mutate(
refYear = as.numeric(refYear),
primaryValue = as.numeric(primaryValue),
nombre_pais = countrycode(reporterCode, origin = "un", destination = "country.name.es")
)
# Crear la gráfica
grafica_3 <- ggplot(exportaciones_ca3, aes(x = refYear, y = primaryValue/m_m_usd, color = nombre_pais,group = nombre_pais)) +
geom_line() + # 1. Dibuja las líneas
geom_point() + # 2. Dibuja los puntos sobre las líneas
labs(
title = "Gráfica 3: Exportaciones de Centroamérica hacia el resto del mundo",
x = "Año",
y = "Valor en miles de millones de USD",
color = "País",
caption = "Fuente: UN Comtrade utilizando consulta HTTP validada con Key y la libreria httr"
)
grafica_3Preguntas para la clase:
¿Qué es el estandar M49?
¿Qué diferencia hay entre usar el paquete comtradr y construir la URL manualmente con httr2?
¿Por qué la API de UN Comtrade nos exige incluir una “Subscription Key” (clave de API) para darnos los datos?
Aunque el script en R maneja la consulta, el flujo sigue estando completamente condicionado por la infraestructura de la ONU. Cambios imprevistos en la arquitectura de su API (como la migración de endpoints o modificaciones en los límites de la “Subscription Key”) pueden romper el código por completo, lo que exige un mantenimiento constante del script.
Como analistas de datos, no podemos confiar ciegamente en la respuesta del servidor; se requiere un criterio técnico estricto en R para limpiar, transformar y escalar la información antes de que sea apta para la toma de decisiones.