# Notion Template Gallery Scraper (`crawlerbros/notion-template-gallery-scraper`) Actor

Scrape Notion's public template marketplace with search templates, browse by category, get trending picks, or enrich specific template URLs. Extracts title, creator, pricing, usage count, ratings, tags, and duplicate links

- **URL**: https://apify.com/crawlerbros/notion-template-gallery-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

## Notion Template Gallery Scraper

Extract templates from [Notion's public marketplace](https://www.notion.com/templates) — search by keyword, browse by category, get trending picks, or enrich specific template URLs. Ideal for researchers, tool builders, and anyone building Notion-related integrations.

### What It Scrapes

Notion Marketplace hosts 30,000+ community and official templates covering productivity, project management, HR, finance, design, and more. This actor retrieves full metadata for each template including creator info, pricing, usage count, ratings, and the direct duplicate link.

### Input

| Field | Type | Description | Default |
|-------|------|-------------|---------|
| `mode` | Select | `trending`, `search`, `byCategory`, or `byTemplateUrls` | `trending` |
| `searchQuery` | Text | Keyword to search (mode=search) | `project management` |
| `category` | Select | Category to browse (mode=byCategory) | `all` |
| `madeBy` | Select | Filter by creator: `notion_and_community`, `notion`, `community` | `notion_and_community` |
| `paid` | Select | Filter by pricing: `free_and_paid`, `free`, `paid` | `free_and_paid` |
| `startUrls` | List | Notion template URLs to enrich (mode=byTemplateUrls) | — |
| `maxItems` | Integer | Maximum templates to return (1–2000) | `50` |

#### Category Options

`projects`, `personal`, `education`, `productivity`, `design`, `engineering`, `marketing`, `sales`, `hr`, `finance`, `docs-wikis`, `meetings`, `startups`, `agile`, `crm`, `content-calendar`, `student`, `habit-tracker`, `journal`

### Output

Each record contains:

| Field | Type | Description |
|-------|------|-------------|
| `templateId` | String | Unique Notion template ID |
| `title` | String | Template name |
| `url` | String | Full marketplace URL |
| `thumbnailUrl` | String | Desktop preview image URL |
| `creatorName` | String | Creator's display name |
| `creatorUrl` | String | Creator's profile URL |
| `creatorType` | String | `community` or `notion` |
| `category` | String | Primary category (e.g. Project Management) |
| `description` | String | Template description |
| `usageCount` | Integer | Number of installs/duplicates |
| `likeCount` | Integer | Number of ratings/likes |
| `price` | Float | Price in dollars (0.0 = free) |
| `isPremium` | Boolean | True if paid template |
| `isFree` | Boolean | True if free template |
| `isVerified` | Boolean | True if Notion-official template |
| `tags` | Array | Tag IDs |
| `publishDate` | String | ISO 8601 first-published date |
| `duplicateUrl` | String | URL to duplicate/use the template |
| `recordType` | String | Always `notionTemplate` |
| `scrapedAt` | String | ISO 8601 scrape timestamp |

#### Example Output

```json
{
  "templateId": "3ca8fcbe-e130-4622-98dc-50ef4d1a25d0",
  "title": "Project Management",
  "url": "https://www.notion.com/templates/project-management",
  "thumbnailUrl": "https://s3.us-west-2.amazonaws.com/public.notion-static.com/template/3ca8fcbe.../desktop.jpeg",
  "creatorName": "Jack Harrison-Sherlocka",
  "creatorUrl": "https://www.notion.com/@jack-harrison-sherlocka",
  "creatorType": "community",
  "category": "Project Management",
  "description": "Quickly plan your next project!",
  "usageCount": 1364,
  "likeCount": 17,
  "price": 0.0,
  "isPremium": false,
  "isFree": true,
  "isVerified": false,
  "tags": ["35MTwBQoiGEMS4LkotwdKs"],
  "publishDate": "2021-11-06T18:55:42.239000+00:00",
  "duplicateUrl": "https://www.notion.so/Project-management-b0da96e986714d9f98319675ed48114c",
  "recordType": "notionTemplate",
  "scrapedAt": "2026-05-15T12:00:00+00:00"
}
````

### FAQ

**Q: Do I need a Notion account or API key?**
A: No. All templates in the gallery are publicly accessible without authentication.

**Q: How many templates can I scrape?**
A: Up to 2,000 per run. Notion's marketplace has 30,000+ templates total.

**Q: Why are some `usageCount` values different from what I see on the site?**
A: Notion does not always expose exact duplicate counts. The actor uses the best available metric — installation count from the marketplace listing or vote scores as a proxy.

**Q: Can I get templates for a specific topic not in the category dropdown?**
A: Yes — use `mode=search` with a custom `searchQuery` like "kanban board", "OKR", or "habit tracker".

**Q: What does `duplicateUrl` give me?**
A: It's the public Notion page URL for the template. Click it or paste it in your browser to open and duplicate the template directly into your workspace.

**Q: Are premium/paid templates included?**
A: By default yes (all pricing types). Use the `paid=free` filter to see only free templates, or `paid=paid` for premium only.

**Q: How fresh is the data?**
A: The scraper fetches live data directly from Notion's website on each run. No cached datasets are used.

# Actor input Schema

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

How to fetch templates.

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

Free-text search query (mode=search).

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

Category slug to browse (mode=byCategory).

## `madeBy` (type: `string`):

Filter by creator type.

## `paid` (type: `string`):

Filter templates by pricing.

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

Notion template page URLs to enrich, e.g. https://www.notion.com/templates/project-management

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

Maximum number of templates to return.

## Actor input object example

```json
{
  "mode": "trending",
  "searchQuery": "project management",
  "category": "all",
  "madeBy": "notion_and_community",
  "paid": "free_and_paid",
  "startUrls": [],
  "maxItems": 50
}
```

# Actor output Schema

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

Dataset containing all scraped Notion 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": "project management",
    "category": "all",
    "madeBy": "notion_and_community",
    "paid": "free_and_paid",
    "startUrls": [],
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/notion-template-gallery-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": "project management",
    "category": "all",
    "madeBy": "notion_and_community",
    "paid": "free_and_paid",
    "startUrls": [],
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/notion-template-gallery-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": "project management",
  "category": "all",
  "madeBy": "notion_and_community",
  "paid": "free_and_paid",
  "startUrls": [],
  "maxItems": 50
}' |
apify call crawlerbros/notion-template-gallery-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Notion Template Gallery Scraper",
        "description": "Scrape Notion's public template marketplace with search templates, browse by category, get trending picks, or enrich specific template URLs. Extracts title, creator, pricing, usage count, ratings, tags, and duplicate links",
        "version": "1.0",
        "x-build-id": "aeN1YqOftTZqmy5zI"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~notion-template-gallery-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-notion-template-gallery-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~notion-template-gallery-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-notion-template-gallery-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~notion-template-gallery-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-notion-template-gallery-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": "How to fetch templates.",
                        "default": "trending"
                    },
                    "searchQuery": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Free-text search query (mode=search)."
                    },
                    "category": {
                        "title": "Category",
                        "enum": [
                            "all",
                            "projects",
                            "personal",
                            "learning",
                            "personal-productivity",
                            "design",
                            "engineering",
                            "marketing",
                            "sales",
                            "hr",
                            "finance",
                            "docs",
                            "meetings",
                            "startup",
                            "agile",
                            "crm",
                            "content-calendar",
                            "student-life",
                            "journaling",
                            "ai-prompts",
                            "budgets",
                            "travel",
                            "planning-goals",
                            "knowledge-base"
                        ],
                        "type": "string",
                        "description": "Category slug to browse (mode=byCategory).",
                        "default": "all"
                    },
                    "madeBy": {
                        "title": "Made by",
                        "enum": [
                            "notion_and_community",
                            "notion",
                            "community"
                        ],
                        "type": "string",
                        "description": "Filter by creator type.",
                        "default": "notion_and_community"
                    },
                    "paid": {
                        "title": "Paid / Free filter",
                        "enum": [
                            "free_and_paid",
                            "free",
                            "paid"
                        ],
                        "type": "string",
                        "description": "Filter templates by pricing.",
                        "default": "free_and_paid"
                    },
                    "startUrls": {
                        "title": "Start URLs (mode=byTemplateUrls)",
                        "type": "array",
                        "description": "Notion template page URLs to enrich, e.g. https://www.notion.com/templates/project-management",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Maximum number of templates to return.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
