# Shady Rays® Polarized Scraper

Scrape Shady Rays® Polarized and extract data on eyewear from shadyrays.com. Our Shady Rays® Polarized API lets you crawl product information and pricing. The saved data can be downloaded as HTML, JSON, CSV, Excel, and XML.

## Actor Statistics

- Total users: 4
- Monthly users: 2
- Runs succeeded: 100.00%
- Categories: E-commerce, Open source

## Pricing

Pay per usage

## Input Schema

- **maxRequestsPerCrawl** (type: integer): How many items to extract from shadyrays.com
- **extendOutputFunction** (type: string): Add or remove properties on the output object or omit the output returning null
- **extendScraperFunction** (type: string): Advanced function that allows you to extend the default scraper functionality, allowing you to manually perform actions on the page
- **customData** (type: object): Any data that you want to have available inside the Extend Output/Scraper Function
- **fetchHtml** (type: boolean): If you decide to fetch the HTML of the pages, it will take twice as long. Make sure to only enable this if needed
- **maxConcurrency** (type: integer): Max concurrency to use
- **maxRequestRetries** (type: integer): Set the max request retries
- **debugLog** (type: boolean): Enable a more verbose logging to be able to understand what's happening during the scraping

## API example

## Shady Rays® Polarized Scraper

- **OpenAPI Version:** `3.1.1`
- **API Version:** `0.0`

Scrape Shady Rays® Polarized and extract data on eyewear from shadyrays.com. Our Shady Rays® Polarized API lets you crawl product information and pricing. The saved data can be downloaded as HTML, JSON, CSV, Excel, and XML.

### Servers

- **URL:** `https://api.apify.com/v2`

### Operations

#### Executes an Actor, waits for its completion, and returns Actor's dataset items in response.

- **Method:** `POST`
- **Path:** `/acts/mshopik~shady-raysr-scraper/run-sync-get-dataset-items`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`customData`**

  `object`, default: `{}` — Any data that you want to have available inside the Extend Output/Scraper Function

- **`debugLog`**

  `boolean`, default: `false` — Enable a more verbose logging to be able to understand what's happening during the scraping

- **`extendOutputFunction`**

  `string`, default: `"async ({ data, item, product, images, fns, name, request, variants, context, customData, input, Apify }) => {\n return item;\n}"` — Add or remove properties on the output object or omit the output returning null

- **`extendScraperFunction`**

  `string`, default: `"async ({ fns, customData, Apify, label }) => {\n \n}"` — Advanced function that allows you to extend the default scraper functionality, allowing you to manually perform actions on the page

- **`fetchHtml`**

  `boolean`, default: `true` — If you decide to fetch the HTML of the pages, it will take twice as long. Make sure to only enable this if needed

- **`maxConcurrency`**

  `integer`, default: `20` — Max concurrency to use

- **`maxRequestRetries`**

  `integer`, default: `3` — Set the max request retries

- **`maxRequestsPerCrawl`**

  `integer`, default: `20` — How many items to extract from shadyrays.com

**Example:**

```
{
  "maxRequestsPerCrawl": 20,
  "extendOutputFunction": "async ({ data, item, product, images, fns, name, request, variants, context, customData, input, Apify }) => {\n  return item;\n}",
  "extendScraperFunction": "async ({ fns, customData, Apify, label }) => {\n \n}",
  "customData": {},
  "fetchHtml": true,
  "maxConcurrency": 20,
  "maxRequestRetries": 3,
  "debugLog": false
}
```

##### Responses

###### Status: 200 OK

#### Executes an Actor and returns information about the initiated run in response.

- **Method:** `POST`
- **Path:** `/acts/mshopik~shady-raysr-scraper/runs`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`customData`**

  `object`, default: `{}` — Any data that you want to have available inside the Extend Output/Scraper Function

- **`debugLog`**

  `boolean`, default: `false` — Enable a more verbose logging to be able to understand what's happening during the scraping

- **`extendOutputFunction`**

  `string`, default: `"async ({ data, item, product, images, fns, name, request, variants, context, customData, input, Apify }) => {\n return item;\n}"` — Add or remove properties on the output object or omit the output returning null

- **`extendScraperFunction`**

  `string`, default: `"async ({ fns, customData, Apify, label }) => {\n \n}"` — Advanced function that allows you to extend the default scraper functionality, allowing you to manually perform actions on the page

