# quickscraper-sdk

> Quick Scraper SDK NodeJS APIs

Latest version **2.0.8** (published 2024-04-04) · MIT license · 0 weekly downloads

## Install

```sh
npm install quickscraper-sdk
pnpm add quickscraper-sdk
yarn add quickscraper-sdk
bun add quickscraper-sdk
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.8 |
| Published | 2024-04-04 |
| First published | 2021-06-26 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=10.16.3 |
| Dependencies | 5 |
| Unpacked size | 45.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | QuickScraper Developers |
| Maintainers | quickscraper |
| Keywords | quickscraper, scraper, web scrapers, proxies, CAPTCHAs, headless browsers, crawling, web-crawling, crawling-websites |

## Links

- npm: https://www.npmjs.com/package/quickscraper-sdk
- Repository: https://github.com/quickscraper/quickscraper-sdk-nodejs
- Homepage: https://github.com/quickscraper/quickscraper-sdk-nodejs#readme
- Issues: https://github.com/quickscraper/quickscraper-sdk-nodejs/issues
- npm.io page: https://npm.io/package/quickscraper-sdk

## Dependencies (5)

- [got](https://npm.io/package/got.md) ^11.8.1
- [debug](https://npm.io/package/debug.md) ^4.3.1
- [lodash](https://npm.io/package/lodash.md) ^4.17.21
- [semver](https://npm.io/package/semver.md) ^7.3.4
- [fs-extra](https://npm.io/package/fs-extra.md) ^9.0.1

## Alternatives

- [@opentelemetry/exporter-zipkin](https://npm.io/package/@opentelemetry/exporter-zipkin.md) — 14.8M weekly downloads
- [pusher-js](https://npm.io/package/pusher-js.md) — 2.0M weekly downloads
- [browserify](https://npm.io/package/browserify.md) — 1.7M weekly downloads
- [sqs-consumer](https://npm.io/package/sqs-consumer.md) — 1.7M weekly downloads
- [@sanity/eventsource](https://npm.io/package/@sanity/eventsource.md) — 930.8K weekly downloads

## Recent versions

- 2.0.8 (latest) — 2024-04-04
- 2.0.7 — 2024-01-02
- 2.0.6 — 2023-11-08
- 2.0.5 — 2023-11-08
- 2.0.4 — 2023-07-25
- 2.0.3 — 2023-07-25
- 2.0.2 — 2023-07-25
- 2.0.1 — 2023-07-25
- 2.0.0 — 2023-06-19
- 1.1.9 — 2023-04-12
- 1.1.8 — 2023-03-29
- 1.1.7 — 2023-03-28
- 1.1.6 — 2022-11-01
- 1.1.5 — 2022-11-01
- 1.1.4 — 2022-10-28
- … 6 more at https://npm.io/package/quickscraper-sdk/versions

## README

# Quick Scraper NodeJS SDK

[![Version](https://img.shields.io/npm/v/quickscraper-sdk.svg)](https://www.npmjs.org/package/quickscraper-sdk)

<img src="https://app.quickscraper.co/assets/images/quick_scraper_logo_3.png" width="300" />

[Register For Free https://www.quickscraper.co](https://www.quickscraper.co)

##### It does supports EcmaScript 8, TypeScript, async-await, Promises !

##### It does also supports for AWS Lambda like serverless cloud function call.

##### Please Feel free to create Issue for any help !

## Installation

```bash
npm install quickscraper-sdk@latest --save
```

## Get Free Account (No Credit Card Required)

- Register yourself here [https://app.quickscraper.co/auth/signup](https://app.quickscraper.co/auth/signup)

## Examples

### Typescript

```typescript
import { QuickScraper } from "quickscraper-sdk";
const QuickScraperClient = new QuickScraper();

try {
  const ACCESS_TOKEN = "";
  QuickScraperClient.setAccessToken(ACCESS_TOKEN);
  const requestUrl = "http://httpbin.org/ip";
  const response = await QuickScraperClient.getHtml(requestUrl);
  console.log("htmlResponse ", response.data);
  console.log("metadata ", response.metadata);
  // Manipulate your response here using cheerio
} catch (error) {
  console.log("error ", error);
}
```

### Javascript

```javascript
const QuickScraper = require("quickscraper-sdk");
const QuickScraperClient = new QuickScraper();

