# Zoho Marketplace Scraper (`crawlerbros/zoho-marketplace-scraper`) Actor

Scrape 4,700+ apps from Atlassian Marketplace - search by keyword, browse by Atlassian product (Jira, Confluence, Bitbucket), or look up specific apps. Returns app name, categories, vendor, rating, install count, pricing model, hosting type, and more.

- **URL**: https://apify.com/crawlerbros/zoho-marketplace-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Developer tools, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 4 bookmarks
- **User rating**: 5.00 out of 5 stars

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

## Zoho Marketplace Scraper

Scrape **4,700+ apps** from the **Atlassian Marketplace** — the leading marketplace for Jira, Confluence, Bitbucket, and Jira Service Management plugins. Search by keyword, browse by product or category, or look up specific apps. No authentication required.

### What You Get

Each app record includes:

- **appId** — unique addon key (e.g., `com.onresolve.jira.groovy.groovyrunner`)
- **name** — display name (e.g., "ScriptRunner for Jira")
- **tagLine** — short marketing description
- **summary** — full description
- **slug** — URL-friendly app identifier
- **categories** — app categories (e.g., `["Admin tools", "Workflow"]`)
- **applications** — supported Atlassian products (e.g., `["Jira"]`, `["Confluence"]`)
- **rating** — average star rating (0.0–5.0)
- **reviewCount** — number of user reviews
- **totalInstalls** — total active installs
- **downloads** — total download count
- **vendorName** — developer/publisher name
- **vendorUrl** — link to vendor's Atlassian Marketplace page
- **logoUrl** — app logo image URL
- **version** — latest release version
- **paymentModel** — pricing model (`free`, `paid`, `atlassian`)
- **hosting** — supported deployment types (`cloud`, `server`, `dataCenter`)
- **releaseDate** — date of latest release
- **documentationUrl** — link to vendor documentation
- **detailUrl** — link to the app's Marketplace page
- **sourceUrl** — data source URL
- **scrapedAt** — UTC timestamp of scraping
- **recordType** — always `"app"`

### Input Parameters

| Parameter | Type | Description | Default |
|---|---|---|---|
| `mode` | select | `search`, `browse`, or `getByName` | `search` |
| `query` | string | Keyword search (mode=search) | — |
| `application` | select | Filter by Atlassian product (jira, confluence, bitbucket, etc.) | All |
| `category` | select | Filter by app category | All |
| `hosting` | select | Filter by hosting type (cloud, server, dataCenter) | cloud |
| `minRating` | number | Minimum star rating filter (1.0–5.0) | — |
| `appNames` | array | App names to look up (mode=getByName) | — |
| `maxItems` | integer | Maximum number of records to return | 100 |

### Example Inputs

**Search for CRM apps:**
```json
{
  "mode": "search",
  "query": "crm",
  "maxItems": 20
}
````

**Browse all cloud Jira workflow apps:**

```json
{
  "mode": "browse",
  "application": "jira",
  "category": "Workflow",
  "hosting": "cloud",
  "maxItems": 50
}
```

**Look up specific apps:**

```json
{
  "mode": "getByName",
  "appNames": ["ScriptRunner for Jira", "Jira Misc Workflow Extensions"],
  "maxItems": 10
}
```

**Get top-rated Confluence apps:**

```json
{
  "mode": "browse",
  "application": "confluence",
  "minRating": 4.0,
  "maxItems": 30
}
```

### Example Output

```json
{
  "appId": "com.onresolve.jira.groovy.groovyrunner",
  "name": "ScriptRunner for Jira",
  "tagLine": "The must-have app for Jira admins",
  "summary": "Unlimited automation and customisation for Jira",
  "slug": "scriptrunner-for-jira",
  "categories": ["Admin tools", "Workflow", "Custom fields", "IT & helpdesk"],
  "applications": ["Jira"],
  "rating": 4.64,
  "reviewCount": 821,
  "totalInstalls": 35725,
  "downloads": 1221377,
  "vendorName": "Adaptavist",
  "vendorUrl": "https://marketplace.atlassian.com/vendors/81/adaptavist",
  "logoUrl": "https://marketplace.atlassian.com/product-listing/files/test.png?width=72&height=72",
  "version": "15.0.0",
  "paymentModel": "atlassian",
  "hosting": ["cloud"],
  "releaseDate": "2026-05-05",
  "documentationUrl": "https://docs.adaptavist.com/sr4jc/latest",
  "detailUrl": "https://marketplace.atlassian.com/apps/6820/scriptrunner-for-jira?tab=overview",
  "sourceUrl": "https://marketplace.atlassian.com/apps",
  "scrapedAt": "2026-05-30T10:00:00+00:00",
  "recordType": "app"
}
```

### Data Source

This actor uses the **Atlassian Marketplace public REST API** at `https://marketplace.atlassian.com/rest/2/addons`. The API is freely accessible without authentication and returns comprehensive metadata for all publicly listed apps.

### Supported Atlassian Products

- **Jira** — project tracking and agile boards (4,750+ apps)
- **Confluence** — docs and wikis (2,500+ apps)
- **Bitbucket** — code hosting and CI/CD (800+ apps)
- **Jira Service Management** — ITSM and helpdesk
- **Jira Work Management** — business project management