- **`fetchHtml`**

  `boolean`, default: `true` — If you decide to fetch the HTML of the pages, it will take twice as long. Make sure to only enable this if needed

- **`maxConcurrency`**

  `integer`, default: `20` — Max concurrency to use

- **`maxRequestRetries`**

  `integer`, default: `3` — Set the max request retries

- **`maxRequestsPerCrawl`**

  `integer`, default: `20` — How many items to extract from shadyrays.com

**Example:**

```
{
  "maxRequestsPerCrawl": 20,
  "extendOutputFunction": "async ({ data, item, product, images, fns, name, request, variants, context, customData, input, Apify }) => {\n  return item;\n}",
  "extendScraperFunction": "async ({ fns, customData, Apify, label }) => {\n \n}",
  "customData": {},
  "fetchHtml": true,
  "maxConcurrency": 20,
  "maxRequestRetries": 3,
  "debugLog": false
}
```

##### Responses

###### Status: 200 OK

\####### Content-Type: application/json

- **`data`**

  `object`

  - **`actId`**

    `string`

  - **`buildId`**

    `string`

  - **`buildNumber`**

    `string`

  - **`containerUrl`**

    `string`

  - **`defaultDatasetId`**

    `string`

  - **`defaultKeyValueStoreId`**

    `string`

  - **`defaultRequestQueueId`**

    `string`

  - **`finishedAt`**

    `string`, format: `date-time`

  - **`id`**

    `string`

  - **`meta`**

    `object`

    - **`origin`**

      `string`

    - **`userAgent`**

      `string`

  - **`options`**

    `object`

    - **`build`**

      `string`

    - **`diskMbytes`**

      `integer`

    - **`memoryMbytes`**

      `integer`

    - **`timeoutSecs`**

      `integer`

  - **`startedAt`**

    `string`, format: `date-time`

  - **`stats`**

    `object`

    - **`computeUnits`**

      `integer`

    - **`inputBodyLen`**

      `integer`

    - **`rebootCount`**

      `integer`

    - **`restartCount`**

      `integer`

    - **`resurrectCount`**

      `integer`

  - **`status`**

    `string`

  - **`usage`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `integer`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`usageTotalUsd`**

    `number`

  - **`usageUsd`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `number`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`userId`**

    `string`

**Example:**

```
{
  "data": {
    "id": "",
    "actId": "",
    "userId": "",
    "startedAt": "2025-01-08T00:00:00.000Z",
    "finishedAt": "2025-01-08T00:00:00.000Z",
    "status": "READY",
    "meta": {
      "origin": "API",
      "userAgent": ""
    },
    "stats": {
      "inputBodyLen": 2000,
      "rebootCount": 0,
      "restartCount": 0,
      "resurrectCount": 0,
      "computeUnits": 0
    },
    "options": {
      "build": "latest",
      "timeoutSecs": 300,
      "memoryMbytes": 1024,
      "diskMbytes": 2048
    },
    "buildId": "",
    "defaultKeyValueStoreId": "",
    "defaultDatasetId": "",
    "defaultRequestQueueId": "",
    "buildNumber": "1.0.0",
    "containerUrl": "",
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 1,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    },
    "usageTotalUsd": 0.00005,
    "usageUsd": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 0.00005,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    }
  }
}
```

#### Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.

- **Method:** `POST`
- **Path:** `/acts/mshopik~shady-raysr-scraper/run-sync`
- **Tags:** Run Actor

##### Request Body

###### Content-Type: application/json

- **`customData`**

  `object`, default: `{}` — Any data that you want to have available inside the Extend Output/Scraper Function

- **`debugLog`**

  `boolean`, default: `false` — Enable a more verbose logging to be able to understand what's happening during the scraping

- **`extendOutputFunction`**

  `string`, default: `"async ({ data, item, product, images, fns, name, request, variants, context, customData, input, Apify }) => {\n return item;\n}"` — Add or remove properties on the output object or omit the output returning null

- **`extendScraperFunction`**

  `string`, default: `"async ({ fns, customData, Apify, label }) => {\n \n}"` — Advanced function that allows you to extend the default scraper functionality, allowing you to manually perform actions on the page

- **`fetchHtml`**

  `boolean`, default: `true` — If you decide to fetch the HTML of the pages, it will take twice as long. Make sure to only enable this if needed

