# Miroverse Template Scraper (`crawlerbros/miroverse-template-scraper`) Actor

Scrape Miro's public template gallery (miro.com/miroverse). Extract trending templates, browse by category, or search by keyword. Get titles, authors, usage counts, likes, tags, descriptions and thumbnail images

- **URL**: https://apify.com/crawlerbros/miroverse-template-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 7 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

## Miroverse Template Scraper

Extract templates from **Miro's public Miroverse gallery** (miro.com/miroverse). Scrape trending templates, browse by category (Agile, Brainstorming, Design, Strategy, etc.), search by keyword, or enrich specific template URLs. Get full metadata including author info, usage counts, likes, tags, descriptions and thumbnail images.

### What data is extracted

- **Template ID and URL** — direct Miroverse link
- **Title** — template name
- **Thumbnail image URL**
- **Author name, URL and company**
- **Category** — Agile, Brainstorming, Design, Strategy, etc.
- **Tags** — internal tags / keywords
- **Short description**
- **Usage count** — number of copies/uses
- **Like count**
- **Featured flag** — whether the template is editorially featured
- **Board type** — "board_template", "sidekick", etc.
- **Premium flag**

### Input parameters

| Parameter | Type | Description |
|---|---|---|
| `mode` | Select | `trending` (default), `search`, `byCategory`, `byTemplateUrls` |
| `searchQuery` | Text | Keyword to search for (mode=search). E.g. "sprint planning" |
| `category` | Select | Category to browse (mode=byCategory). 13 options + All |
| `startUrls` | URL list | Specific template URLs (for `byTemplateUrls` mode) |
| `maxItems` | Integer | Maximum templates to emit (default 50, max 2000) |

### Available categories

- Agile & Scrum
- Brainstorming
- Design
- Marketing
- Strategy & Planning
- Engineering
- HR & People
- Education
- Product Management
- Mapping & Diagrams
- Project Management
- Workshops
- All Categories

### Example output

```json
{
  "templateId": "4nZm3WQaMyknXKyRPNGktH",
  "title": "AI Sprint Planning Template",
  "url": "https://miro.com/miroverse/sprint-planning-template-ai/",
  "thumbnailUrl": "https://images.ctfassets.net/zqoz8juqulxl/7EkEfVkXmOwlCY4fBdRTHk/...",
  "authorName": "Miro",
  "authorUrl": "https://miro.com/miroverse/profile/miro/",
  "category": "agile",
  "tags": ["WidgetSDK", "Agile team event", "AIPowered"],
  "description": "The Sprint Planning Template is a useful tool for agile teams...",
  "usageCount": 407,
  "likeCount": 35,
  "isFeatured": false,
  "isPremium": false,
  "boardType": "board_template",
  "recordType": "miroverseTemplate",
  "scrapedAt": "2026-05-15T12:00:00+00:00"
}
````

### FAQ

**Q: What is Miroverse?**
A: Miroverse is Miro's public community template gallery at miro.com/miroverse. It contains thousands of free and premium board templates created by Miro and the community covering agile, design, strategy, education and more.

**Q: Can I search by keyword?**
A: Yes — use `mode=search` with a `searchQuery` like "retrospective", "customer journey", or "product roadmap". The scraper searches across all categories.

**Q: How many templates are available?**
A: Miroverse has 10,000+ templates across categories. Each category has up to ~2,000 templates. Use `maxItems` to cap the results.

**Q: Are premium templates included?**
A: The scraper collects all publicly visible templates in the Miroverse gallery, including free and premium templates.

**Q: How do I scrape a specific template?**
A: Use `mode=byTemplateUrls` and provide the full template URL, e.g. `https://miro.com/miroverse/sprint-planning-template/`.

**Q: Which categories are available?**
A: 12 major categories including Agile & Scrum, Brainstorming, Design, Strategy & Planning, Meetings & Workshops, Diagrams, Engineering, and more. Use `mode=byCategory` with `category=all` to scrape all categories.

**Q: Is authentication required?**
A: No — Miroverse is a public gallery. No login or API key is needed.

**Q: How fresh is the data?**
A: Data reflects what is publicly visible on miro.com/miroverse at the time of the scrape. Miroverse is updated continuously with new community templates.

# Actor input Schema

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

What to scrape: trending templates, search by keyword, browse by category, or enrich specific template URLs.

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

Keyword to search for (mode=search). Examples: 'sprint planning', 'retrospective', 'customer journey map'.

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

Template category to browse (mode=byCategory). Select 'All Categories' to browse all.

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

List of Miroverse template URLs to enrich. Example: https://miro.com/miroverse/sprint-planning-template/

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

Maximum number of templates to emit.

## Actor input object example

```json
{
  "mode": "trending",
  "searchQuery": "sprint planning",
  "category": "all",
  "startUrls": [],
  "maxItems": 50
}
```

# Actor output Schema

## `templates` (type: `string`):

Dataset containing all scraped Miroverse templates.

# 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": "trending",
    "searchQuery": "sprint planning",
    "category": "all",
    "startUrls": [],
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/miroverse-template-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": "trending",
    "searchQuery": "sprint planning",
    "category": "all",
    "startUrls": [],
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/miroverse-template-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": "trending",
  "searchQuery": "sprint planning",
  "category": "all",
  "startUrls": [],
  "maxItems": 50
}' |
apify call crawlerbros/miroverse-template-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Miroverse Template Scraper",
        "description": "Scrape Miro's public template gallery (miro.com/miroverse). Extract trending templates, browse by category, or search by keyword. Get titles, authors, usage counts, likes, tags, descriptions and thumbnail images",
        "version": "1.0",
        "x-build-id": "zQx1DThodqcH4izJ7"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~miroverse-template-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-miroverse-template-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~miroverse-template-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-miroverse-template-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~miroverse-template-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-miroverse-template-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": [
                            "trending",
                            "search",
                            "byCategory",
                            "byTemplateUrls"
                        ],
                        "type": "string",
                        "description": "What to scrape: trending templates, search by keyword, browse by category, or enrich specific template URLs.",
                        "default": "trending"
                    },
                    "searchQuery": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Keyword to search for (mode=search). Examples: 'sprint planning', 'retrospective', 'customer journey map'.",
                        "default": "sprint planning"
                    },
                    "category": {
                        "title": "Category",
                        "enum": [
                            "agile-scrum",
                            "brainstorming",
                            "design",
                            "marketing",
                            "strategy",
                            "engineering",
                            "hr-planning",
                            "education",
                            "product-management",
                            "mapping",
                            "project-management",
                            "workshops",
                            "all"
                        ],
                        "type": "string",
                        "description": "Template category to browse (mode=byCategory). Select 'All Categories' to browse all.",
                        "default": "all"
                    },
                    "startUrls": {
                        "title": "Start URLs (mode=byTemplateUrls)",
                        "type": "array",
                        "description": "List of Miroverse template URLs to enrich. Example: https://miro.com/miroverse/sprint-planning-template/",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Maximum number of templates to emit.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