try {
  const ACCESS_TOKEN = "";
  QuickScraperClient.setAccessToken(ACCESS_TOKEN);
  const requestUrl = "http://httpbin.org/ip";
  const response = await QuickScraperClient.getHtml(requestUrl);
  console.log("htmlResponse ", response.data);
  console.log("metadata ", response.metadata);
  // Manipulate your response here using cheerio
} catch (error) {
  console.log("error ", error);
}
```

### Basic Usage

```javascript
const QuickScraper = require("quickscraper-sdk");
const QuickScraperClient = new QuickScraper();
QuickScraperClient.setAccessToken("YOUR_ACCESS_TOKEN");
const response = await QuickScraperClient.getHtml("http://httpbin.org/ip");
```

### Write a HTML to File

```javascript
const QuickScraper = require("quickscraper-sdk");
const QuickScraperClient = new QuickScraper();
QuickScraperClient.setAccessToken("YOUR_ACCESS_TOKEN");
await QuickScraperClient.writeHtmlToFile("http://httpbin.org/ip", 'filename.html');
```

### Rendering Javascript

```javascript
const QuickScraper = require("quickscraper-sdk");
const QuickScraperClient = new QuickScraper();
QuickScraperClient.setAccessToken("YOUR_ACCESS_TOKEN");
const response = await QuickScraperClient.getHtml("http://httpbin.org/ip", {
  render: true,
});
```

### Custom Headers

```javascript
const QuickScraper = require("quickscraper-sdk");
const QuickScraperClient = new QuickScraper();
QuickScraperClient.setAccessToken("YOUR_ACCESS_TOKEN");
const response = await QuickScraperClient.getHtml("https://httpbin.org/headers", {
//This field is added to set cookis,authorizarion token etc from request header.
  isKeepHeaders: true,//This value will be true when we want to use header
  customRequestHeaders: {
    "X-My-Custom-Header": "QS-APP",//Supports values like `'Accept-Encoding': 'gzip,deflate,compress'`
  },
});
```

### Geographic Location

```javascript
const QuickScraper = require("quickscraper-sdk");
const QuickScraperClient = new QuickScraper();
QuickScraperClient.setAccessToken("YOUR_ACCESS_TOKEN");
const response = await QuickScraperClient.getHtml("http://httpbin.org/ip", {
  country_code: "US", //Add your Geotargeting country which you are selecting from request page,for example, for Canada value like `CA`,for China value like `CN`
});
console.log(response);
```

### Premium Residential/Mobile Proxy Pools

```javascript
const QuickScraper = require("quickscraper-sdk");
const QuickScraperClient = new QuickScraper();
QuickScraperClient.setAccessToken("YOUR_ACCESS_TOKEN");
const response = await QuickScraperClient.getHtml("http://httpbin.org/ip", {
  premium: true,//Up or premium proxies will be picked
});
console.log(response);
```

### Account Information

```javascript
const QuickScraper = require("quickscraper-sdk");
const QuickScraperClient = new QuickScraper();
QuickScraperClient.setAccessToken("YOUR_ACCESS_TOKEN");
const usage = await QuickScraperClient.account();
console.log(usage);
```

### Device Type

```javascript
const QuickScraper = require("quickscraper-sdk");
const QuickScraperClient = new QuickScraper();
QuickScraperClient.setAccessToken("YOUR_ACCESS_TOKEN");
const response = await QuickScraperClient.getHtml("http://httpbin.org/ip", {
  device_type: 'mobile' //Add value `mobile` if the device which you are using is mobile and no need to provide this option if want to scrap site as desktop view
});
console.log(response);
```

### Parser Addon

```javascript
const QuickScraper = require("quickscraper-sdk");
const QuickScraperClient = new QuickScraper();
QuickScraperClient.setAccessToken("YOUR_ACCESS_TOKEN");
const response = await QuickScraperClient.getHtml("http://httpbin.org/ip", {
  parserSubscriptionId: 'YOUR_PARSER_SUBSCRIPTION_ID' //Get the parser subscription id from request page when you select parser and paste here, for example value like '4a0360ea-042a-555e-b214-e3054a400f2a'
});
console.log(response);
```
### Webhook Addon

```javascript
const QuickScraper = require("quickscraper-sdk");
const QuickScraperClient = new QuickScraper();
QuickScraperClient.setAccessToken("YOUR_ACCESS_TOKEN");
const response = await QuickScraperClient.getHtml("http://httpbin.org/ip", {
  webhookRequestId: 'WEBHOOK_REQUEST_ID' //Get the webhook id from dashboard and paste here, for example value like `2233-34jkjsd-324jkds-3243kh`
});
console.log(response);
```
### Get JSON from data

```javascript
const QuickScraper = require("quickscraper-sdk");
const QuickScraperClient = new QuickScraper();
QuickScraperClient.setAccessToken("YOUR_ACCESS_TOKEN");
const response = await QuickScraperClient.getData("http://httpbin.org/ip", {
  parserSubscriptionId: 'YOUR_PARSER_SUBSCRIPTION_ID' //Get the parser subscription id from request page when you select parser and paste here, for example value like '4a0360ea-042a-555e-b214-e3054a400f2a'
});
console.log(response);
```

### Submit form data

```javascript
const QuickScraper = require("quickscraper-sdk");
const QuickScraperClient = new QuickScraper();
QuickScraperClient.setAccessToken("YOUR_ACCESS_TOKEN");
const response = await QuickScraperClient.getData("http://httpbin.org/ip", {
//This field is added when we want to scrap data after login or sign up.
	formData: {
			formSelector: 'FORM_SELECTOR',//Supports values like `'form[class="unique_class"]'`
			submitButtonSelector: 'SUBMIT_BUTTON_SELECTOR',//Supports values like `'button[class="unique_class"]'`
			formSelectorScript: 'FORM_SELECTOR_SCRIPT',//Supports values like `document.getElementById("demo")`
			submitButtonSelectorScript: 'SUBMIT_BUTTON_SELECTOR_SCRIPT',//Supports values like `document.getElementById("demo")`
			formFields: [
				{
					value: 'VALUE_TO_PASS_IN_FORM',//Add value of form input fields
					selectorScript: 'SELECT_INPUT',//Supports values like `'input[class="unique_class"]','span[class="unique_class"]'`
					isScript: 'BOOLEAN'//If your selector has JavaScript code then make this true
				}
			]
		},
	isKeepFormDataSelection: true,

});
console.log(response);
```

### Add dynamic inputs

```javascript
const QuickScraper = require("quickscraper-sdk");
const QuickScraperClient = new QuickScraper();
QuickScraperClient.setAccessToken("YOUR_ACCESS_TOKEN");
const response = await QuickScraperClient.getData("http://httpbin.org/ip", {
	parserSubscriptionId: 'YOUR_PARSER_SUBSCRIPTION_ID',
   //These dynamic inputs field is required when some input fields are required to get data of page
	dynamicInputs: [
		{
			"name":"YOUR_INPUT_NAME",//Name stands for input name field like `Username`,`password`,`limit` etc
			"value":"YOUR_VALUE" //Value of name field like `abc`,`123456789`,`25`
		}
	]
});
console.log(response);
```

### Actions

```javascript
const QuickScraper = require("quickscraper-sdk");
const QuickScraperClient = new QuickScraper();
QuickScraperClient.setAccessToken("YOUR_ACCESS_TOKEN");
const response = await QuickScraperClient.getHtml("https://www.hilton.com/en/locations/india/?WT.mc_id=zLADA0IN1MB2PSH3GGL4INTCRB5dkt6MULTIBR7en_&epid!_&ebuy!&&&&&gad_source=1&gclid=CjwKCAiAvJarBhA1EiwAGgZl0HWfZEaLc_HWhRFRxTT3gs8pwQvFZKtLPNMj3szkjCbFzlef4ox_XxoCGDYQAvD_BwE&gclsrc=aw.ds", {
	customSelectors: [{
			"name": "YOUR_VALUE", //Name stands for action name and it supports only 2 actions like `waitForElement` and `click`
			'selectorScript': "YOUR_SELECTOR", //Supports values like `'a[href="google.com"]', 'span[class="unique_class"]', document.getElementById("demo")`
			'options': null, //This options support timeout feature only like `{"timeout":3000}`
			'isScript': false //If your selector has JavaScript code then make this true
		}],
		keepSelection: true
});
console.log(response);
```

### Scroll To Bottom Of The Page

```javascript
const QuickScraper = require("quickscraper-sdk");
const QuickScraperClient = new QuickScraper();
QuickScraperClient.setAccessToken("YOUR_ACCESS_TOKEN");
const response = await QuickScraperClient.getHtml("YOUR_REQUEST_URL", {
	isScroll: true,
	scrollTimeout: 1000 // Consider as milliseconds, Wait for start scraping
});
console.log(response);
```

## Do you need an expert?

Are you finding a developer for your world-class product? If yes, please contact here.
Originally by [QuickScraper Developers - app@quickscraper.co](mailto:app@quickscraper.co).

---
_Source: https://npm.io/package/quickscraper-sdk · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