### Use Cases

- **App discovery** — find the best-rated tools for your Atlassian stack
- **Vendor research** — analyze app vendors, their product portfolios, and review scores
- **Market analysis** — understand the Atlassian ecosystem by category and hosting type
- **Integration monitoring** — track new releases and version updates for apps you use

### FAQ

**Does this require an API key?**
No. The Atlassian Marketplace API is completely public and free to use.

**How many apps are in the marketplace?**
Over 4,700 apps, with Jira having the largest selection.

**Can I filter by pricing?**
The `paymentModel` field in results shows `free`, `paid`, or `atlassian`. Client-side filtering on this field is possible via the output dataset.

**What hosting types are supported?**
Cloud (Atlassian Cloud SaaS), Server (self-hosted), and Data Center (enterprise self-hosted). Most modern apps support Cloud.

**How do I get apps for a specific Zoho product equivalent?**
Use the `application` filter to select the Atlassian product that matches your workflow needs (Jira for project management, Confluence for documentation, etc.).

# Actor input Schema

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

How to retrieve apps: search by keyword, browse by product/category, or look up specific apps by name.

## `query` (type: `string`):

Free-text keyword search across app name, description, and categories (e.g. 'crm', 'time tracking', 'automation').

## `application` (type: `string`):

Filter apps by the Atlassian product they support.

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

Filter apps by category (e.g. 'Admin tools', 'Workflow', 'Reporting', 'Integration'). Case-insensitive partial match.

## `hosting` (type: `string`):

Filter by deployment type.

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

Only include apps with an average star rating at or above this value (1.0–5.0).

## `appNames` (type: `array`):

List of app names to look up (e.g. 'ScriptRunner for Jira', 'Jira Misc Workflow Extensions').

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

Hard cap on emitted app records. Maximum is 10,000.

## Actor input object example

```json
{
  "mode": "search",
  "query": "crm",
  "application": "",
  "category": "",
  "hosting": "cloud",
  "appNames": [],
  "maxItems": 100
}
```

# Actor output Schema

## `apps` (type: `string`):

Dataset containing all scraped app 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": "search",
    "query": "crm",
    "application": "",
    "category": "",
    "hosting": "cloud",
    "appNames": [],
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/zoho-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 = {
    "mode": "search",
    "query": "crm",
    "application": "",
    "category": "",
    "hosting": "cloud",
    "appNames": [],
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/zoho-marketplace-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": "search",
  "query": "crm",
  "application": "",
  "category": "",
  "hosting": "cloud",
  "appNames": [],
  "maxItems": 100
}' |
apify call crawlerbros/zoho-marketplace-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Zoho Marketplace Scraper",
        "description": "Scrape 4,700+ apps from Atlassian Marketplace - search by keyword, browse by Atlassian product (Jira, Confluence, Bitbucket), or look up specific apps. Returns app name, categories, vendor, rating, install count, pricing model, hosting type, and more.",
        "version": "1.0",
        "x-build-id": "OLreQAhz3DrTmxiFt"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~zoho-marketplace-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-zoho-marketplace-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~zoho-marketplace-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-zoho-marketplace-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~zoho-marketplace-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-zoho-marketplace-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",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "browse",
                            "getByName"
                        ],
                        "type": "string",
                        "description": "How to retrieve apps: search by keyword, browse by product/category, or look up specific apps by name.",
                        "default": "search"
                    },
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Free-text keyword search across app name, description, and categories (e.g. 'crm', 'time tracking', 'automation')."
                    },
                    "application": {
                        "title": "Atlassian product",
                        "enum": [
                            "",
                            "jira",
                            "confluence",
                            "bitbucket",
                            "jira-service-management",
                            "jira-work-management"
                        ],
                        "type": "string",
                        "description": "Filter apps by the Atlassian product they support.",
                        "default": ""
                    },
                    "category": {
                        "title": "Category",
                        "enum": [
                            "",
                            "Admin tools",
                            "Agile & sprints",
                            "Automation",
                            "Charts & diagramming",
                            "Communication",
                            "Custom fields",
                            "Developer tools",
                            "Documentation",
                            "Incident management",
                            "Integration",
                            "IT & helpdesk",
                            "Notifications",
                            "Planning",
                            "Reporting",
                            "Security",
                            "Time tracking",
                            "Workflow"
                        ],
                        "type": "string",
                        "description": "Filter apps by category (e.g. 'Admin tools', 'Workflow', 'Reporting', 'Integration'). Case-insensitive partial match.",
                        "default": ""
                    },
                    "hosting": {
                        "title": "Hosting type",
                        "enum": [
                            "",
                            "cloud",
                            "server",
                            "dataCenter"
                        ],
                        "type": "string",
                        "description": "Filter by deployment type.",
                        "default": "cloud"
                    },
                    "minRating": {
                        "title": "Minimum rating",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "number",
                        "description": "Only include apps with an average star rating at or above this value (1.0–5.0)."
                    },
                    "appNames": {
                        "title": "App names (mode=getByName)",
                        "type": "array",
                        "description": "List of app names to look up (e.g. 'ScriptRunner for Jira', 'Jira Misc Workflow Extensions').",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Hard cap on emitted app records. Maximum is 10,000.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
