# Findstack Software Reviews Scraper (`crawlerbros/findstack-scraper`) Actor

Scrape Findstack - a software comparison platform with 150+ categories and thousands of verified user reviews. Browse by category, or fetch detailed software profiles. Extracts ratings, review counts, pricing, operating systems, descriptions, and publisher info.

- **URL**: https://apify.com/crawlerbros/findstack-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Developer tools, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Findstack Software Reviews Scraper

Scrape software listings and reviews from **Findstack** — a B2B software comparison platform featuring 10,000+ software products across 150+ categories, with millions of verified user reviews.

### What You Can Scrape

- Software name, description, and logo
- Aggregate user rating (1.0–5.0) and total review count
- Starting price and free plan availability
- Supported platforms (Web, iOS, Android, Windows, macOS, etc.)
- Official vendor website URL
- Listing date and last update date
- Direct Findstack product review page URL

### Modes

| Mode | Description |
|------|-------------|
| **byCategory** | Browse all software in a category (e.g. project-management, crm, seo) with pagination |
| **productDetails** | Fetch full detailed profiles for specific Findstack product URLs |

### Input

| Field | Type | Description |
|-------|------|-------------|
| `mode` | Select | `byCategory` / `productDetails` |
| `category` | Select | Category to browse (30 options available). Used in `byCategory` mode. |
| `categoryUrl` | String | Override with a direct Findstack category URL for unlisted categories |
| `productUrls` | String List | Findstack product URLs to scrape in detail. Used in `productDetails` mode. |
| `minRating` | Number | Minimum aggregate rating filter (1.0–5.0) |
| `maxPages` | Integer | Maximum category pages to scrape (default: 5, each has ~20 products) |
| `maxItems` | Integer | Maximum records to return (1–1000, default: 50) |

#### Available Categories

`project-management`, `crm`, `email-marketing`, `video-conferencing`, `help-desk`, `accounting`, `e-commerce`, `seo`, `marketing-automation`, `learning-management-systems`, `hr-software`, `payroll`, `time-tracking`, `webinar`, `website-builder`, `live-chat`, `survey`, `password-manager`, `virtual-private-network-vpn`, `antivirus`, `billing`, `invoicing-software`, `task-management`, `work-management`, `collaboration`, `sales-enablement`, `lead-generation`, `social-media-management`, `content-marketing`, `graphic-design`, and more.

For categories not in the dropdown, use `categoryUrl` with any Findstack software category URL (e.g. `https://findstack.com/software/kanban-project-management`).

### Output

#### byCategory mode

```json
{
  "name": "monday.com",
  "category": "project-management",
  "description": "monday.com packages itself as a Work OS built for a new way of working...",
  "rating": 4.7,
  "reviewCount": 10454,
  "startingPrice": 0.0,
  "currency": "USD",
  "hasFreeplan": true,
  "operatingSystems": ["iOS", "Android", "Web"],
  "imageUrl": "https://assets.findstack.com/co73km4ciaxhmfvp8kxhcj978byu",
  "url": "https://findstack.com/products/monday-com/reviews",
  "position": 1,
  "recordType": "software",
  "scrapedAt": "2026-06-30T10:00:00+00:00"
}
````

#### productDetails mode

```json
{
  "name": "monday.com",
  "description": "monday.com packages itself as a Work OS built for a new way of working...",
  "rating": 4.7,
  "reviewCount": 10454,
  "operatingSystems": ["Mobile iPhone", "Mobile Android", "Cloud / SaaS / Web-Based", "Mobile iPad"],
  "vendorUrl": "https://monday.com/",
  "imageUrl": "https://assets.findstack.com/co73km4ciaxhmfvp8kxhcj978byu",
  "datePublished": "2023-12-07T15:58:39Z",
  "dateModified": "2026-05-03T19:20:12Z",
  "sampleReviews": [
    {
      "authorName": "Joe O.",
      "reviewText": "Easy to use, quick onboarding process, intuitive",
      "rating": 5.0,
      "datePublished": "2024-02-15T18:23:57Z"
    }
  ],
  "url": "https://findstack.com/products/monday-com/reviews",
  "recordType": "software_detail",
  "scrapedAt": "2026-06-30T10:00:00+00:00"
}
```

`sampleReviews` contains a handful of individual reviewer quotes with author name, review text, star rating, and publish date — a small sample of the full `reviewCount`, not an exhaustive review export. It appears on `productDetails` records and on the enriched "Featured Products" entries that `byCategory` mode appends after the ranked listing. Because those entries are parsed from each product's own review page, they carry the detail-page fields — `vendorUrl`, `datePublished`, `dateModified`, and `sampleReviews` — plus the listing fields they share (`name`, `category`, `description`, `rating`, `reviewCount`, `operatingSystems`, `imageUrl`, `url`), but not the listing-only `startingPrice`, `currency`, `hasFreeplan`, and `position`.

### Technical Details

- **No proxy required** — works on the free Apify plan with datacenter IPs
- **Memory**: 1024 MB
- **Anti-bot tier**: Plain httpx (Tier 1) — Findstack serves fully SSR HTML
- **Data source**: [findstack.com](https://findstack.com)

### FAQs

**Do I need a proxy or API key?**
No. This actor works without any proxy or credentials on the free Apify plan.

**How many products can I get per category?**
Each category page has ~20 products. Use `maxPages` to control how many pages to scrape. A category with 50 products would need `maxPages: 3`.

**What does `startingPrice` mean?**
The starting price in USD per month from the JSON-LD structured data. `0.0` means the software has a free plan or free tier.

**What does `hasFreeplan` mean?**
Set to `true` when the software offers a free plan (startingPrice = $0).

**How many categories are available?**
Findstack covers 150+ software categories. The `category` dropdown includes 30 popular ones. Use `categoryUrl` to access any other category from `https://findstack.com/software/`.

