Sylvatica.

Back to Library

MCPDL

js 1/27/2026
9
const axios = require('axios')
const cheerio = require('cheerio')

async function mcpedlSearch(query) {
    try {
        const { data } = await axios.get(`https://mcpedl.org/?s=${encodeURIComponent(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(data)
        const result = []

        $('.g-block.size-20 article').each((i, el) => {
            if (i >= 20) return
            const title = $(el).find('.entry-title a').text().trim() || 'No title'
            const link = $(el).find('.entry-title a').attr('href') || 'No link'
            let image = $(el).find('.post-thumbnail img').attr('data-srcset') || $(el).find('.post-thumbnail img').attr('src') || 'No image'
            
            if (image.includes(',')) {
                image = image.split(',')[0].split(' ')[0]
            }
            const rating = $(el).find('.rating-wrapper span').text().trim() || 'No rating'

            result.push({ title, link, image, rating })
        })

        return result
    } catch (error) {
        throw new Error('Failed to search MCPEDL.')
    }
}

module.exports = { mcpedlSearch }