# TrustPilot Category Companies (`jmmaners/trustpilot-category-companies`) Actor

Scrapes Trustpilot category pages and returns company-level data: company name, Trustpilot URL, domain, trust score, review count, category URL, and page number. Supports pagination, filters, delays, retries, and proxies.

- **URL**: https://apify.com/jmmaners/trustpilot-category-companies.md
- **Developed by:** [Joshua Maners](https://apify.com/jmmaners) (community)
- **Categories:** Automation, Lead generation, Integrations
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

### PlaywrightCrawler template

<!-- This is an Apify template readme -->

This template is a production ready boilerplate for developing an [Actor](https://apify.com/actors) with `PlaywrightCrawler`. Use this to bootstrap your projects using the most up-to-date code.

> We decided to split Apify SDK into two libraries, Crawlee and Apify SDK v3. Crawlee will retain all the crawling and scraping-related tools and will always strive to be the best [web scraping](https://apify.com/web-scraping) library for its community. At the same time, Apify SDK will continue to exist, but keep only the Apify-specific features related to building Actors on the Apify platform. Read the upgrading guide to learn about the changes.

### Resources

If you're looking for examples or want to learn more visit:

- [Crawlee + Apify Platform guide](https://crawlee.dev/docs/guides/apify-platform)
- [Documentation](https://crawlee.dev/api/playwright-crawler/class/PlaywrightCrawler) and [examples](https://crawlee.dev/docs/examples/playwright-crawler)
- [Node.js tutorials](https://docs.apify.com/academy/node-js) in Academy
- [Scraping single-page applications with Playwright](https://blog.apify.com/scraping-single-page-applications-with-playwright/)
- [How to scale Puppeteer and Playwright](https://blog.apify.com/how-to-scale-puppeteer-and-playwright/)
- [Integration with Zapier](https://apify.com/integrations), Make, GitHub, Google Drive and other apps
- [Video guide on getting scraped data using Apify API](https://www.youtube.com/watch?v=ViYYDHSBAKM)
- A short guide on how to build web scrapers using code templates:

[web scraper template](https://www.youtube.com/watch?v=u-i-Korzf8w)


### Getting started

For complete information [see this article](https://docs.apify.com/platform/actors/development#build-actor-at-apify-console). In short, you will:

1. Build the Actor
2. Run the Actor

### Pull the Actor for local development

If you would like to develop locally, you can pull the existing Actor from Apify console using Apify CLI:

1. Install `apify-cli`

    **Using Homebrew**

    ```bash
    brew install apify-cli
    ```

    **Using NPM**

    ```bash
    npm -g install apify-cli
    ```

2. Pull the Actor by its unique `<ActorId>`, which is one of the following:
    - unique name of the Actor to pull (e.g. "apify/hello-world")
    - or ID of the Actor to pull (e.g. "E2jjCZBezvAZnX8Rb")

    You can find both by clicking on the Actor title at the top of the page, which will open a modal containing both Actor unique name and Actor ID.

    This command will copy the Actor into the current directory on your local machine.

    ```bash
    apify pull <ActorId>
    ```

### Documentation reference

To learn more about Apify and Actors, take a look at the following resources:

- [Apify SDK for JavaScript documentation](https://docs.apify.com/sdk/js)
- [Apify SDK for Python documentation](https://docs.apify.com/sdk/python)
- [Apify Platform documentation](https://docs.apify.com/platform)
- [Join our developer community on Discord](https://discord.com/invite/jyEM2PRvMU)

# Actor input Schema

## `startUrls` (type: `array`):

List of Trustpilot category URLs to start from.
## `maxCategoryPages` (type: `integer`):

Maximum number of category pagination pages to crawl per start URL.
## `maxCompanies` (type: `integer`):

Maximum number of filtered company pages to enqueue.
## `maxReviewPagesPerCompany` (type: `integer`):

Maximum number of paginated review pages to scrape for each company.
## `minTrustScore` (type: `number`):

Minimum Trustpilot trust score a company must have to be scraped further.
## `maxTrustScore` (type: `number`):

Maximum Trustpilot trust score a company can have to be scraped further.
## `minReviewCount` (type: `integer`):

Minimum number of reviews a company must have to be scraped further.
## `allowedStars` (type: `array`):

Only save reviews whose star rating is in this list. Use values from 1 to 5.
## `includeCompanyReplies` (type: `boolean`):

Whether to capture company reply text when it appears on a review.
## `requestDelayMinMs` (type: `integer`):

Minimum randomized delay before navigation or extraction steps, in milliseconds.
## `requestDelayMaxMs` (type: `integer`):

Maximum randomized delay before navigation or extraction steps, in milliseconds.
## `maxRequestRetries` (type: `integer`):

Maximum number of retries for a failed request before it is marked as failed.
## `useApifyProxy` (type: `boolean`):

Whether to route requests through Apify Proxy.
## `useResidentialProxy` (type: `boolean`):

Whether to use Apify residential proxies instead of default proxy routing.
## `proxyCountryCode` (type: `string`):

Optional country code for the proxy exit location, such as US or GB.
## `debug` (type: `boolean`):

Whether to print additional debug logs during the run.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.trustpilot.com/categories/sales_marketing"
    }
  ],
  "maxCategoryPages": 3,
  "maxCompanies": 100,
  "maxReviewPagesPerCompany": 3,
  "minTrustScore": 0,
  "maxTrustScore": 5,
  "minReviewCount": 0,
  "allowedStars": [
    1,
    2,
    3,
    4,
    5
  ],
  "includeCompanyReplies": true,
  "requestDelayMinMs": 2000,
  "requestDelayMaxMs": 5000,
  "maxRequestRetries": 8,
  "useApifyProxy": true,
  "useResidentialProxy": true,
  "proxyCountryCode": "US",
  "debug": true
}
````

# Actor output Schema

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

Items stored in the default dataset.

# 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 = {
    "startUrls": [
        {
            "url": "https://www.trustpilot.com/categories/sales_marketing"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jmmaners/trustpilot-category-companies").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 = { "startUrls": [{ "url": "https://www.trustpilot.com/categories/sales_marketing" }] }

# Run the Actor and wait for it to finish
run = client.actor("jmmaners/trustpilot-category-companies").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 '{
  "startUrls": [
    {
      "url": "https://www.trustpilot.com/categories/sales_marketing"
    }
  ]
}' |
apify call jmmaners/trustpilot-category-companies --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "TrustPilot Category Companies",
        "description": "Scrapes Trustpilot category pages and returns company-level data: company name, Trustpilot URL, domain, trust score, review count, category URL, and page number. Supports pagination, filters, delays, retries, and proxies.",
        "version": "0.0",
        "x-build-id": "Ef9jbXWeYK7FEx0eo"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/jmmaners~trustpilot-category-companies/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-jmmaners-trustpilot-category-companies",
                "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/jmmaners~trustpilot-category-companies/runs": {
            "post": {
                "operationId": "runs-sync-jmmaners-trustpilot-category-companies",
                "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/jmmaners~trustpilot-category-companies/run-sync": {
            "post": {
                "operationId": "run-sync-jmmaners-trustpilot-category-companies",
                "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": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Category URLs",
                        "type": "array",
                        "description": "List of Trustpilot category URLs to start from.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxCategoryPages": {
                        "title": "Max category pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of category pagination pages to crawl per start URL.",
                        "default": 3
                    },
                    "maxCompanies": {
                        "title": "Max companies",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of filtered company pages to enqueue.",
                        "default": 100
                    },
                    "maxReviewPagesPerCompany": {
                        "title": "Max review pages per company",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of paginated review pages to scrape for each company.",
                        "default": 3
                    },
                    "minTrustScore": {
                        "title": "Min trust score",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Minimum Trustpilot trust score a company must have to be scraped further.",
                        "default": 0
                    },
                    "maxTrustScore": {
                        "title": "Max trust score",
                        "minimum": 0,
                        "maximum": 5,
                        "type": "number",
                        "description": "Maximum Trustpilot trust score a company can have to be scraped further.",
                        "default": 5
                    },
                    "minReviewCount": {
                        "title": "Min review count",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum number of reviews a company must have to be scraped further.",
                        "default": 0
                    },
                    "allowedStars": {
                        "title": "Allowed review stars",
                        "type": "array",
                        "description": "Only save reviews whose star rating is in this list. Use values from 1 to 5.",
                        "items": {
                            "type": "integer"
                        },
                        "default": [
                            1,
                            2,
                            3,
                            4,
                            5
                        ]
                    },
                    "includeCompanyReplies": {
                        "title": "Include company replies",
                        "type": "boolean",
                        "description": "Whether to capture company reply text when it appears on a review.",
                        "default": true
                    },
                    "requestDelayMinMs": {
                        "title": "Min delay between pages (ms)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Minimum randomized delay before navigation or extraction steps, in milliseconds.",
                        "default": 2000
                    },
                    "requestDelayMaxMs": {
                        "title": "Max delay between pages (ms)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum randomized delay before navigation or extraction steps, in milliseconds.",
                        "default": 5000
                    },
                    "maxRequestRetries": {
                        "title": "Max retries per request",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of retries for a failed request before it is marked as failed.",
                        "default": 8
                    },
                    "useApifyProxy": {
                        "title": "Use Apify Proxy",
                        "type": "boolean",
                        "description": "Whether to route requests through Apify Proxy.",
                        "default": true
                    },
                    "useResidentialProxy": {
                        "title": "Use Residential Proxy",
                        "type": "boolean",
                        "description": "Whether to use Apify residential proxies instead of default proxy routing.",
                        "default": true
                    },
                    "proxyCountryCode": {
                        "title": "Proxy country code",
                        "type": "string",
                        "description": "Optional country code for the proxy exit location, such as US or GB.",
                        "default": "US"
                    },
                    "debug": {
                        "title": "Debug logging",
                        "type": "boolean",
                        "description": "Whether to print additional debug logs during the run.",
                        "default": true
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