**Are ratings from verified users?**
Yes, Findstack collects verified user reviews through integration with enterprise software review platforms.

# Actor input Schema

## `mode` (type: `string`):

Choose how to scrape: browse by category, or fetch detailed profiles for specific software product URLs.

## `category` (type: `string`):

Category slug to browse. Used in byCategory mode.

## `categoryUrl` (type: `string`):

Override the category with a direct Findstack category URL (e.g. https://findstack.com/software/kanban-project-management). Overrides the `category` field when provided.

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

List of Findstack product URLs to scrape in detail (e.g. https://findstack.com/products/monday-com/reviews). Used in productDetails mode.

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

Only return software with an aggregate rating at or above this value (1.0–5.0). Leave blank for no minimum.

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

Maximum number of category listing pages to scrape (each page has ~20 products). Default: 5.

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

Maximum number of software records to return (1–1000).

## Actor input object example

```json
{
  "mode": "byCategory",
  "category": "project-management",
  "productUrls": [
    "https://findstack.com/products/monday-com/reviews",
    "https://findstack.com/products/clickup/reviews"
  ],
  "maxPages": 5,
  "maxItems": 20
}
```

# Actor output Schema

## `software` (type: `string`):

Dataset containing all scraped Findstack software product records.

# 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 = {
    "mode": "byCategory",
    "category": "project-management",
    "productUrls": [
        "https://findstack.com/products/monday-com/reviews"
    ],
    "maxPages": 5,
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/findstack-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 = {
    "mode": "byCategory",
    "category": "project-management",
    "productUrls": ["https://findstack.com/products/monday-com/reviews"],
    "maxPages": 5,
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/findstack-scraper").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 '{
  "mode": "byCategory",
  "category": "project-management",
  "productUrls": [
    "https://findstack.com/products/monday-com/reviews"
  ],
  "maxPages": 5,
  "maxItems": 20
}' |
apify call crawlerbros/findstack-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Findstack Software Reviews Scraper",
        "description": "Scrape Findstack - a software comparison platform with 150+ categories and thousands of verified user reviews. Browse by category, or fetch detailed software profiles. Extracts ratings, review counts, pricing, operating systems, descriptions, and publisher info.",
        "version": "1.0",
        "x-build-id": "kLcCLv7X5u1de1fWk"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~findstack-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-findstack-scraper",
                "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/crawlerbros~findstack-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-findstack-scraper",
                "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/crawlerbros~findstack-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-findstack-scraper",
                "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",
                "properties": {
                    "mode": {
                        "title": "Scraping mode",
                        "enum": [
                            "byCategory",
                            "productDetails"
                        ],
                        "type": "string",
                        "description": "Choose how to scrape: browse by category, or fetch detailed profiles for specific software product URLs.",
                        "default": "byCategory"
                    },
                    "category": {
                        "title": "Software category",
                        "enum": [
                            "project-management",
                            "crm",
                            "email-marketing",
                            "video-conferencing",
                            "help-desk",
                            "accounting",
                            "e-commerce",
                            "seo",
                            "marketing-automation",
                            "learning-management-systems",
                            "hr-software",
                            "payroll",
                            "time-tracking",
                            "webinar",
                            "website-builder",
                            "live-chat",
                            "survey",
                            "password-manager",
                            "virtual-private-network-vpn",
                            "antivirus",
                            "billing",
                            "invoicing-software",
                            "task-management",
                            "work-management",
                            "collaboration",
                            "sales-enablement",
                            "lead-generation",
                            "social-media-management",
                            "content-marketing",
                            "graphic-design"
                        ],
                        "type": "string",
                        "description": "Category slug to browse. Used in byCategory mode.",
                        "default": "project-management"
                    },
                    "categoryUrl": {
                        "title": "Custom category URL (optional)",
                        "type": "string",
                        "description": "Override the category with a direct Findstack category URL (e.g. https://findstack.com/software/kanban-project-management). Overrides the `category` field when provided."
                    },
                    "productUrls": {
                        "title": "Product URLs",
                        "type": "array",
                        "description": "List of Findstack product URLs to scrape in detail (e.g. https://findstack.com/products/monday-com/reviews). Used in productDetails mode.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "minRating": {
                        "title": "Minimum rating",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "number",
                        "description": "Only return software with an aggregate rating at or above this value (1.0–5.0). Leave blank for no minimum."
                    },
                    "maxPages": {
                        "title": "Max pages to scrape",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Maximum number of category listing pages to scrape (each page has ~20 products). Default: 5.",
                        "default": 5
                    },
                    "maxItems": {
                        "title": "Maximum results",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of software records to return (1–1000).",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
