# GetApp Scraper (Cheap) (`data_api/getapp-scraper-cheap`) Actor

Extract software listings from GetApp.com category and search pages, including ratings, review breakdowns, features, and direct product URLs.

- **URL**: https://apify.com/data\_api/getapp-scraper-cheap.md
- **Developed by:** [Data API](https://apify.com/data_api) (community)
- **Categories:** Developer tools, E-commerce, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.99 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## GetApp Software Listings Scraper

![GetApp Software Listings Scraper](cover.jpg)

GetApp ranks thousands of business tools by verified buyer reviews, but the page only shows you a slice at a time and there is no download button. If you want the whole category as a spreadsheet — every app, its rating, how reviews break down by stars, and the features buyers actually care about — you are stuck copying cards by hand. This scraper takes any GetApp category or search URL and returns each listing as a clean row: name, overall rating, review counts, the four sub-scores, top features, and the Category Leader badge. Point it at one category or a stack of them and let it page through the rest.

### What you get

Each software listing comes back as one row with a steady set of columns. Values that GetApp does not show come back as `null` so your sheet stays rectangular. Every row carries:

- **Identity** — `appName`, `appSlug`, `appUrl`, `appId`, `logoLink`, `shortPitch`, `appSummary`
- **Ratings** — `overallRating`, `reviewsTotal`, plus the star breakdown `oneStarTotal` through `fiveStarTotal`
- **Sub-scores** — `valueRating`, `featuresRating`, `easeRating`, `supportRating`, `recommendScore`
- **Signals** — `categoryLeaderBadge`, `sponsoredListing`, `topVisited`, `leaderScore`, `topFeatures`
- **Context** — `categoryLabel`, `categoryLink`, `pageIndex`, `inputUrl`, `collectedAt`

### Quick start

1. Click **Try for free** and open the input form.
2. Paste one or more GetApp category or search URLs into **Category or search URLs**.
3. Set **Results limit** to cap the run (25 = one page, 75 = three pages per URL).
4. Press **Start**, then export the dataset as JSON, CSV, Excel, or XML once it finishes.

![How it works](how-it-works.jpg)

### Use cases

- **Vendor shortlisting** — pull a whole category and sort by rating and review volume to build a credible vendor list fast.
- **Competitive tracking** — re-run weekly to watch a rival's rating or review count move after a release.
- **Procurement research** — the four sub-scores beat a single average when you need to weigh support against features.
- **Market and content research** — find categories where feature coverage is thin or where a newcomer is gaining ground.
- **Analyst and investment work** — spot tools building review momentum months before they surface in formal reports.

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `targetUrls` | array of strings | Yes | GetApp category or search pages to scrape. Each URL is paged through on its own. |
| `resultsLimit` | integer | No | Total listings to gather across all URLs. GetApp shows 25 per page. Default `75`. |
| `timeoutSeconds` | integer | No | Seconds to wait on each request before giving up (5 to 120). Default `45`. |

#### Example input

```json
{
  "targetUrls": [
    "https://www.getapp.com/hr-human-resources-software/human-resources/",
    "https://www.getapp.com/project-management-planning-software/project-management/"
  ],
  "resultsLimit": 75,
  "timeoutSeconds": 45
}
```

### Output

Each item is one software listing. Every field is always present, with `null` standing in for anything GetApp did not publish, so the dataset loads cleanly into a sheet or database.

#### Example output

```json
{
  "appId": "7f1c2d40-9a3e-4c11-bf02-d1e455a9b8c2",
  "appName": "Asana",
  "appSlug": "asana",
  "appUrl": "https://www.getapp.com/project-management-planning-software/a/asana/",
  "logoLink": "https://gdm-catalog-fmapi-prod.imgix.net/ProductLogo/3b9f71ce.png",
  "shortPitch": "Work management for teams of any size",
  "appSummary": "Asana is a work management platform that helps teams plan, organize, and track projects in one shared space.",
  "overallRating": 4.48,
  "reviewsTotal": 13204,
  "sponsoredListing": false,
  "categoryLeaderBadge": true,
  "topVisited": true,
  "leaderScore": 91,
  "oneStarTotal": 64,
  "twoStarTotal": 138,
  "threeStarTotal": 605,
  "fourStarTotal": 4012,
  "fiveStarTotal": 8385,
  "valueRating": "4.30",
  "featuresRating": "4.41",
  "easeRating": "4.36",
  "supportRating": "4.22",
  "recommendScore": "8.10",
  "topFeatures": ["Task Management", "Gantt/Timeline View", "Collaboration Tools"],
  "categoryLabel": "Project Management",
  "categoryLink": "https://www.getapp.com/project-management-planning-software/project-management/",
  "pageIndex": 1,
  "inputUrl": "https://www.getapp.com/project-management-planning-software/project-management/",
  "collectedAt": "2026-06-29T10:00:00.000000+00:00",
  "errorMessage": null
}
```

#### Output fields

| Field | Type | Description |
|-------|------|-------------|
| `appId` | string | Unique product identifier (UUID) |
| `appName` | string | Display name of the software product |
| `appSlug` | string | URL-friendly slug for the product |
| `appUrl` | string | Direct link to the product detail page on GetApp |
| `logoLink` | string | Address of the product's logo image |
| `shortPitch` | string | One-line tagline shown for the product |
| `appSummary` | string | Longer description text for the product |
| `overallRating` | number | Mean star rating across all reviews (0.0 to 5.0) |
| `reviewsTotal` | integer | Count of user reviews left for the product |
| `sponsoredListing` | boolean | True for a paid or sponsored placement |
| `categoryLeaderBadge` | boolean | True when the product carries the Category Leader badge |
| `topVisited` | boolean | True when the product is flagged as most visited |
| `leaderScore` | number | Numeric score behind the Category Leader badge, when present |
| `oneStarTotal` | integer | Number of one-star reviews |
| `twoStarTotal` | integer | Number of two-star reviews |
| `threeStarTotal` | integer | Number of three-star reviews |
| `fourStarTotal` | integer | Number of four-star reviews |
| `fiveStarTotal` | integer | Number of five-star reviews |
| `valueRating` | string | Reviewer score for value for money, out of 5 |
| `featuresRating` | string | Reviewer score for features, out of 5 |
| `easeRating` | string | Reviewer score for ease of use, out of 5 |
| `supportRating` | string | Reviewer score for customer support, out of 5 |
| `recommendScore` | string | Average likelihood-to-recommend score, out of 10 |
| `topFeatures` | array of strings | Names of the product's most popular features |
| `categoryLabel` | string | Name of the GetApp category the listing came from |
| `categoryLink` | string | Address of the category page |
| `pageIndex` | integer | Which result page this listing was found on |
| `inputUrl` | string | The URL you supplied that produced this listing |
| `collectedAt` | string | ISO 8601 UTC timestamp of when the row was captured |
| `errorMessage` | string | Reason a listing failed; `null` on success |

### Tips for best results

- **Start small.** Run one category with `resultsLimit` at 25 to confirm the URL is right and the columns look how you expect before scaling up.
- **One category per URL.** Keeping categories in separate entries makes it easy to tell where a row came from and to re-run a single category later.
- **Filter inside the URL.** GetApp lets you narrow by business size and other facets in the path (for example `/org/small-business/`). Pass the filtered URL straight in rather than trimming results afterward.
- **Raise `timeoutSeconds`** toward 90 if you see repeated timeouts on larger categories.
- **Sort by `categoryLeaderBadge`.** Products with the badge have cleared GetApp's bar on rating and review volume, so it is a quick filter for a credible shortlist.

### How can I use GetApp software data?

**How can I use the GetApp Software Listings Scraper to build a vendor shortlist?**
Paste the category URL for the software you are evaluating, set a `resultsLimit`, and run it. You get every listing in the category with `overallRating`, `reviewsTotal`, and the four sub-scores in one table. Sort by rating and review count, then filter on `categoryLeaderBadge` to land on a short, credible list of options.

**How can I track GetApp ratings and reviews over time?**
Schedule the actor to run on a cron and let each run append to the same dataset. Because every row carries `collectedAt`, you can chart `overallRating` and `reviewsTotal` week over week and catch a competitor's score slipping after a bad release, or a newcomer gaining momentum.

**How can I export GetApp listings to a spreadsheet for research?**
Run the scraper, then download the dataset as CSV or Excel, or connect it to Google Sheets through Apify's integrations so new runs append rows automatically. The star breakdown (`oneStarTotal` through `fiveStarTotal`) and `topFeatures` give you enough to compare tools without opening a single product page.

**How can I scrape GetApp by business size or sub-category?**
GetApp encodes filters in the URL path. Grab a filtered page such as a `/org/small-business/` view, drop it into `targetUrls`, and the scraper pages through just that segment, returning the same fields for each matching app.

### Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses or private contact information. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

### Support

Questions, feature requests, or a field you'd like added? Reach out at <data.apify@proton.me> and we'll get back to you.

# Actor input Schema

## `urls` (type: `array`):

One or more GetApp.com category or search page URLs to scrape. Each URL is a category listing page such as https://www.getapp.com/marketing-software/marketing-automation/ or https://www.getapp.com/marketing-software/lead-generation/

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

Maximum number of software listings to collect in total across all URLs. Each GetApp.com page shows 25 listings, so 50 = 2 pages, 250 = 10 pages. Set to a large number to collect everything available.

## `requestTimeoutSecs` (type: `integer`):

Per-request timeout in seconds. Pages are rendered before extraction, so allow enough time for the first (cold) request.

## Actor input object example

```json
{
  "urls": [
    "https://www.getapp.com/customer-management-software/crm/"
  ],
  "maxItems": 50,
  "requestTimeoutSecs": 60
}
```

# 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 = {
    "urls": [
        "https://www.getapp.com/marketing-software/marketing-automation/",
        "https://www.getapp.com/marketing-software/lead-generation/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_api/getapp-scraper-cheap").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 = { "urls": [
        "https://www.getapp.com/marketing-software/marketing-automation/",
        "https://www.getapp.com/marketing-software/lead-generation/",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("data_api/getapp-scraper-cheap").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 '{
  "urls": [
    "https://www.getapp.com/marketing-software/marketing-automation/",
    "https://www.getapp.com/marketing-software/lead-generation/"
  ]
}' |
apify call data_api/getapp-scraper-cheap --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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