- **`maxConcurrency`**

  `integer`, default: `20` — Max concurrency to use

- **`maxRequestRetries`**

  `integer`, default: `3` — Set the max request retries

- **`maxRequestsPerCrawl`**

  `integer`, default: `20` — How many items to extract from shadyrays.com

**Example:**

```
{
  "maxRequestsPerCrawl": 20,
  "extendOutputFunction": "async ({ data, item, product, images, fns, name, request, variants, context, customData, input, Apify }) => {\n  return item;\n}",
  "extendScraperFunction": "async ({ fns, customData, Apify, label }) => {\n \n}",
  "customData": {},
  "fetchHtml": true,
  "maxConcurrency": 20,
  "maxRequestRetries": 3,
  "debugLog": false
}
```

##### Responses

###### Status: 200 OK

### Schemas

#### inputSchema

- **Type:**`object`

* **`customData`**

  `object`, default: `{}` — Any data that you want to have available inside the Extend Output/Scraper Function

* **`debugLog`**

  `boolean`, default: `false` — Enable a more verbose logging to be able to understand what's happening during the scraping

* **`extendOutputFunction`**

  `string`, default: `"async ({ data, item, product, images, fns, name, request, variants, context, customData, input, Apify }) => {\n return item;\n}"` — Add or remove properties on the output object or omit the output returning null

* **`extendScraperFunction`**

  `string`, default: `"async ({ fns, customData, Apify, label }) => {\n \n}"` — Advanced function that allows you to extend the default scraper functionality, allowing you to manually perform actions on the page

* **`fetchHtml`**

  `boolean`, default: `true` — If you decide to fetch the HTML of the pages, it will take twice as long. Make sure to only enable this if needed

* **`maxConcurrency`**

  `integer`, default: `20` — Max concurrency to use

* **`maxRequestRetries`**

  `integer`, default: `3` — Set the max request retries

* **`maxRequestsPerCrawl`**

  `integer`, default: `20` — How many items to extract from shadyrays.com

**Example:**

```
{
  "maxRequestsPerCrawl": 20,
  "extendOutputFunction": "async ({ data, item, product, images, fns, name, request, variants, context, customData, input, Apify }) => {\n  return item;\n}",
  "extendScraperFunction": "async ({ fns, customData, Apify, label }) => {\n \n}",
  "customData": {},
  "fetchHtml": true,
  "maxConcurrency": 20,
  "maxRequestRetries": 3,
  "debugLog": false
}
```

#### runsResponseSchema

- **Type:**`object`

* **`data`**

  `object`

  - **`actId`**

    `string`

  - **`buildId`**

    `string`

  - **`buildNumber`**

    `string`

  - **`containerUrl`**

    `string`

  - **`defaultDatasetId`**

    `string`

  - **`defaultKeyValueStoreId`**

    `string`

  - **`defaultRequestQueueId`**

    `string`

  - **`finishedAt`**

    `string`, format: `date-time`

  - **`id`**

    `string`

  - **`meta`**

    `object`

    - **`origin`**

      `string`

    - **`userAgent`**

      `string`

  - **`options`**

    `object`

    - **`build`**

      `string`

    - **`diskMbytes`**

      `integer`

    - **`memoryMbytes`**

      `integer`

    - **`timeoutSecs`**

      `integer`

  - **`startedAt`**

    `string`, format: `date-time`

  - **`stats`**

    `object`

    - **`computeUnits`**

      `integer`

    - **`inputBodyLen`**

      `integer`

    - **`rebootCount`**

      `integer`

    - **`restartCount`**

      `integer`

    - **`resurrectCount`**

      `integer`

  - **`status`**

    `string`

  - **`usage`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `integer`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`usageTotalUsd`**

    `number`

  - **`usageUsd`**

    `object`

    - **`ACTOR_COMPUTE_UNITS`**

      `integer`

    - **`DATA_TRANSFER_EXTERNAL_GBYTES`**

      `integer`

    - **`DATA_TRANSFER_INTERNAL_GBYTES`**

      `integer`

    - **`DATASET_READS`**

      `integer`

    - **`DATASET_WRITES`**

      `integer`

    - **`KEY_VALUE_STORE_LISTS`**

      `integer`

    - **`KEY_VALUE_STORE_READS`**

      `integer`

    - **`KEY_VALUE_STORE_WRITES`**

      `number`

    - **`PROXY_RESIDENTIAL_TRANSFER_GBYTES`**

      `integer`

    - **`PROXY_SERPS`**

      `integer`

    - **`REQUEST_QUEUE_READS`**

      `integer`

    - **`REQUEST_QUEUE_WRITES`**

      `integer`

  - **`userId`**

    `string`

