# Hotmart Marketplace Scraper – Courses, Ratings & Creators (`openharvest/hotmart-marketplace-scraper`) Actor

Hotmart Marketplace products scraper: courses and ebooks with ratings, review counts, creator names, categories, topics, payment options (PIX, boleto, card), plus optional price, students, rating breakdown and latest reviews. Search by keyword, category, topic or language. No login.

- **URL**: https://apify.com/openharvest/hotmart-marketplace-scraper.md
- **Developed by:** [Enes Bulanık](https://apify.com/openharvest) (community)
- **Categories:** E-commerce, Marketing, Education
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Hotmart Marketplace Scraper – Courses, Ratings & Creators

Hotmart Marketplace products scraper: courses and ebooks with ratings, review counts, creator names, categories, topics and payment options (PIX, boleto, card). It can also add price, students, rating breakdown and latest reviews. Search by keyword, category, topic or language. No login.

Use this instead of a general web crawler when you need structured Hotmart catalog data. The marketplace loads results with "Load more" buttons and prices after the page loads, so a plain crawler gets only the first 24 products and no prices.

**Price: $1.00 per 1,000 products**, plus $0.002 per product when you turn on details mode. Errors and filtered-out products are free.

### What data do you get?

Every product (catalog mode):

- **Product** – title, product ID, reference code, product page and checkout links, short description, image
- **Ratings** – average rating (0–5) and number of reviews
- **Creator** – public creator or brand name, creator page link and public ID
- **Classification** – category, topic group (`topification`), topic, format (course, ebook, software, template) and language
- **Payment options** – PIX, boleto (`BILLET`), credit card, two cards, PayPal, direct debit and more
- **Course facts** – certificate, total hours, number of classes, community, intro video, campaigns (e.g. Black November) and the date the product was listed

With **details mode** (`includeDetails: true`), or when you paste product URLs, you also get:

- **Price** – price and currency, offer name, maximum installments and installment amount
- **Students** – number of students as shown on the product page
- **Content** – modules, lessons, module titles, total hours, warranty days, target audience, tags and the full sales copy
- **Review summary** – star breakdown (1–5), average per survey question (content, teaching, platform…) and the latest public review texts with date and rating. Reviewer names are never included.
- **Creator profile** – verified badge, "creator since" year and Hotmart badges (e.g. `BEST_SELLER`)

### Use cases

- **Affiliate research** – find best-rated and most-reviewed products in a niche before you promote them.
- **Course creators** – benchmark competitors' prices, installments, content size, warranty and reviews.
- **Agencies & launch strategists** – map a niche (e.g. `marketing-digital`, `emagrecimento`, `concurso`) and its top creators.
- **Market research on Brazil & LatAm** – count products per category, topic, language or payment method (PIX vs boleto).
- **Monitoring** – run on a schedule with `sort: most_recent` to catch new products in your niche.
- **AI agents** – give an agent a structured view of the Hotmart catalog for "find me the best course on X" tasks.

### How to use it

1. Click **Try for free** / **Start**.
2. Enter a **Search keyword** (e.g. `excel`) or leave it empty and pick **Categories**, **Topics**, **Formats**, **Payment options** or **Languages**.
3. Set **Max products** and optionally **Minimum rating** / **Minimum number of reviews**.
4. Turn on **Include details, price & review summary** if you need prices and review breakdowns.
5. Click **Start** and download the data as JSON, CSV, Excel or HTML, or connect it to Make, Zapier, n8n, Google Sheets or the Apify API.

### Input

| Field | Type | Description |
|---|---|---|
| `searchQuery` | string | Keyword, as in the marketplace search box. Empty = whole catalog. |
| `maxItems` | integer | Max products to save. Default `50`. `0` = no limit (Hotmart lists about 10,000 per search). |
| `categories` | array | `finance`, `education`, `business_and_careers`, `health_and_sports`, `fashion_and_beauty`, … |
| `topics` | array | Topic slugs, e.g. `excel`, `marketing-digital`, `investimentos`. |
| `topicGroups` | array | Topic group slugs, e.g. `marketing-e-vendas`, `moda-e-beleza`. |
| `formats` | array | `online_services`, `ebooks`, `software`, `templates`. |
| `paymentOptions` | array | `PIX`, `CREDIT_CARD`, `BILLET`, `PAYPAL`, … |
| `languages` | array | `PT_BR`, `ES`, `EN`, `FR`, `IT`, `DE`, `AR`, `JA`. |
| `sort` | string | `most_relevant` (default), `most_recent`, `most_rated`, `best_rated`. |
| `minRating` | number | Skip products rated below this (free). |
| `minReviews` | integer | Skip products with fewer reviews (free). |
| `includeDetails` | boolean | Add price, students, content and review summary. Default `false`. |
| `maxReviewsPerProduct` | integer | Latest review texts per product in details mode (0–10). Default `5`. |
| `productUrls` | array | Product links. If set, search is skipped and each product is scraped in details mode. |
| `proxyConfiguration` | object | Optional. Use Apify Proxy with country `BR` to get prices in BRL. |

Example input:

```json
{
    "searchQuery": "excel",
    "sort": "most_rated",
    "minReviews": 50,
    "maxItems": 100,
    "includeDetails": true
}
```

### Output

Real sample (details mode, shortened):

```json
{
    "type": "product",
    "productId": 620451,
    "reference": "I23144995P",
    "title": "Curso de Excel",
    "url": "https://hotmart.com/pt-br/marketplace/produtos/curso-de-excel-15/I23144995P",
    "checkoutUrl": "https://pay.hotmart.com/I23144995P",
    "category": "education",
    "topification": "tecnologia-e-desenvolvimento-de-software",
    "topic": "excel",
    "format": "online_services",
    "language": "PT_BR",
    "rating": 4.79,
    "reviewsCount": 764,
    "students": 72100,
    "creatorName": "Expert Cursos",
    "creatorUrl": "https://hotmart.com/pt-br/marketplace/especialista/victor-brience/MW0ZJ1QCT7",
    "creatorVerified": true,
    "creatorBadges": ["VERIFIED_PROFILE", "BEST_SELLER"],
    "paymentOptions": ["CREDIT_CARD", "BILLET", "HOTMART_ACCOUNT_BALANCE", "DIRECT_DEBIT", "PIX"],
    "certificate": true,
    "durationHours": 30,
    "warrantyDays": 7,
    "modulesCount": 17,
    "lessonsCount": 78,
    "ratingDistribution": { "1": 7, "2": 6, "3": 16, "4": 86, "5": 649 },
    "ratingQuestions": [
        { "question": "Nota para a facilidade de uso da plataforma", "average": 4.8, "count": 738 }
    ],
    "latestReviews": [
        { "date": "2025-03-03T19:50:04.844Z", "rating": 5, "text": "Curso muito bom e bem completo, ótima didática e bons materiais." }
    ],
    "price": 22,
    "currency": "USD",
    "offerName": "Acesso Vitalício",
    "priceCountry": "TR",
    "detailed": true,
    "scrapedAt": "2026-10-08T10:49:25.080Z"
}
```

Catalog-mode rows have the same product fields without the details-mode fields, plus `position` (rank in the results), `description`, `totalHours`, `campaigns` and `listedAt`.

Error rows (free) look like `{ "type": "error", "errorCode": "NOT_FOUND", "error": "..." }`. Codes: `INVALID_INPUT`, `NOT_FOUND`, `SCRAPE_FAILED`, `NO_RESULTS`.

The dataset has three views in Apify Console: **Overview**, **Details & reviews** and **Errors**.

### Pricing

Pay-per-event. You only pay for products saved to the dataset. Platform usage is included.

| Event | Price | When it is charged |
|---|---|---|
| `product` | **$0.001** per product ($1.00 / 1,000) | Each product saved |
| `product-detail` | **$0.002** per product | Extra, only for products saved with details (details mode or product URLs) |
| Errors and filtered-out products | **Free** | |

| Job | Cost |
|---|---|
| 50 products, catalog only | **$0.05** |
| 1,000 products, catalog only | **$1.00** |
| 100 products with details, price and review summary | 100 × ($0.001 + $0.002) = **$0.30** |

Set **Max cost per run** in the run options. The Actor stops cleanly when the budget is reached and does not fetch details it can't charge for.

### Use with AI agents (MCP)

The Actor works as a tool in Apify's MCP server, so Claude, ChatGPT, Cursor and other MCP clients can call it. Add it as a tool and ask, for example, "find the 20 best-rated Spanish finance courses on Hotmart and compare their prices".

Example tool input an agent can send:

```json
{
    "categories": ["finance"],
    "languages": ["ES"],
    "sort": "best_rated",
    "minReviews": 20,
    "maxItems": 20,
    "includeDetails": true,
    "maxReviewsPerProduct": 3
}
```

The output fields are flat and named the same in every row, so agents can filter and rank them without extra parsing.

### FAQ

**Do I need a Hotmart account?**
No. The Actor reads only the public marketplace that anyone can open without logging in.

**Why is the price in USD and not BRL?**
Hotmart shows prices in the currency of the visitor's country. The Actor fetches prices from its own IP and does not fake your location. To get BRL prices, enable Apify Proxy with country `BR`. `priceCountry` shows which country the price is for.

**How many products can I get?**
Hotmart returns up to about 10,000 results for one search. To cover more of the catalog, split the job by category, topic or language.

**Why is `best_seller` sorting missing?**
Hotmart returns only one page of 24 products for that order, so it can't be paginated. Use `most_rated` (most reviews) as a popularity signal.

**Does it include all reviews?**
No. Hotmart publishes the star breakdown, the per-question averages and only the latest few review texts. The Actor returns those without reviewer names.

**Can I scrape a creator's products?**
Run a search and filter the results by `creatorName` or `creatorPublicId`. You can also paste the product links into `productUrls`.

### Is it legal to scrape Hotmart?

This Actor collects only **public catalog data** that Hotmart shows to every visitor without login. It does not collect buyer data, emails, phone numbers or reviewer names. It does not collect creators' social media links or biographies. Creator names are the public brand names shown on product pages. Make sure your use follows applicable laws (e.g. LGPD and GDPR) and Hotmart's terms of use. Do not use the data for spam. If you are unsure, consult a lawyer.

### Related actors

Other actors by the same developer:

- **Shopify & WooCommerce Products Scraper – Any Store, Schema.org** – products and prices from any online store
- **Shopify App Store Scraper – Apps, Pricing Plans & App Reviews** – apps, plans and reviews
- **Chrome Web Store Scraper – Extensions, Users, Ratings & Reviews** – extensions with users and ratings
- **Google Trends Scraper – Interest Over Time & Related Queries** – check demand for a course topic over time
- **Keyword Suggestions – Google, YouTube, Amazon & Bing Autocomplete** – find niche keywords to search on Hotmart

### Support & feedback

Found a bug or need a field? Open an issue in the **Issues** tab. Feature requests are welcome.

# Actor input Schema

## `searchQuery` (type: `string`):

Keyword to search the Hotmart Marketplace for, as in the marketplace search box. Leave empty to browse the whole catalog (filtered by the options below).

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

Maximum number of products to save. You pay per product, so this also caps your cost. Set 0 for no limit (Hotmart lists at most about 10,000 results per search).

## `categories` (type: `array`):

Only products in these Hotmart categories.

## `topics` (type: `array`):

Only products with these Hotmart topic slugs (the <code>topic</code> field in the output), for example <code>excel</code>, <code>marketing-digital</code>, <code>emagrecimento</code>, <code>concurso</code>, <code>investimentos</code>.

## `topicGroups` (type: `array`):

Only products in these Hotmart topic groups (the <code>topification</code> field), for example <code>marketing-e-vendas</code>, <code>moda-e-beleza</code>, <code>saude-e-esportes</code>, <code>financas-e-negocios</code>.

## `formats` (type: `array`):

Only these product formats.

## `paymentOptions` (type: `array`):

Only products that accept these payment methods.

## `languages` (type: `array`):

Only products in these languages. Without this filter Hotmart mostly returns Portuguese (Brazil) products.

## `sort` (type: `string`):

Result order.

## `minRating` (type: `number`):

Skip products with an average rating below this value (0-5). Products without a rating are skipped when this is above 0. Skipped products are not charged.

## `minReviews` (type: `integer`):

Skip products with fewer reviews than this. Skipped products are not charged.

## `includeDetails` (type: `boolean`):

Also open every product page to add price and currency, max installments, number of students, warranty, modules and lessons, tags, full sales copy, creator badges, the star-rating breakdown, per-question ratings and the latest review texts. Slower, and charged as an extra <code>product-detail</code> event per product.

## `maxReviewsPerProduct` (type: `integer`):

How many of the latest review texts to include per product in details mode (Hotmart shows up to about 10 publicly). Reviewer names are never included.

## `productUrls` (type: `array`):

Optional. Hotmart Marketplace product links such as <code>https://hotmart.com/pt-br/marketplace/produtos/curso-de-excel-15/I23144995P</code>. When set, the search options are ignored and each product is scraped in details mode.

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

Usually not needed. Prices in details mode are shown in the currency Hotmart uses for the country of the request IP - use an Apify Proxy with country BR to get prices in BRL.

## Actor input object example

```json
{
  "searchQuery": "excel",
  "maxItems": 200,
  "categories": [
    "finance",
    "education"
  ],
  "topics": [
    "marketing-digital",
    "excel"
  ],
  "topicGroups": [
    "marketing-e-vendas"
  ],
  "formats": [
    "ebooks"
  ],
  "paymentOptions": [
    "PIX"
  ],
  "languages": [
    "ES"
  ],
  "sort": "most_rated",
  "minRating": 4.5,
  "minReviews": 100,
  "includeDetails": false,
  "maxReviewsPerProduct": 5,
  "productUrls": [
    {
      "url": "https://hotmart.com/pt-br/marketplace/produtos/curso-de-excel-15/I23144995P"
    }
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped items in the default dataset (JSON, CSV, Excel and more via the dataset export).

## `files` (type: `string`):

Records saved in the default key-value store, e.g. the run summary.

# 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 = {
    "searchQuery": "marketing digital",
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("openharvest/hotmart-marketplace-scraper").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 = {
    "searchQuery": "marketing digital",
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("openharvest/hotmart-marketplace-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "searchQuery": "marketing digital",
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call openharvest/hotmart-marketplace-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,openharvest/hotmart-marketplace-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/DnGjz3fyJ3PRYcd3l/builds/bXpRe6gxy39P5juph/openapi.json
