# Agent Skills Scraper (`parsebird/agent-skills-scraper`) Actor

Extract deep metadata from skills.sh, the open agent skills directory. Scrape weekly installs, GitHub stars, security audits, agent adoption breakdown, SKILL.md content, and more from every skill listing.

- **URL**: https://apify.com/parsebird/agent-skills-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:** AI, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 skill details

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### Agent Skills Scraper

Extract deep metadata from [skills.sh](https://skills.sh/), the open agent skills directory by Vercel. Scrape every skill's weekly installs, GitHub stars, security audits, agent adoption, and full documentation.

<table><tr>
<td style="border-left:4px solid #2D6A4F;padding:12px 16px;font-weight:600">Research competitors, spot emerging trends, and track agent skill adoption across the entire skills.sh ecosystem.</td>
</tr></table>

<br>

<img src="https://skills.sh/og.jpeg" width="100%">

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

````

parsebird/agent-skills-scraper on Apify. Call: ApifyClient("TOKEN").actor("parsebird/agent-skills-scraper").call(run\_input={...}), then client.dataset(run\["defaultDatasetId"]).list\_items().items for results. Key inputs: sortBy (string, "all-time"/"trending"/"hot"), searchQuery (string, keyword search), maxResults (integer, 0=unlimited), includeDetails (boolean, true=deep metadata). Full actor spec (input schema with all params/enums/defaults, output dataset fields, README): fetch build via GET https://api.apify.com/v2/acts/parsebird~agent-skills-scraper (Bearer TOKEN) → taggedBuilds.latest.buildId, then GET https://api.apify.com/v2/acts/parsebird~agent-skills-scraper/builds/{buildId} → inputSchema, actorDefinition.storages.dataset, readme. Get token: https://console.apify.com/account/integrations

````

### What does Agent Skills Scraper do?

This Actor scrapes [skills.sh](https://skills.sh/) — Vercel's open directory of agent skills for AI coding assistants like Claude Code, Cursor, GitHub Copilot, Gemini CLI, and more. It extracts deep metadata from each skill's detail page including:

- **Skill name, owner, and repository**
- **Install command** (the `npx skills add` command)
- **Summary and capability bullets**
- **Full SKILL.md documentation content**
- **Weekly installs** (current adoption velocity)
- **GitHub stars** (repository popularity)
- **First seen date** (when the skill was added)
- **Security audits** (Gen Agent Trust Hub, Socket, Snyk results)
- **Agent adoption breakdown** (installs per AI agent: Claude Code, Cursor, Codex, etc.)

### Why scrape agent skills?

- **Ecosystem analysis** — Understand what capabilities developers are adding to their AI agents
- **Trend monitoring** — Track which skills are trending and gaining adoption fastest
- **Competitive intelligence** — See what tools your competitors are building or using
- **Security research** — Monitor audit pass/fail rates across the ecosystem
- **Agent platform analysis** — Compare adoption across Claude Code, Cursor, Copilot, Gemini, and more
- **Developer tooling insights** — Identify gaps in the skills ecosystem for new opportunities

### How to use

1. Go to the [Agent Skills Scraper](https://apify.com/parsebird/agent-skills-scraper) page on Apify Store
2. Click **Try for free**
3. Configure your input:
   - **Leaderboard Sort** — All Time (default), Trending (24h), or Hot
   - **Search Query** — Search for skills by keyword (overrides sort)
   - **Max Skills** — Limit the number of results
   - **Include Detail Pages** — Enable for deep metadata (default: on)
4. Click **Start** and wait for the run to finish
5. Download your data in JSON, CSV, Excel, or connect via API

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `sortBy` | string | `all-time` | Leaderboard sort: `all-time`, `trending`, or `hot` |
| `searchQuery` | string | _(empty)_ | Search query (overrides sort) |
| `maxResults` | integer | `50` | Max skills to return (0 = unlimited) |
| `includeDetails` | boolean | `true` | Visit detail pages for deep metadata |

### Output data

#### Detail mode (includeDetails = true)

```json
{
    "skillName": "frontend-design",
    "owner": "anthropics",
    "repo": "skills",
    "url": "https://skills.sh/anthropics/skills/frontend-design",
    "installCommand": "npx skills add https://github.com/anthropics/skills --skill frontend-design",
    "summary": "Distinctive, production-grade frontend interfaces that reject generic AI aesthetics.",
    "summaryBullets": [
        "Guides design thinking before coding...",
        "Emphasizes typography, color theming, motion..."
    ],
    "skillMdContent": "This skill guides creation of distinctive...",
    "weeklyInstalls": "237.6K",
    "repository": "anthropics/skills",
    "repositoryUrl": "https://github.com/anthropics/skills",
    "githubStars": "108.4K",
    "firstSeen": "Jan 19, 2026",
    "securityAudits": [
        {"name": "Gen Agent Trust Hub", "result": "Pass"},
        {"name": "Socket", "result": "Pass"},
        {"name": "Snyk", "result": "Pass"}
    ],
    "installedOn": [
        {"agent": "opencode", "installs": "196.5K"},
        {"agent": "codex", "installs": "193.2K"},
        {"agent": "claude-code", "installs": "183.6K"}
    ],
    "scrapedAt": "2026-03-29T12:00:00.000Z"
}
````

#### Listing mode (includeDetails = false)

```json
{
    "skillName": "frontend-design",
    "owner": "anthropics",
    "repo": "skills",
    "listingInstalls": "222.2K",
    "url": "https://skills.sh/anthropics/skills/frontend-design",
    "scrapedAt": "2026-03-29T12:00:00.000Z"
}
```

### Pricing

This Actor uses **Pay-per-event** pricing:

| Event | Cost | When charged |
|-------|------|-------------|
| `skill-listing` | $0.002 | Per skill in listing-only mode ($2 per 1,000 skills) |
| `skill-detail` | $0.02 | Per skill when detail pages are scraped ($20 per 1,000 skills) |

**Cost examples:**

- 50 skills, listing only: $0.10
- 50 skills with details: $1.00
- 200 skills, listing only: $0.40
- 200 skills with details: $4.00
- 1,000 skills, listing only: $2.00
- 1,000 skills with details: $20.00

You only pay for the skills actually returned.

### Tips and best practices

- **Start small** — Set `maxResults` to 5-10 with `includeDetails` enabled to preview the data
- **Use search for targeted results** — Search narrows the leaderboard to matching skills
- **Trending vs All Time** — Use "trending" to find skills gaining traction right now; "all-time" for the established ecosystem
- **Detail mode is the value** — The leaderboard only gives names and total installs. All the rich data (weekly installs, stars, audits, agent breakdown) is on detail pages
- **Scheduling** — Set up periodic runs to track how skills rise and fall in popularity

### Integrations

Connect this Actor to your workflow:

- **Google Sheets** — Export results directly
- **Webhooks** — Trigger actions when new data arrives
- **API** — Access data programmatically via the Apify API
- **Zapier / Make** — Automate downstream workflows

# Actor input Schema

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

Which leaderboard to scrape.

• All Time — skills ranked by total installs
• Trending — skills trending in the last 24 hours
• Hot — currently hot skills

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

Search for skills by keyword. When set, the leaderboard sort is ignored and results come from the search.

Examples: react, testing, deploy, design

## `maxResults` (type: `integer`):

Limit the number of skills returned. Set to 0 for unlimited.

The leaderboard uses infinite scroll, so large numbers take longer to load.

Tip: start with 10-20 to preview results.

## `includeDetails` (type: `boolean`):

When enabled, the scraper visits each skill's detail page to extract rich metadata: weekly installs, GitHub stars, security audits, agent adoption breakdown, full summary, and SKILL.md content.

This is where all the deep data lives. Disable only if you just need names and install counts from the leaderboard.

## Actor input object example

```json
{
  "sortBy": "all-time",
  "maxResults": 50,
  "includeDetails": true
}
```

# Actor output Schema

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

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/agent-skills-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/agent-skills-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 '{}' |
apify call parsebird/agent-skills-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Agent Skills Scraper",
        "description": "Extract deep metadata from skills.sh, the open agent skills directory. Scrape weekly installs, GitHub stars, security audits, agent adoption breakdown, SKILL.md content, and more from every skill listing.",
        "version": "1.1",
        "x-build-id": "z7NZdPnQ86LeeTJkT"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parsebird~agent-skills-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parsebird-agent-skills-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/parsebird~agent-skills-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parsebird-agent-skills-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/parsebird~agent-skills-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parsebird-agent-skills-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",
                "properties": {
                    "sortBy": {
                        "title": "Leaderboard Sort",
                        "enum": [
                            "all-time",
                            "trending",
                            "hot"
                        ],
                        "type": "string",
                        "description": "Which leaderboard to scrape.\n\n• All Time — skills ranked by total installs\n• Trending — skills trending in the last 24 hours\n• Hot — currently hot skills",
                        "default": "all-time"
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Search for skills by keyword. When set, the leaderboard sort is ignored and results come from the search.\n\nExamples: react, testing, deploy, design"
                    },
                    "maxResults": {
                        "title": "Max Skills",
                        "minimum": 0,
                        "maximum": 100000,
                        "type": "integer",
                        "description": "Limit the number of skills returned. Set to 0 for unlimited.\n\nThe leaderboard uses infinite scroll, so large numbers take longer to load.\n\nTip: start with 10-20 to preview results.",
                        "default": 50
                    },
                    "includeDetails": {
                        "title": "Include Detail Pages",
                        "type": "boolean",
                        "description": "When enabled, the scraper visits each skill's detail page to extract rich metadata: weekly installs, GitHub stars, security audits, agent adoption breakdown, full summary, and SKILL.md content.\n\nThis is where all the deep data lives. Disable only if you just need names and install counts from the leaderboard.",
                        "default": true
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
