npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

scrapingbee

v1.8.2

Published

ScrapingBee Node SDK

Downloads

112,388

Readme

ScrapingBee Node SDK

ScrapingBee is a web scraping API that handles headless browsers and rotates proxies for you. The Node SDK makes it easier to interact with ScrapingBee's API.

Installation

You can install ScrapingBee Node SDK with npm.

npm install scrapingbee

Usage

The ScrapingBee Node SDK is a wrapper around the axios library.

Signup to ScrapingBee to get your API key and some free credits to get started.

Table of Contents


HTML API

The HTML API allows you to scrape any webpage and get the HTML content.

GET Request

const { ScrapingBeeClient } = require('scrapingbee');

async function get(url) {
    const client = new ScrapingBeeClient('YOUR-API-KEY');
    const response = await client.htmlApi({
        url: url,
        params: {
            render_js: true,
            extract_rules: { title: 'h1', links: 'a @href' },
            js_scenario: {
                instructions: [
                    { click: '#button' },
                    { wait: 500 },
                    { scroll_y: 1000 },
                ]
            },
        }
    });

    const decoder = new TextDecoder();
    const text = decoder.decode(response.data);
    console.log(text);
}

get('https://example.com');

POST Request

const { ScrapingBeeClient } = require('scrapingbee');

async function post(url) {
    const client = new ScrapingBeeClient('YOUR-API-KEY');
    const response = await client.htmlApi({
        url: url,
        method: 'POST',
        'username=user&password=pass',
        params: {
            render_js: false,
        },
        headers: {
            'Custom-Header': 'value',
        },
        cookies: {
            session: 'abc123',
        },
    });

    const decoder = new TextDecoder();
    const text = decoder.decode(response.data);
    console.log(text);
}

post('https://httpbin.org/post');

Screenshot

const fs = require('fs');
const { ScrapingBeeClient } = require('scrapingbee');

async function screenshot(url, path) {
    const client = new ScrapingBeeClient('YOUR-API-KEY');
    const response = await client.htmlApi({
        url: url,
        params: {
            screenshot: true,
            screenshot_full_page: true,
            window_width: 375,
        },
    });

    fs.writeFileSync(path, response.data);
}

screenshot('https://example.com', './screenshot.png');

Google Search API

Scrape Google search results in real-time.

const { ScrapingBeeClient } = require('scrapingbee');

async function googleSearch(query) {
    const client = new ScrapingBeeClient('YOUR-API-KEY');
    const response = await client.googleSearch({
        search: query,
        params: {
            language: 'en',
            country_code: 'us',
            page: 1,
            search_type: 'classic',
            device: 'desktop',
            light_request: true,
            nfpr: false,
            add_html: false,
        }
    });

    console.log(response.data);
}

googleSearch('web scraping tools');

Amazon API

Scrape Amazon search results and product details.

Amazon Search

const { ScrapingBeeClient } = require('scrapingbee');

async function amazonSearch(query) {
    const client = new ScrapingBeeClient('YOUR-API-KEY');
    const response = await client.amazonSearch({
        query: query,
        params: {
            domain: 'com',
            language: 'en',
            country: 'us',
            device: 'desktop',
            pages: 1,
            start_page: 1,
            sort_by: 'featured',
            currency: 'USD',
            add_html: false,
            screenshot: false,
        }
    });

    console.log(response.data);
}

amazonSearch('laptop');

Amazon Product

const { ScrapingBeeClient } = require('scrapingbee');

async function amazonProduct(asin) {
    const client = new ScrapingBeeClient('YOUR-API-KEY');
    const response = await client.amazonProduct({
        query: asin,
        params: {
            domain: 'com',
            language: 'en',
            country: 'us',
            device: 'desktop',
            autoselect_variant: false,
            add_html: false,
            screenshot: false,
        }
    });

    console.log(response.data);
}

amazonProduct('B0D2Q9397Y');

Walmart API

Scrape Walmart search results and product details.

Walmart Search

const { ScrapingBeeClient } = require('scrapingbee');

async function walmartSearch(query) {
    const client = new ScrapingBeeClient('YOUR-API-KEY');
    const response = await client.walmartSearch({
        query: query,
        params: {
            device: 'desktop',
            sort_by: 'best_match',
            min_price: 10,
            max_price: 1000,
            delivery_zip: '10001',
            store_id: '',
            fulfillment_speed: '',
            add_html: false,
            screenshot: false,
        }
    });

    console.log(response.data);
}

