Slow Web Scrapping

i have this code to scrap a website, but in my computer it runs really slow, can someone with some more experiencia can tell me what am i doing wrong? I´m using puppeteer in js, this is a page of real state in mexico, so probably you’ll need to understand a little bit of spanish, I tried to use the network in the inspector but i don´t find any call to an api that is usefull for the info i need

const mysql = require('mysql2');
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');

puppeteer.use(StealthPlugin());

function delay(time) {
    return new Promise(function(resolve) { 
        setTimeout(resolve, time)
    });
}

async function createInmueble(page, info){

    return await page.evaluate((info) => {
        let inmueble = {};

        inmueble.titulo = info.title;
        inmueble.precios = info?.priceOperationTypes?.[0]?.prices?.[0]?.amount.toString() || document.querySelector(".price-items").firstElementChild.textContent.trim().split(" ")[1];
        inmueble.moneda = info?.priceOperationTypes?.[0]?.prices?.[0]?.isoCode || document.querySelector(".price-items").firstElementChild.textContent.trim().split(" ")[0];
        inmueble.inmobiliaria = info?.publisher?.name || null;
        inmueble.tipo = info?.realEstateType?.name || null;
        inmueble.estado = info?.postingLocation?.location?.parent?.parent?.name || null;
        inmueble.municipio = info?.postingLocation?.location?.parent?.name || null;
        inmueble.zona = info?.postingLocation?.location?.name || null;
        inmueble.latitud = info?.postingLocation?.postingGeolocation?.geolocation?.latitude.toString() || null
        inmueble.longitud = info?.postingLocation?.postingGeolocation?.geolocation?.longitude.toString() || null
        inmueble.imagenes = info?.pictures?.map(picture => picture.url1200x1200) || null;
        inmueble.metros_totales = info?.mainFeatures?.CFT100?.value || "0";
        inmueble.metros_construidos = info?.mainFeatures?.CFT101?.value || "0";
        inmueble.banios = info?.mainFeatures?.CFT3?.value || "0";
        inmueble.estacionamientos = info?.mainFeatures?.CFT7?.value || "0";
        inmueble.recamaras = info?.mainFeatures?.CFT2?.value || "0";
        inmueble.antiguedad = info?.mainFeatures?.CFT5?.value || "0";
        inmueble.medio_banio = info?.mainFeatures?.CFT4?.value || "0";
        inmueble.direcciones = info?.postingLocation?.address?.name || null;
        inmueble.new_latitud = inmueble?.latitud || null;
        inmueble.new_longitud = inmueble?.longitud || null;
        inmueble.url = info?.seoAttributes?.canonical || null;
        inmueble.telefono = info?.whatsApp;
        inmueble.nombre_asesor = null;
        inmueble.email = null;

        return inmueble;
    }, info);
}

async function getInfoInmueble(page){
    console.log(page.url());

    const info = await page.evaluate(() => {

        return POSTING;
    });

    return info;
}

async function scopeEnlaces(page, enlaces){
    let info;
    let inmuebles = [];
    for(const enlace of enlaces){
        try{
            await page.goto(enlace);
            info = await getInfoInmueble(page);
            const inmueble = await createInmueble(page, info);
            inmuebles.push(inmueble);
        }
        catch(err){
            console.error("error", enlace);
        }
    }

    return inmuebles;
}

async function getEnlaces(page){
    const enlaces = await page.evaluate(() => {

        try{
            let div_padre = document.querySelector(".postings-container");

            const div_hijo = Array.from(div_padre.children);

            const enlaces = div_hijo.map(div => {
                const link_base = "https://www.vivanuncios.com.mx";
                const div_enlace = div.firstElementChild;
                const enlace = div_enlace.getAttribute("data-to-posting");

                return link_base+enlace;
            }).filter(enlace => enlace !== null);

            return enlaces;
        }
        catch(err){
            console.log("Error en page:", err);
            return [];
        }
    });

    return enlaces;
}

async function getInmuebles(page, url) {
    await page.goto(url);
    const enlaces = await getEnlaces(page);
    return await scopeEnlaces(page, enlaces);
}

async function postInmueble(inmueble){
    let query = `INSERT INTO inmueblesvivanuncio (titulo, precios, moneda, inmobiliaria, tipo, estado, municipio, zona, latitud, longitud, imagenes, metros_totales, metros_construidos, banios, estacionamientos, recamaras, antiguedad, medio_banio, direcciones, new_latitud, new_longitud, url, telefono, nombre_asesor, email) VALUES ('${inmueble.titulo}', '${inmueble.precios}', '${inmueble.moneda}', '${inmueble.inmobiliaria}', '${inmueble.tipo}', '${inmueble.estado}', '${inmueble.municipio}', '${inmueble.zona}', '${inmueble.latitud}', '${inmueble.longitud}', '${JSON.stringify(inmueble.imagenes)}', '${inmueble.metros_totales}', '${inmueble.metros_construidos}', '${inmueble.banios}', '${inmueble.estacionamientos}', '${inmueble.recamaras}', '${inmueble.antiguedad}', '${inmueble.medio_banio}', '${inmueble.direcciones}', '${inmueble.new_latitud}', '${inmueble.new_longitud}', '${inmueble.url}', '${inmueble.telefono}', '${inmueble.nombre_asesor}', '${inmueble.email}')`;
    
    connection.query(query, (error, results, fields) => {
        if (error){
            console.log("error", error);
        }
        else{
            console.log('Fila insertada con éxito');
        }
    });
}

async function scopeInmuebles(all_inmuebles){
    await all_inmuebles.forEach(async inmueble => {
        try{
            await postInmueble(inmueble);
        }
        catch(err){
            console.error("surgio un error");
        }
    });
}

async function getBotonSiguiente(page){
    const boton = await page.evaluate(() => {
        const boton = document.querySelector(".sc-n5babu-2.kNwjYM");

        if(boton){
            return true;
        }

        return false;
    });

    return boton
}

async function scanPage(page){
    const BASE_URL = 'https://www.vivanuncios.com.mx/s-casas-en-venta';
    let estado = "chihuahua";
    let i = 16;
    let all_inmuebles = [];
    let boton;

    do{
        let url = `${BASE_URL}/${estado}/page-${i}`;
        console.log("Pagina nueva: ", url, "n");

        const inmuebles = await getInmuebles(page, url);
        all_inmuebles = all_inmuebles.concat(inmuebles);

        await page.goto(url);
        
        if(i%5 == 0){ 
            await scopeInmuebles(all_inmuebles);
            all_inmuebles = [];
        }

        boton = await getBotonSiguiente(page);
        if (boton) {
            i++;
        } else {
            console.log("No hay boton");
            await scopeInmuebles(all_inmuebles);
        }

    } while(boton && i <= 1000);

    return all_inmuebles;
}

async function scrapeo(){
    const browser = await puppeteer.launch({headless: false, executablePath: "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"});
    const page = await browser.newPage();
    
    const inmuebles = await scanPage(page);

    await browser.close();

    return inmuebles;
}

async function main(){
    const all_inmuebles = await scrapeo();
    connection.end();
}

const connection = mysql.createConnection({
    host: '127.0.0.1',
    user: 'root',
    password: 'CocacolA&_2016',
    database: 'InmobiliariaPrueba'
});

connection.connect();

main();

I have try concurrency but it just makes it slower