Back to Library
gsmarena
js • 1/27/2026
12
const axios = require('axios')
const cheerio = require('cheerio')
async function gsmSearch(query) {
try {
const response = await axios({
method: 'get',
url: `https://gsmarena.com/results.php3?sQuickSearch=yes&sName=${query}`,
timeout: 30000,
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
},
})
const $ = cheerio.load(response.data)
const result = []
const device = $('.makers').find('li')
device.each((i, e) => {
const img = $(e).find('img')
const id = $(e).find('a').attr('href')?.replace('.php', '')
const name = $(e).find('span').html()?.split('<br>').join(' ')
const thumbnail = img.attr('src')
const description = img.attr('title')
if (id && name) {
result.push({
id,
name,
thumbnail,
description,
})
}
})
return result
} catch (error) {
throw new Error(error.message || 'Failed to fetch data from GSMArena')
}
}
module.exports = { gsmSearch }