# Framer Marketplace Templates & Plugins Scraper (`crawlerbros/framer-marketplace-scraper`) Actor

Scrape Framer Marketplace with templates, plugins, and components. Search by keyword, browse by category, find free items, or fetch details for specific marketplace URLs.

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

## Pricing

from $3.00 / 1,000 results

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

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

## Framer Marketplace Templates & Plugins Scraper

Extract templates, plugins, and components from the Framer Marketplace. Search by keyword, browse by category, get featured items, or fetch details for specific marketplace URLs — all without any authentication.

### What It Does

The Framer Marketplace Scraper gives you structured access to the full Framer Marketplace catalog:

- **Search templates or plugins** by keyword across thousands of items
- **Browse by category** (portfolio, SaaS, ecommerce, agency, blog, etc.)
- **Get featured and trending items** across the marketplace
- **Fetch specific items** by providing their marketplace URLs
- Filter results by price (free/paid), item type, and sort order

Each result includes the item title, author, price, preview URL, thumbnail, usage metrics, and more — ready for analysis, research, or integration.

### Input Parameters

| Parameter | Type | Description | Default |
|---|---|---|---|
| `mode` | Select | What to scrape: `searchTemplates`, `searchPlugins`, `byCategory`, `featured`, `getItem` | `searchTemplates` |
| `searchQuery` | Text | Keywords to search for | `portfolio` |
| `startUrls` | List | Marketplace URLs for mode=getItem | — |
| `category` | Select | Category to browse (mode=byCategory): portfolio, business, saas, ecommerce, etc. | `portfolio` |
| `itemType` | Select | Filter by type: `template`, `plugin`, `component` | `template` |
| `isFree` | Boolean | Only return free items | `false` |
| `sortBy` | Select | Sort order: `popular`, `new`, `featured` | `popular` |
| `maxItems` | Integer | Maximum number of results (1–5000) | `20` |

### Output Fields

Each record in the dataset contains:

| Field | Type | Description |
|---|---|---|
| `itemId` | String | Unique Framer marketplace item ID |
| `type` | String | Item type: template, plugin, or component |
| `title` | String | Item name |
| `description` | String | Item description |
| `author` | String | Creator name |
| `authorUrl` | String | Creator's Framer profile URL |
| `price` | Number | Price in USD (0.0 = free) |
| `currency` | String | Currency code (USD, EUR, etc.) |
| `isFree` | Boolean | Whether the item is free |
| `previewUrl` | String | Live preview URL of the template |
| `thumbnailUrl` | String | Thumbnail image URL |
| `screenshots` | Array | Additional screenshot URLs |
| `url` | String | Framer Marketplace item URL |
| `likeCount` | Integer | Number of remixes/uses |
| `conversionRate` | Number | Marketplace conversion rate |
| `publishedAt` | String | ISO 8601 publish date |
| `createdAt` | String | ISO 8601 creation date |
| `recordType` | String | Always `marketplace_item` |
| `scrapedAt` | String | ISO 8601 scrape timestamp |

### Example Output

```json
{
  "itemId": "48274",
  "type": "template",
  "title": "Portfolito",
  "description": "A personal Portfolio & Landing Page Template designed to showcase your work.",
  "author": "Pentaclay",
  "authorUrl": "https://www.framer.com/@pentaclay/",
  "price": 0.0,
  "currency": "USD",
  "isFree": true,
  "previewUrl": "https://pentos.framer.website/",
  "thumbnailUrl": "https://y4pdgnepgswqffpt.public.blob.vercel-storage.com/templates/48274/pentos-xyz",
  "url": "https://www.framer.com/marketplace/templates/pentos/",
  "likeCount": 10284,
  "conversionRate": 0.4186,
  "publishedAt": "2024-11-18T15:16:10.814Z",
  "recordType": "marketplace_item",
  "scrapedAt": "2026-05-17T12:00:00.000000+00:00"
}
```

### Modes

#### searchTemplates

Search across all Framer templates by keyword. Set `searchQuery` to your search terms (e.g., "portfolio", "SaaS landing page", "dark minimal").

#### searchPlugins

Search across all Framer plugins and extensions by keyword.

#### byCategory

Browse all items within a specific category. Set `category` to one of: portfolio, business, landing-page, blog, ecommerce, agency, saas, personal, minimal, dark, ai, app, education, crypto, and more.

#### featured

Retrieve the highest-ranked and featured items on the marketplace. Does not require a search query.

#### getItem

Fetch detailed information for one or more specific marketplace items. Provide a list of Framer Marketplace URLs in the `startUrls` field.

### FAQ

**Do I need a Framer account or API key?**
No. The Framer Marketplace is publicly accessible and this scraper requires no credentials.

**How many items can I scrape?**
Up to 5,000 items per run. For larger datasets, run multiple searches with different queries.

**Are plugin items supported?**
Yes. Set `mode` to `searchPlugins` to search plugins, or set `itemType` to `plugin` in category/featured mode.

**Can I filter to free templates only?**
Yes. Set `isFree` to `true` to return only free marketplace items.

**How fresh is the data?**
The scraper reads live data from the Framer Marketplace on each run.

**What is the likeCount field?**
Framer calls this "remixes" — the number of times a template has been used/forked by community members.

### Limitations

- This scraper uses Framer's internal Next.js RSC routes. Page structure may change if Framer updates their platform.
- Some very new or unlisted items may not appear in search results.
- Plugin details (install count, compatibility) may vary by item.
- Rate limiting may apply for very large runs.

# Actor input Schema

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

What to scrape from Framer Marketplace.

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

Keywords to search for (used in searchTemplates and searchPlugins modes).

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

List of Framer Marketplace URLs to fetch details for (e.g. https://www.framer.com/marketplace/templates/portfolite/).

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

Browse all items in this category.

## `itemType` (type: `string`):

Filter results to templates or plugins.

## `isFree` (type: `boolean`):

When enabled, only return items with a free price.

## `sortBy` (type: `string`):

Order results by this field.

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

Maximum number of marketplace items to return.

## Actor input object example

```json
{
  "mode": "searchTemplates",
  "searchQuery": "portfolio",
  "startUrls": [],
  "category": "portfolio",
  "itemType": "template",
  "isFree": false,
  "sortBy": "popular",
  "maxItems": 20
}
```

# Actor output Schema

## `items` (type: `string`):

Dataset containing all scraped Framer Marketplace items.

# 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": "searchTemplates",
    "searchQuery": "portfolio",
    "startUrls": [],
    "category": "portfolio",
    "itemType": "template",
    "isFree": false,
    "sortBy": "popular",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/framer-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": "searchTemplates",
    "searchQuery": "portfolio",
    "startUrls": [],
    "category": "portfolio",
    "itemType": "template",
    "isFree": False,
    "sortBy": "popular",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/framer-marketplace-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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": "searchTemplates",
  "searchQuery": "portfolio",
  "startUrls": [],
  "category": "portfolio",
  "itemType": "template",
  "isFree": false,
  "sortBy": "popular",
  "maxItems": 20
}' |
apify call crawlerbros/framer-marketplace-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlerbros/framer-marketplace-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/nmi25F60dZ0vC8Aem/builds/6hRhlUuTpNAgexlke/openapi.json