**Example:**

```
{
  "data": {
    "id": "",
    "actId": "",
    "userId": "",
    "startedAt": "2025-01-08T00:00:00.000Z",
    "finishedAt": "2025-01-08T00:00:00.000Z",
    "status": "READY",
    "meta": {
      "origin": "API",
      "userAgent": ""
    },
    "stats": {
      "inputBodyLen": 2000,
      "rebootCount": 0,
      "restartCount": 0,
      "resurrectCount": 0,
      "computeUnits": 0
    },
    "options": {
      "build": "latest",
      "timeoutSecs": 300,
      "memoryMbytes": 1024,
      "diskMbytes": 2048
    },
    "buildId": "",
    "defaultKeyValueStoreId": "",
    "defaultDatasetId": "",
    "defaultRequestQueueId": "",
    "buildNumber": "1.0.0",
    "containerUrl": "",
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 1,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    },
    "usageTotalUsd": 0.00005,
    "usageUsd": {
      "ACTOR_COMPUTE_UNITS": 0,
      "DATASET_READS": 0,
      "DATASET_WRITES": 0,
      "KEY_VALUE_STORE_READS": 0,
      "KEY_VALUE_STORE_WRITES": 0.00005,
      "KEY_VALUE_STORE_LISTS": 0,
      "REQUEST_QUEUE_READS": 0,
      "REQUEST_QUEUE_WRITES": 0,
      "DATA_TRANSFER_INTERNAL_GBYTES": 0,
      "DATA_TRANSFER_EXTERNAL_GBYTES": 0,
      "PROXY_RESIDENTIAL_TRANSFER_GBYTES": 0,
      "PROXY_SERPS": 0
    }
  }
}
```

### What does Shady Rays® | Polarized Sunglasses Scraper do?

This scraper creates an API for Shady Rays® | Polarized Sunglasses to enable you to extract product information and pricing from the [shadyrays.com](https://shadyrays.com) online store.

The Shady Rays® | Polarized Sunglasses API is free to use and will let you scrape and extract e-commerce data as often as you need to. The data you extract can be downloaded in structured format so that you can use it in your own applications, spreadsheets, reports, or tools.

Scraping Shady Rays® | Polarized Sunglasses could help you identify competition, opportunities, potential leads, and useful contacts. The right data can help you with product tracking, market research, and price monitoring in the eyewear category.

If you need more inspiration, check out [how scraping can help you](https://apify.com/industries/ecommerce-and-retail) get an edge over the competition and stay ahead in e-commerce.

### How much will it cost to scrape Shady Rays® | Polarized Sunglasses?

Running Shady Rays® | Polarized Sunglasses Scraper will consume platform credits. Platform credits are counted in USD and each plan includes a set amount. Check our [platform pricing](https://apify.com/pricing/actors) page for details.

The exact number of platform credits consumed will depend on the actor input settings, the type of job it performs, how often it runs, and for how long.

The best way to find out how many platform credits an actor will consume is to perform a test run. You can then review platform usage in [Billing](https://console.apify.com/billing) and figure out the best Apify subscription plan for your needs.

### How to scrape Shady Rays® | Polarized Sunglasses

[shadyrays.com](https://shadyrays.com) is built using Shopify and Shady Rays® | Polarized Sunglasses Scraper is one of our huge range of online e-commerce scrapers designed to create a universal Shopify API.

Check out our [quick start guide](https://docs.apify.com/tutorials/quick-start) to using any Apify scraper or feel free to send an email to <support@apify.com> if you have any questions.

You can also watch our [video about scraping Amazon](https://www.youtube.com/watch?v=BsidLZKdYWQ) to understand more about scraping e-commerce data and how it can help your business succeed.

For more ideas, read about our [top 5 web scraping tools to help you gather retail analytics](https://blog.apify.com/top-5-web-scraping-tools-gather-retail-analytics/).
