# Cratejoy Scraper — Subscription Box Data & Intelligence (`scrapepilot/submitcruiton-1`) Actor

Scrape Cratejoy subscription box data — price, rating, niche, shipping, cancel policy, eco flags, coupon codes, affiliate program, and social handles. Auto-pagination, checkpoint resume. 30+ fields per box. $10 per 1,000 results. Pay per result.

- **URL**: https://apify.com/scrapepilot/submitcruiton-1.md
- **Developed by:** [Scrape Pilot](https://apify.com/scrapepilot) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 successful result scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 📦 Cratejoy Scraper — Subscription Box Data & Market Intelligence

> **The most complete Cratejoy Scraper on Apify.** Extract full subscription box data from Cratejoy.com — box name, price, rating, review count, niche, shipping details, cancel policy, eco/cruelty-free flags, coupon codes, affiliate program availability, Instagram and TikTok handles, pros, cons, and full description. Auto-discovers products from any Cratejoy category or collection URL. Pay only for results.

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-brightgreen?logo=apify)](https://apify.com)
[![Platform](https://img.shields.io/badge/Platform-Cratejoy.com-FF6B6B)]()
[![Output](https://img.shields.io/badge/Output-30%2B%20Fields%20Per%20Box-blue)]()
[![No Login](https://img.shields.io/badge/Login-Not%20Required-lightgrey)]()
[![Pricing](https://img.shields.io/badge/Pricing-Pay%20Per%20Result-success)]()

---

### 📌 Table of Contents

- [What Is This Actor?](#what-is-this-actor)
- [Why Use This Cratejoy Scraper?](#why-use-this-cratejoy-scraper)
- [Use Cases](#use-cases)
- [Input Parameters](#input-parameters)
- [Output Fields](#output-fields)
- [Example Input & Output](#example-input--output)
- [Pricing](#pricing)
- [Performance & Limits](#performance--limits)
- [FAQ](#faq)
- [Changelog](#changelog)
- [Legal & Terms of Use](#legal--terms-of-use)

---

### 🔍 What Is This Actor?

**Cratejoy Scraper** is a production-ready Apify actor that extracts comprehensive **subscription box data** from Cratejoy.com — the largest subscription box marketplace in the world.

Provide any Cratejoy category, collection, or search results URL and receive back a clean, structured record for every subscription box found: name, price, rating, review count, niche, category, shipping details, cancellation policy, skip and pause options, gift availability, trial offers, coupon codes, eco-friendly and cruelty-free flags, affiliate program availability, social media handles, availability status, inferred pros and cons, and full description.

This **Cratejoy box data** scraper auto-discovers product links from the start URL, paginates through all result pages, and scrapes each box detail page with concurrent fetching — delivering the most complete subscription box intelligence dataset available on Apify.

---

### 🚀 Why Use This Cratejoy Scraper?

| Feature | This Actor | Manual Research | Other Scrapers |
|---|---|---|---|
| **Full subscription box data** | ✅ 30+ fields | ❌ Slow | ⚠️ Basic |
| **Rating & review count** | ✅ | ✅ | ⚠️ |
| **Cancel / skip / pause policy** | ✅ | ❌ | ❌ |
| **Eco / cruelty-free flags** | ✅ Auto-detected | ❌ | ❌ |
| **Coupon code extraction** | ✅ | ❌ | ❌ |
| **Affiliate program flag** | ✅ | ❌ | ❌ |
| **Instagram & TikTok handles** | ✅ | ❌ | ❌ |
| **Inferred pros & cons** | ✅ Auto-generated | ❌ | ❌ |
| **Auto-pagination** | ✅ | ❌ | ⚠️ |
| **Checkpoint resume** | ✅ | N/A | ❌ |

> **Bottom line:** This **subscription box scraper** is the only actor that extracts cancellation policy, eco flags, coupon codes, affiliate program availability, and social handles — alongside ratings, pricing, and full descriptions — making it the most complete **Cratejoy box data** tool on Apify.

---

### 🎯 Use Cases

#### 📊 Subscription Box Market Research
- Scrape **Cratejoy box data** across niches to analyze pricing, rating distributions, and shipping policies
- Map the competitive landscape of subscription boxes in any category — beauty, food, gaming, books, pets
- Identify trending niches by comparing review counts, availability flags, and growth signals across categories

#### 💼 Competitor & Brand Intelligence
- Monitor competitor subscription boxes for price changes, new coupon codes, and policy updates
- Track eco-friendly and cruelty-free positioning across competing brands in your niche
- Identify which subscription boxes offer affiliate programs for partnership outreach

#### 🤖 AI & E-Commerce Datasets
- Build structured datasets of **Cratejoy box data** for product recommendation or pricing models
- Collect subscription box descriptions and metadata for NLP and content classification research
- Use rating and review data for e-commerce sentiment analysis and purchase prediction models

#### 🛒 Affiliate & Influencer Research
- Find subscription boxes with active affiliate programs using the `affiliate_program` flag
- Discover boxes with coupon codes for affiliate promotions
- Extract Instagram and TikTok handles to identify social-first subscription brands

#### 🏪 Subscription Box Launch & Positioning
- Research existing boxes in your target niche before launching your own subscription product
- Benchmark pricing, cancel policies, and trial offers across direct competitors
- Identify gaps — niches with high demand but low review volume or limited eco-friendly options

#### 🎓 Academic & Consumer Research
- Build datasets of subscription box offerings for consumer behavior or e-commerce studies
- Analyse policy flexibility (skip, pause, cancel anytime) as a driver of subscription satisfaction
- Study the relationship between eco-friendly positioning and pricing across subscription products

---

### ⚙️ Input Parameters

```json
{
  "startUrl":    "https://www.cratejoy.com/collections/top-trending-boxes",
  "maxItems":    100,
  "maxPages":    25,
  "concurrency": 4,
  "proxyConfiguration": {
    "useApifyProxy":    true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
````

| Parameter | Type | Default | Description |
|---|---|---|---|
| `startUrl` | string | Trending boxes page | Any Cratejoy category, collection, or search results URL |
| `maxItems` | integer | `100` | Maximum subscription boxes to scrape |
| `maxPages` | integer | `25` | Maximum result pages to paginate through |
| `concurrency` | integer | `4` | Number of product pages fetched in parallel (max 6) |
| `proxyConfiguration` | object | Optional | Apify proxy config — residential proxy recommended |

> **Tip:** Use any Cratejoy collection, category, or search URL as `startUrl`. The actor auto-discovers product links and paginates automatically — no manual page navigation needed.

***

### 📋 Output Fields

Every record from this **Cratejoy scraper** includes complete **Cratejoy box data**:

#### 📦 Core Box Fields

| Field | Type | Description | Example |
|---|---|---|---|
| `box_name` | string | Subscription box name | `"BarkBox Monthly Dog Treats"` |
| `niche` | string | Box niche or sub-category | `"Dog Toys & Treats"` |
| `category` | string | Broad category from breadcrumb | `"Pet Subscription Boxes"` |
| `price_monthly_quarterly_annual` | string | Listed price | `"23.00"` |
| `price_currency` | string | Price currency symbol | `"$"` |
| `rating` | string | Average customer rating | `"4.8"` |
| `review_count` | integer | Total number of reviews | `342` |
| `availability` | string | Stock status | `"In Stock"`, `"Sold Out"` |
| `description` | string | Full box description | `"A monthly box of..."` |
| `source_url` | string | Cratejoy product page URL | `"https://www.cratejoy.com/..."` |

#### 🚚 Shipping & Policy Fields

| Field | Type | Description | Example |
|---|---|---|---|
| `shipping_free` | boolean | Free shipping offered | `true` |
| `shipping_countries` | string | Shipping destination | `"Worldwide"`, `"US / UK"` |
| `cancel_policy` | string | Cancellation policy | `"Cancel Anytime"`, `"Flexible Policy"` |
| `skip_allowed` | boolean | Skip a month option available | `true` |
| `pause_allowed` | boolean | Pause subscription option | `false` |
| `gift_option` | boolean | Gift subscription available | `true` |
| `trial_offer` | boolean | Free trial or first box offer | `false` |
| `coupon_code` | string | Promo code found on page | `"SAVE10"` |

#### 🌱 Brand & Values Fields

| Field | Type | Description | Example |
|---|---|---|---|
| `eco_friendly` | boolean | Eco-friendly or sustainable packaging | `true` |
| `cruelty_free` | boolean | Cruelty-free products | `true` |
| `certified_organic` | boolean | Certified organic or 100% natural | `false` |
| `affiliate_program` | boolean | Affiliate or ambassador program available | `true` |
| `is_new` | boolean | Recently launched box | `false` |
| `is_trending` | boolean | Trending status | `true` |
| `growth_signal` | string | Demand signal from page content | `"High Demand"`, `"Stable Growth"` |

#### 📱 Social & Content Fields

| Field | Type | Description | Example |
|---|---|---|---|
| `instagram_handle` | string | Instagram username found on page | `"barkbox"` |
| `tiktok_handle` | string | TikTok username found on page | `"barkbox"` |
| `items_per_box` | string | Number of items per delivery | `"5-7 items"` |
| `box_value_claimed` | string | Claimed value of box contents | `"$50+ value"` |
| `pros` | string | Auto-inferred pros based on data | `"Strong customer ratings; Free shipping"` |
| `cons` | string | Auto-inferred cons based on data | `"Shipping costs may apply"` |

> **Note on `Subscribers_count` and `Top_positive_review`:** These fields are included in the schema but are **never populated** — Cratejoy does not publicly display subscriber counts or individual review text in a consistent extractable format. They will always be `null` in your output.

***

### 📦 Example Input & Output

**Input:**

```json
{
  "startUrl":  "https://www.cratejoy.com/collections/top-trending-boxes",
  "maxItems":  5
}
```

**Output (one record):**

```json
{
  "box_name":                    "BarkBox Monthly Dog Treats",
  "niche":                       "Dog Toys & Treats",
  "category":                    "Pet Subscription Boxes",
  "price_monthly_quarterly_annual": "23.00",
  "price_currency":              "$",
  "rating":                      "4.8",
  "review_count":                342,
  "availability":                "In Stock",
  "shipping_free":               true,
  "shipping_countries":          "US / UK",
  "cancel_policy":               "Cancel Anytime",
  "skip_allowed":                false,
  "pause_allowed":               false,
  "gift_option":                 true,
  "trial_offer":                 false,
  "coupon_code":                 null,
  "eco_friendly":                false,
  "cruelty_free":                false,
  "certified_organic":           false,
  "affiliate_program":           true,
  "is_new":                      false,
  "is_trending":                 true,
  "growth_signal":               "High Demand",
  "instagram_handle":            "barkbox",
  "tiktok_handle":               null,
  "items_per_box":               "5-7 items",
  "box_value_claimed":           "$40+ value",
  "pros":                        "Strong customer ratings; Free shipping; Gift-friendly",
  "cons":                        "Item mix may vary by month",
  "description":                 "A monthly box of dog toys and treats customized to your dog's size...",
  "source_url":                  "https://www.cratejoy.com/subscription-box/barkbox/"
}
```

***

### 💰 Pricing

This actor uses **pay-per-event** pricing — you only pay for subscription boxes successfully scraped.

| Event | Price |
|---|---|
| **Actor start fee** | $0.50 per run |
| **Per box successfully scraped** | $0.01 per result ($10.00 per 1,000 boxes) |

#### How billing works:

- ✅ The $0.50 start fee applies once per run regardless of results
- ✅ Each box record pushed to the dataset is charged at $0.01
- ✅ Pages that fail to load or return no data are **not charged**
- ✅ The actor stops automatically when your Apify account charge limit is reached
- ✅ Checkpoint saves progress — restarting after a spending limit uses credits only for new boxes

> **Example:** Scrape 200 boxes = $0.50 (start) + $2.00 (200 × $0.01) = **$2.50 total**

**2-hour free trial available** — click **Try for free** at the top of this page.

***

### ⚡ Performance & Limits

| Boxes | Estimated Time |
|---|---|
| 50 | ~4–8 minutes |
| 100 | ~8–15 minutes |
| 500 | ~35–60 minutes |
| 1,000 | ~70–120 minutes |

- Product pages fetched **in parallel** (up to 6 concurrent) per listing page
- Results pushed to the dataset immediately after each box is scraped
- Checkpoint saved after every box — restart resumes from the last completed page
- The actor stops cleanly when `maxItems` or spending limit is reached
- Images, media, fonts, and stylesheets are blocked during browsing for maximum speed

***

### ❓ FAQ

**Q: What should I use as `startUrl`?**
A: Any Cratejoy category, collection, or search results page URL. Examples: `https://www.cratejoy.com/collections/top-trending-boxes`, `https://www.cratejoy.com/subscription-boxes/beauty/`, or a custom search URL. The actor discovers product links automatically.

**Q: How are `pros` and `cons` generated?**
A: Pros and cons are automatically inferred from the box data — not scraped text. `pros` is built from high ratings, free shipping, gift options, trial offers, and review volume. `cons` reflects sold-out status, lack of free shipping, or low review count.

**Q: Why are `Subscribers_count` and `Top_positive_review` always null?**
A: Cratejoy does not display subscriber counts or structured review text in a consistent extractable format on public listing pages. These fields are always `null` and should be ignored in your workflow.

**Q: How are eco-friendly, cruelty-free, and organic flags detected?**
A: These boolean flags are detected by scanning the full page text for specific keywords — "eco-friendly", "sustainable", "cruelty-free", "not tested on animals", "certified organic", etc. They reflect what the seller claims on their Cratejoy listing.

**Q: Can I scrape a specific niche or category?**
A: Yes. Navigate to that category on Cratejoy, copy the URL, and use it as `startUrl`. The actor will only scrape boxes from that category.

**Q: What happens if a box page fails to load?**
A: The actor logs the failure, skips that URL, and continues with the remaining boxes. No charge is applied for failed pages.

**Q: Can I export results to Excel or CSV?**
A: Yes. All results are pushed to the Apify dataset, which can be exported to JSON, CSV, Excel, and more directly from the Apify Console after each run.

***

### 📜 Changelog

#### v1.0.0 (Current)

- ✅ Full subscription box data — 30+ fields per record
- ✅ Auto-discovery of product links from any Cratejoy category or collection URL
- ✅ Automatic pagination up to `maxPages`
- ✅ Concurrent product page fetching (up to 6 parallel)
- ✅ Cancel, skip, and pause policy detection
- ✅ Eco-friendly, cruelty-free, and organic flag detection
- ✅ Coupon code and affiliate program extraction
- ✅ Instagram and TikTok handle extraction
- ✅ Auto-inferred pros and cons from structured data
- ✅ Checkpoint/resume — saves progress after every box
- ✅ Pay-per-event billing — charged per successfully scraped box
- ✅ Spending limit respect — stops cleanly when charge limit reached

***

### 🏷️ Tags

`cratejoy scraper` `subscription box scraper` `cratejoy box data` `subscription box data` `cratejoy data extractor` `subscription marketplace scraper` `box niche research` `subscription pricing data` `cratejoy product scraper` `e-commerce subscription data` `subscription box market research` `cratejoy intelligence`

***

### ⚖️ Legal & Terms of Use

This actor accesses publicly visible subscription box listing data on Cratejoy.com in the same way a regular user browses the platform.

**Please note:**

- Use extracted **Cratejoy box data** only for **lawful purposes** — market research, competitive analysis, affiliate research, and academic study are common legitimate uses
- Do not republish Cratejoy listing content in a way that violates Cratejoy's Terms of Service
- Box descriptions, images, and metadata belong to the respective subscription box brands
- The actor developer is not responsible for how extracted data is used

***

### 🤝 Support & Feedback

- **Bug report?** Contact us via the Apify actor page
- **Feature request?** Post in the Apify Community forum
- **Loving it?** Please leave a ⭐ review — it helps other users find this actor!

***

<p align="center">
  <strong>Built with ❤️ on Apify</strong><br/>
  <em>The most complete Cratejoy Scraper — 30+ fields, auto-pagination, pay per result</em><br/><br/>
  <strong>💰 $0.50 per run + $10.00 per 1,000 boxes · Pay only for results</strong>
</p>

# Actor input Schema

## `startUrl` (type: `string`):

Enter the URL of the subscription products trend or category page.

## `maxItems` (type: `integer`):

Maximum number of subscription product records to collect.

## `maxPages` (type: `integer`):

Maximum number of listing pages to paginate through.

## `concurrency` (type: `integer`):

Number of product pages to scrape in parallel (1–6).

## `proxyConfiguration` (type: `object`):

Select Residential Proxies to ensure dynamic IP rotation per request and prevent security blocking.

## Actor input object example

```json
{
  "startUrl": "https://www.cratejoy.com/collections/top-trending-boxes",
  "maxItems": 5,
  "maxPages": 2,
  "concurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrl": "https://www.cratejoy.com/collections/top-trending-boxes",
    "maxItems": 5,
    "maxPages": 2,
    "concurrency": 3,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapepilot/submitcruiton-1").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrl": "https://www.cratejoy.com/collections/top-trending-boxes",
    "maxItems": 5,
    "maxPages": 2,
    "concurrency": 3,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapepilot/submitcruiton-1").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrl": "https://www.cratejoy.com/collections/top-trending-boxes",
  "maxItems": 5,
  "maxPages": 2,
  "concurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call scrapepilot/submitcruiton-1 --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=scrapepilot/submitcruiton-1",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Cratejoy Scraper — Subscription Box Data & Intelligence",
        "description": "Scrape Cratejoy subscription box data — price, rating, niche, shipping, cancel policy, eco flags, coupon codes, affiliate program, and social handles. Auto-pagination, checkpoint resume. 30+ fields per box. $10 per 1,000 results. Pay per result.",
        "version": "0.0",
        "x-build-id": "Mm1hmiZR6N8lqS2x3"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapepilot~submitcruiton-1/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapepilot-submitcruiton-1",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapepilot~submitcruiton-1/runs": {
            "post": {
                "operationId": "runs-sync-scrapepilot-submitcruiton-1",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapepilot~submitcruiton-1/run-sync": {
            "post": {
                "operationId": "run-sync-scrapepilot-submitcruiton-1",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrl"
                ],
                "properties": {
                    "startUrl": {
                        "title": "Target Marketplace Trend URL",
                        "type": "string",
                        "description": "Enter the URL of the subscription products trend or category page."
                    },
                    "maxItems": {
                        "title": "Max Items To Scrape",
                        "type": "integer",
                        "description": "Maximum number of subscription product records to collect.",
                        "default": 5
                    },
                    "maxPages": {
                        "title": "Max Pages To Crawl",
                        "type": "integer",
                        "description": "Maximum number of listing pages to paginate through.",
                        "default": 2
                    },
                    "concurrency": {
                        "title": "Concurrency",
                        "type": "integer",
                        "description": "Number of product pages to scrape in parallel (1–6).",
                        "default": 3
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Select Residential Proxies to ensure dynamic IP rotation per request and prevent security blocking."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
