# Vercel Integrations Scraper (`automation-lab/vercel-marketplace-integrations-directory`) Actor

Export public Vercel marketplace integration cards with category labels, descriptions and listing URLs. Filter by keyword or category for ecosystem research; no inferred providers.

- **URL**: https://apify.com/automation-lab/vercel-marketplace-integrations-directory.md
- **Developed by:** [Automation Lab](https://apify.com/automation-lab) (community)
- **Categories:** Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.08 / 1,000 item extracteds

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Vercel Integrations Scraper

Export public **Vercel integrations** as structured directory cards for recurring developer-tool ecosystem research. Get integration names, category labels, card descriptions and canonical listing URLs without logging in or installing integrations.

### What does it do?

The Actor reads the public Vercel Marketplace directory, filters cards locally, deduplicates listing URLs and saves one record per matching integration. It includes both marketplace and connectable integrations exposed in the directory, but not integrations missing from that public page.

### Who is it for?

Developer-relations researchers, platform engineering teams and ecosystem analysts can use the output to compare tools, prepare categorized inventories, and track directory changes by comparing separately saved snapshots.

### Why use it?

- Stable listing URLs provide a useful join key for spreadsheet snapshots.
- Both category labels and their URL slugs are exported.
- Keyword filtering is explicit and local: it does not claim a source search API.
- Missing provider information stays null rather than being guessed from a domain.
- No browser, paid proxy configuration or source account is required.

### Getting started

1. Open the Actor and keep the default marketplace URL.
2. Choose a result limit, such as 10 integrations.
3. Optionally set `category` to `ai`, `database` or another source category slug.
4. Optionally enter a substring such as `postgres` in `query`.
5. Run the Actor and open the Integration cards dataset tab.
6. Download JSON, CSV or Excel using Apify's dataset export controls.

### Input parameters

| Input | Default | Meaning |
| --- | --- | --- |
| `startUrls` | Marketplace root | Up to 10 root/category URLs; detail URLs are unsupported |
| `category` | Empty | Exact source category slug; intersects URL category scope |
| `query` | Empty | Case-insensitive substring in name, short description or category labels |
| `maxItems` | 100 | Maximum unique matching integrations, integer 1–1000 |

Category URLs are treated as category scopes, not arbitrary crawling entrypoints. Some source category pages redirect to a product subdirectory: the Actor therefore uses the complete root directory and its explicit category mappings for all supported URL scopes. `sourceUrl` accurately records the root page fetched. A run fetches this directory only once and reuses it across input scopes.

```json
{"category":"ai","maxItems":10}
```

```json
{"startUrls":[{"url":"https://vercel.com/marketplace/category/database"}],"query":"postgres","maxItems":2}
```

Do not pass URL search parameters or fragments. Unknown category slugs produce no matching records. Directory order is source-dependent; a limit does not imply a popularity ranking.

### What data is extracted?

| Field | Meaning |
| --- | --- |
| `slug` | Stable public listing slug |
| `name` | Displayed integration name |
| `description` | Short directory card description, not full detail-page text |
| `categories` | Source category labels |
| `categorySlugs` | Corresponding category URL slugs |
| `url` | Canonical listing URL |
| `provider` | Explicit provider when displayed; currently null on directory cards |
| `sourceUrl` | Directory page actually fetched |
| `scrapedAt` | UTC extraction timestamp |

An integration can belong to multiple categories. Empty category arrays mean the directory did not provide a mapping. Provider coverage is not guaranteed and provider enrichment is not performed.

### Output example

A current directory record:

```json
{
  "slug":"neon",
  "name":"Neon",
  "description":"Postgres serverless platform designed to build reliable and scalable apps",
  "categories":["Authentication","Database","Storage"],
  "categorySlugs":["authentication","database","storage"],
  "url":"https://vercel.com/marketplace/neon",
  "provider":null,
  "sourceUrl":"https://vercel.com/marketplace",
  "scrapedAt":"2026-09-30T06:00:00.000Z"
}
```

The default dataset contains the integrations. The SUMMARY key-value record contains the number saved and the requested filters. Dataset exports are platform features, not separate scraping modes.

### How much does it cost to export Vercel integrations?

The Actor uses pay-per-event pricing: **$0.005 per run** plus a tier-dependent fee for each returned integration. Duplicate, rejected and unmatched cards do not incur an item event. A valid no-match run still incurs the start fee.

| Account tier | Price per integration |
| --- | --- |
| FREE | $0.0039836 |
| BRONZE | $0.003464 |
| SILVER | $0.0027019 |
| GOLD | $0.0020784 |
| PLATINUM | $0.0020784 |
| DIAMOND | $0.0020784 |

At BRONZE, 1 integration costs $0.008464, 10 cost $0.03964 and 100 cost $0.3514 in Actor event fees. Applicable Apify platform usage is additional where indicated by the pricing panel. Check the current pricing panel before running; directory size and matches are finite.

### Limits and reliability

The Actor exports a snapshot of the current public directory, not historical records, alerts, provider domains, private installations, billing plans or full detail pages. It does not paginate an invented API or guarantee a requested number of matches.

Requests have a 30-second timeout. Only transient network errors, 429 responses and server errors are retried, with at most three attempts. Permanent errors and unrecognized directory structure fail the run instead of returning a misleading successful empty dataset. There is no hidden residential or browser fallback.

### Integrations and recurring workflows

Schedule this Actor in Apify to save regular snapshots. Join snapshots by `url` to find newly listed integrations, changes in descriptions or category shifts. A removal from a filtered result is not proof a tool was discontinued.

Export CSV to Google Sheets for ecosystem reviews. Send JSON to a data warehouse or an internal developer portal. Use an Apify webhook after successful runs to trigger your own downstream comparison. The Actor itself does not send alerts or maintain historical state.

### API examples

Keep your Apify API token in an environment variable, never in a shared input or dataset.

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~vercel-marketplace-integrations-directory/run-sync-get-dataset-items' \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"category":"ai","maxItems":10}'
```

#### JavaScript

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/vercel-marketplace-integrations-directory')
  .call({ query: 'postgres', maxItems: 10 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/vercel-marketplace-integrations-directory').call(
    run_input={'category': 'database', 'maxItems': 10})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### MCP use

Add this Actor to Claude Code:

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=automation-lab/vercel-marketplace-integrations-directory"
```

For **Claude Desktop**, **Cursor**, and **VS Code** clients supporting HTTP MCP:

```json
{"mcpServers":{"apify":{"url":"https://mcp.apify.com?tools=automation-lab/vercel-marketplace-integrations-directory"}}}
```

Authenticate using the client's supported Apify flow. Example prompt: “Export up to 10 Vercel database integrations with their descriptions and listing URLs.” The same input limits and charges apply to MCP calls.

### Legality and responsible use

Use the public data responsibly and comply with Vercel's terms and applicable law. Avoid excessive schedules. This Actor is independent of Vercel and does not imply endorsement or permission to redistribute source content. Do not submit login credentials or private project URLs.

### FAQ and troubleshooting

**Why is provider null?** The current public directory cards do not explicitly display provider identity. The Actor does not substitute integration name or infer a publisher from a domain.

**Why are there fewer records than maxItems?** The directory is finite and filters can narrow it further. The limit is a ceiling, not a promise.

**Why does a category URL use the root sourceUrl?** The Actor normalizes category scopes to the complete directory's category mapping, avoiding redirected category pages with different product layouts.

**Why did the run fail instead of returning zero records?** A transport failure or changed directory structure is not the same as no matches. Review the log and rerun only after the underlying issue is understood.

**Can I fetch one detail page or install an integration?** No. This product exports public directory cards; it does not access installation APIs or enrich detail pages.

### Data handling and support

The Actor uses no AI at runtime and sends no inputs or records to a model provider. It fetches public directory content from Vercel using direct HTTPS. Apify provides execution and run storage; there are no paid external data APIs or proxy services. Public tool metadata is saved in your run dataset, and only URLs and counts appear in logs. There is no persistent cross-run cache or cookie store.

Datasets, summary and logs follow your Apify account's storage retention settings. The Actor does not automatically delete run storage: delete runs and datasets in Console or via API when no longer needed. Do not include personal data or secrets in keyword inputs. For problems, use the Actor's Apify Store Issues tab with your input and run link; avoid sharing tokens. Pricing tiers follow qualifying aggregate monthly Store spend, not per-Actor volumes.

### Related workflows

This is a standalone Vercel ecosystem directory export. No unrelated Actor is required. Use the stable URLs and your own spreadsheet or warehouse to compare snapshots across runs.

# Changelog

This Actor's version history is a separate document: https://apify.com/automation-lab/vercel-marketplace-integrations-directory/changelog.md

# Actor input Schema

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

Optional public marketplace root or category URLs. Defaults to the directory, or the category page when category is supplied. Listing detail URLs and URL query parameters are not supported.

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

Optional exact category URL slug, such as ai or database. Filters the downloaded root directory locally and applies to all URL inputs. Unknown syntactically valid categories return no matching records after a successful directory fetch.

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

Optional case-insensitive substring filter over integration name, card description and category labels. This filters downloaded cards locally, not a source search API.

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

Maximum unique matching cards returned across all URLs. The source directory is finite; no minimum result count is guaranteed.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://vercel.com/marketplace"
    }
  ],
  "category": "",
  "query": "",
  "maxItems": 10
}
```

# Actor output Schema

## `dataset` (type: `string`):

Unique matching integration cards.

## `summary` (type: `string`):

Saved record count and requested filters.

# 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 = {
    "startUrls": [
        {
            "url": "https://vercel.com/marketplace"
        }
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/vercel-marketplace-integrations-directory").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 = {
    "startUrls": [{ "url": "https://vercel.com/marketplace" }],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/vercel-marketplace-integrations-directory").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 '{
  "startUrls": [
    {
      "url": "https://vercel.com/marketplace"
    }
  ],
  "maxItems": 10
}' |
apify call automation-lab/vercel-marketplace-integrations-directory --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automation-lab/vercel-marketplace-integrations-directory"
        }
    }
}
```

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/AeokDVroI3MllfavQ/builds/jnYTIxfMczHv7gcvx/openapi.json