walmartSearch('laptop');

Walmart Product

const { ScrapingBeeClient } = require('scrapingbee');

async function walmartProduct(productId) {
    const client = new ScrapingBeeClient('YOUR-API-KEY');
    const response = await client.walmartProduct({
        product_id: productId,
        params: {
            device: 'desktop',
            delivery_zip: '10001',
            store_id: '',
            add_html: false,
            screenshot: false,
        }
    });

    console.log(response.data);
}

walmartProduct('123456789');

YouTube API

Scrape YouTube search results, video metadata, transcripts, and trainability data.

YouTube Search

const { ScrapingBeeClient } = require('scrapingbee');

async function youtubeSearch(query) {
    const client = new ScrapingBeeClient('YOUR-API-KEY');
    const response = await client.youtubeSearch({
        search: query,
        params: {
            sort_by: 'relevance',
            type: 'video',
            upload_date: '',
            duration: '',
            hd: false,
            '4k': false,
            subtitles: false,
            live: false,
        }
    });

    console.log(response.data);
}

youtubeSearch('web scraping tutorial');

YouTube Metadata

const { ScrapingBeeClient } = require('scrapingbee');

async function youtubeMetadata(videoId) {
    const client = new ScrapingBeeClient('YOUR-API-KEY');
    const response = await client.youtubeMetadata({
        video_id: videoId,
    });

    console.log(response.data);
}

youtubeMetadata('dQw4w9WgXcQ');

YouTube Transcript

const { ScrapingBeeClient } = require('scrapingbee');

async function youtubeTranscript(videoId) {
    const client = new ScrapingBeeClient('YOUR-API-KEY');
    const response = await client.youtubeTranscript({
        video_id: videoId,
        params: {
            language: 'en',
            transcript_origin: 'auto_generated',
        }
    });

    console.log(response.data);
}

youtubeTranscript('dQw4w9WgXcQ');

YouTube Trainability

const { ScrapingBeeClient } = require('scrapingbee');

async function youtubeTrainability(videoId) {
    const client = new ScrapingBeeClient('YOUR-API-KEY');
    const response = await client.youtubeTrainability({
        video_id: videoId,
    });

    console.log(response.data);
}

youtubeTrainability('dQw4w9WgXcQ');

ChatGPT API

Use ChatGPT with optional web search capabilities.

const { ScrapingBeeClient } = require('scrapingbee');

async function askChatGPT(prompt) {
    const client = new ScrapingBeeClient('YOUR-API-KEY');
    const response = await client.chatGPT({
        prompt: prompt,
        params: {
            search: true,
            country_code: 'us',
            add_html: false,
        }
    });

    console.log(response.data);
}

askChatGPT('What are the latest web scraping trends?');

Usage API

Check your API credit usage and account limits.

const { ScrapingBeeClient } = require('scrapingbee');

async function checkUsage() {
    const client = new ScrapingBeeClient('YOUR-API-KEY');
    const response = await client.usage();

    console.log(response.data);
}

checkUsage();

Retries

All API methods support automatic retry for 5XX responses.

const { ScrapingBeeClient } = require('scrapingbee');

async function scrapeWithRetry() {
    const client = new ScrapingBeeClient('YOUR-API-KEY');
    const response = await client.htmlApi({
        url: 'https://example.com',
        retries: 5,
        timeout: 30000,
    });

    console.log(response.data);
}

Promise and Async/Await

All methods return Promises, so you can use either .then() or async/await:

// Using async/await
const response = await client.googleSearch({ search: 'test' });

// Using .then()
client.googleSearch({ search: 'test' })
    .then(response => console.log(response.data))
    .catch(error => console.error(error));

Legacy Methods (Deprecated)

The get() and post() methods are deprecated and will be removed in a future version. Please use htmlApi() instead.

// Deprecated
await client.get({ url: '...' });
await client.post({ url: '...' });

// Use instead
await client.htmlApi({ url: '...', method: 'GET' });
await client.htmlApi({ url: '...', method: 'POST' });

Documentation

For more details on all available parameters, visit ScrapingBee's documentation.