# cdnjs Libraries Catalog Scraper (`parseforge/cdnjs-libraries-scraper`) Actor

Scrape the cdnjs library catalog. Browse 4,000+ open-source front-end JavaScript and CSS libraries with versions, file lists, SRI hashes, and repository links. Modes: full catalogue, keyword search, single-library detail.

- **URL**: https://apify.com/parseforge/cdnjs-libraries-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Developer tools, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $27.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## ☁️ cdnjs Libraries Scraper

> 🚀 **Export the cdnjs front-end catalogue in seconds.** Browse, search, or drill into any of **4,000+ open-source JavaScript and CSS libraries** hosted on Cloudflare's free CDN, with versions, file lists, SRI hashes, and repository links in one run. No sign-up, no token plumbing, no manual paging.

> 🕒 **Last updated:** 2026-05-15 · **📊 13 fields** per record · **☁️ 4,000+ libraries** · **🌐 200B+ requests/month** · **🔁 Live per run**

The **cdnjs Libraries Scraper** queries the official cdnjs catalogue and returns **13 fields per library**, including name, description, latest version, homepage, repository, license, author, keywords, versions, sample file paths, and SRI hashes. cdnjs is a free, fast, and reliable open-source CDN operated by Cloudflare, serving over **200 billion requests per month** for front-end developers worldwide.

The catalogue spans **4,000+ libraries** including React, Vue, jQuery, Bootstrap, Tailwind, Three.js, D3, Lodash, and thousands more. This Actor streams matching records as CSV, Excel, JSON, or XML in under five minutes. Three run modes (catalogue, search, library) let you sweep the whole catalogue, filter by keyword, or pull a single library with full file listing and per-version SRI hashes.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Front-end developers, security engineers, build engineers, OSS researchers, technical writers, DevOps teams, marketing analysts | Asset inventories, SRI hash collection, version tracking, dependency discovery, license audits, library popularity research |

---

### 📋 What the cdnjs Libraries Scraper does

Three run modes in a single Actor:

- 🌐 **Catalogue mode.** Sweep the entire 4,000+ library catalogue with the most useful metadata fields.
- 🔍 **Search mode.** Free-text keyword filter (e.g. `react`, `chart`, `tailwind`) across the catalogue.
- 📦 **Library mode.** Pull a single library with full version history, file list, and per-version SRI hashes.

Each catalogue record includes the library name, description, latest version, homepage, repository, license, author, and keywords. Library mode adds the complete versions array, a sample of hosted files for the latest version, and SRI hashes ready to drop into a `<script integrity="...">` attribute.

> 💡 **Why it matters:** every front-end stack pulls libraries from cdnjs or a similar CDN. Knowing exactly which versions, files, and hashes are available is the difference between a fast, reproducible build and a broken Subresource Integrity check in production.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded cdnjs dataset._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td><code>mode</code></td><td>string</td><td><code>"catalogue"</code></td><td>One of <code>catalogue</code>, <code>search</code>, or <code>library</code>.</td></tr>
<tr><td><code>query</code></td><td>string</td><td><code>""</code></td><td>Keyword used in <code>search</code> mode. Ignored in other modes.</td></tr>
<tr><td><code>libraryName</code></td><td>string</td><td><code>""</code></td><td>Exact library slug for <code>library</code> mode (e.g. <code>jquery</code>, <code>bootstrap</code>).</td></tr>
<tr><td><code>fields</code></td><td>string</td><td><code>"name,description,version,homepage,repository,license,author,keywords"</code></td><td>Comma-separated catalogue fields to request.</td></tr>
<tr><td><code>maxItems</code></td><td>integer</td><td><code>10</code></td><td>Records to return. Free plan caps at 10, paid plan at 1,000,000.</td></tr>
</tbody>
</table>

**Example: search for chart-related libraries.**

```json
{
    "mode": "search",
    "query": "chart",
    "maxItems": 25,
    "fields": "name,description,version,homepage,repository,license,author,keywords"
}
````

**Example: deep dive on jQuery with file list and SRI hashes.**

```json
{
    "mode": "library",
    "libraryName": "jquery"
}
```

> ⚠️ **Good to Know:** library mode returns the full versions array (often 100+ entries for popular libraries) and a sample of hosted files for the latest version (up to 25 files). SRI hashes use SHA-512 and are ready to drop into a Subresource Integrity attribute. Library slugs are case-sensitive (`jquery`, not `jQuery`).

***

### 📊 Output

Each cdnjs library record contains up to **13 fields**. Download the dataset as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 📦 `name` | string | `"jquery"` |
| 🔗 `url` | string | `"https://cdnjs.com/libraries/jquery"` |
| 📝 `description` | string | `"JavaScript library for DOM operations"` |
| 🏷️ `latestVersion` | string | `"3.7.1"` |
| 🔗 `homepage` | string | null | `"https://jquery.com/"` |
| 🔗 `repository` | object | null | `{"type":"git","url":"git+https://github.com/jquery/jquery.git"}` |
| 📜 `license` | string | null | `"MIT"` |
| 👤 `author` | string | null | `"JS Foundation and other contributors"` |
| 🏷️ `keywords` | string\[] | `["jquery","javascript","library"]` |
| 📦 `versions` | string\[] | `["1.2.3","...","3.7.1"]` |
| 📦 `fileSamples` | string\[] | `["jquery.min.js","jquery.js","jquery.slim.min.js"]` |
| 🔐 `sri` | object | string | `{"jquery.min.js":"sha512-..."}` |
| 🕒 `scrapedAt` | ISO 8601 | `"2026-05-15T00:00:00.000Z"` |

#### 📦 Sample records

<details>
<summary><strong>📦 Catalogue entry: jquery</strong></summary>

```json
{
    "name": "jquery",
    "url": "https://cdnjs.com/libraries/jquery",
    "description": "JavaScript library for DOM operations",
    "latestVersion": "3.7.1",
    "homepage": "https://jquery.com/",
    "repository": {
        "type": "git",
        "url": "git+https://github.com/jquery/jquery.git"
    },
    "license": "MIT",
    "author": "JS Foundation and other contributors",
    "keywords": ["jquery", "javascript", "browser", "library"],
    "scrapedAt": "2026-05-15T00:00:00.000Z"
}
```

</details>

<details>
<summary><strong>🔍 Search result: chart.js</strong></summary>

```json
{
    "name": "Chart.js",
    "url": "https://cdnjs.com/libraries/Chart.js",
    "description": "Simple HTML5 charts using the canvas element.",
    "latestVersion": "4.4.4",
    "homepage": "https://www.chartjs.org",
    "repository": {
        "type": "git",
        "url": "git+https://github.com/chartjs/Chart.js.git"
    },
    "license": "MIT",
    "author": "chartjs",
    "keywords": ["canvas", "chart", "data", "graph", "html5", "svg"],
    "scrapedAt": "2026-05-15T00:00:00.000Z"
}
```

</details>

<details>
<summary><strong>📦 Library mode: bootstrap with versions, files, and SRI</strong></summary>

```json
{
    "name": "bootstrap",
    "url": "https://cdnjs.com/libraries/bootstrap",
    "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
    "latestVersion": "5.3.3",
    "homepage": "https://getbootstrap.com/",
    "repository": {
        "type": "git",
        "url": "https://github.com/twbs/bootstrap.git"
    },
    "license": "MIT",
    "author": "The Bootstrap Authors",
    "keywords": ["css", "sass", "mobile-first", "responsive", "front-end", "framework", "web"],
    "versions": ["2.0.0", "3.0.0", "4.0.0", "5.0.0", "5.3.3"],
    "fileSamples": [
        "css/bootstrap.min.css",
        "css/bootstrap.css",
        "js/bootstrap.bundle.min.js",
        "js/bootstrap.min.js"
    ],
    "sri": {
        "css/bootstrap.min.css": "sha512-jnSuA4Ss2PkkikSOLtYs8BlYIeeIK1h99ty4YfvRPAlzr377vr3CXDb7sb7eEEBYjDtcYj+AjBH3FLv5uSJuSg==",
        "js/bootstrap.bundle.min.js": "sha512-7Pi/otdlbbCR+LnW+F7PwFcSDJOuUJB3OxtEHbg4vSMvzvJjde4Po1v4BR9Gdc9aXNUNFVUY+SK51wWT8WF0Gg=="
    },
    "scrapedAt": "2026-05-15T00:00:00.000Z"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| ☁️ | **Catalogue-wide reach.** 4,000+ libraries served by cdnjs, one of the world's largest open-source CDNs. |
| 🎯 | **Three run modes.** Catalogue sweep, keyword search, or single-library deep dive in one Actor. |
| 🔐 | **SRI hashes included.** Drop-in Subresource Integrity attributes for every file in library mode. |
| ⚡ | **Fast.** 10 libraries in under 5 seconds, full catalogue sweep in 1-2 minutes. |
| 🔁 | **Always fresh.** Every run hits the live catalogue, so versions and file lists reflect the current CDN state. |
| 🚫 | **No authentication.** Public catalogue access. No login, no token. |
| 📥 | **Multi-format export.** CSV, Excel, JSON, or XML, ready for spreadsheets, warehouses, or pipelines. |

> 📊 Up-to-date CDN metadata is the foundation of every static-site build, security policy, and front-end performance audit on the modern web.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ cdnjs Libraries Scraper** *(this Actor)* | $5 free credit, then pay-per-use | **4,000+** libraries | **Live per run** | catalogue, search, library | ⚡ 2 min |
| Hand-rolled catalogue client | Free + dev time | Full | Per request | Custom code | 🐢 Days |
| Package registry exports | Free | Per registry | Daily | Registry-specific | 🕒 Variable |
| Manual catalogue browsing | Free | One library at a time | Live | UI only | 🕒 Tedious |

Pick this Actor when you want a single dataset of CDN-hosted libraries with SRI hashes and version history, ready for analytics or build automation.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the cdnjs Libraries Scraper page on the Apify Store.
3. 🎯 **Set input.** Pick a run mode, enter a search query or library slug, and set `maxItems`.
4. 🚀 **Run it.** Click **Start** and let the Actor pull your matching libraries.
5. 📥 **Download.** Grab your results in the **Dataset** tab as CSV, Excel, JSON, or XML.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%" valign="top">

#### 🔐 Security & Compliance

- Build SRI hash inventories for CSP and SRI policies
- Track library version drift across deployed sites
- License audits across thousands of front-end packages
- Detect outdated libraries before disclosure windows

</td>
<td width="50%" valign="top">

#### ⚡ Performance & Build Engineering

- Cache-warm strategies for CDN-hosted assets
- Generate static manifests for build pipelines
- Compare hosted file sizes across library versions
- Pin specific versions for reproducible builds

</td>
</tr>
<tr>
<td width="50%" valign="top">

#### 📊 Developer Intelligence

- Trending front-end library tracking
- Topic clustering by keywords and tags
- Adoption benchmarks for competing libraries
- Maintenance signals from version cadence

</td>
<td width="50%" valign="top">

#### 📝 Technical Content & Education

- Tutorial generators with canonical library URLs
- Documentation site sidebars with current versions
- Tooling inventories for boot-camp curricula
- Newsletter feeds of newly published libraries

</td>
</tr>
</table>

***

### 🔌 Automating cdnjs Libraries Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

- 🟢 **Node.js.** Install the `apify-client` NPM package.
- 🐍 **Python.** Use the `apify-client` PyPI package.
- 📚 See the [Apify API documentation](https://docs.apify.com/api/v2) for full details.

The [Apify Schedules feature](https://docs.apify.com/platform/schedules) lets you trigger this Actor on any cron interval. Hourly, daily, or weekly refreshes keep build manifests and security dashboards in sync.

***

### 🌟 Beyond business use cases

The same structured records support research, education, civic projects, and personal initiatives.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Front-end ecosystem studies with longitudinal version data
- Library-adoption research for software-engineering papers
- Coursework on CDN architecture and SRI
- Reproducible studies with cited dataset pulls

</td>
<td width="50%">

#### 🎨 Personal and creative

- Indie web-dev dashboards and portfolio demos
- Personal cheat-sheets for favourite libraries
- Visualisations of the front-end landscape
- Side projects exploring keyword-driven library discovery

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Curated library lists for community workshops
- Inclusive tooling guides for under-resourced classrooms
- Transparency on third-party assets in civic websites
- Sponsorship targeting based on download impact

</td>
<td width="50%">

#### 🧪 Experimentation

- Train classifiers that recommend libraries from prompts
- Validate developer-tool product ideas with adoption data
- Prototype agent pipelines that scaffold projects from a theme
- Test library-search UX with live catalogue data

</td>
</tr>
</table>

***

### 🤖 Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:

- 💬 [**ChatGPT**](https://chat.openai.com/?q=How%20do%20I%20use%20the%20cdnjs%20Libraries%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🧠 [**Claude**](https://claude.ai/new?q=How%20do%20I%20use%20the%20cdnjs%20Libraries%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🔍 [**Perplexity**](https://perplexity.ai/search?q=How%20do%20I%20use%20the%20cdnjs%20Libraries%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🅒 [**Copilot**](https://copilot.microsoft.com/?q=How%20do%20I%20use%20the%20cdnjs%20Libraries%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)

***

### ❓ Frequently Asked Questions

#### 🧩 How does it work?

Pick a run mode, enter a query or library slug, and click Start. The Actor pulls the matching records from the official catalogue and returns one structured record per library. No browser automation, no captchas, no setup.

#### 📏 How accurate is the data?

Every field reflects what the official catalogue serves at run time. Version lists, files, and SRI hashes are pulled directly from the CDN manifest, so they match exactly what your `<script>` tag would load.

#### 🔁 How often is the catalogue refreshed?

The catalogue is updated whenever new versions are published by upstream maintainers. Every run of this Actor pulls the latest state.

#### 🔐 What are SRI hashes and why do I need them?

Subresource Integrity hashes let your `<script>` and `<link>` tags verify the file hasn't been tampered with. Library mode returns SHA-512 hashes for each file, ready to drop into the `integrity` attribute.

#### 📂 Can I get the file list for any library?

Yes. Run the Actor in `library` mode with the exact library slug (e.g. `jquery`) to get up to 25 sample file paths for the latest version, plus the SRI hash for each.

#### ⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to run this Actor on any cron interval (hourly, daily, weekly) and keep a downstream database in sync.

#### ⚖️ Is this data legal to use?

cdnjs publishes library metadata under an open licence. Always honour the underlying library licences when redistributing the actual files (the Actor returns metadata only).

#### 💼 Can I use this data commercially?

Yes. Catalogue metadata is publicly accessible for analytics and discovery use. Each individual library is governed by its own licence, which you should review before bundling.

#### 💳 Do I need a paid Apify plan to use this Actor?

No. The free Apify plan is enough for testing and small runs (10 records per run). A paid plan lifts the limit and gives you scheduling, higher concurrency, and larger datasets.

#### 🔁 What happens if a run fails or gets interrupted?

Apify automatically retries transient errors. If a run still fails, you can inspect the log in the Runs tab, fix the input, and re-run. Partial datasets from failed runs are preserved so you never lose progress.

#### 🆘 What if I need help?

Our support team is here to help. Contact us through the Apify platform or use the Tally form linked below.

***

### 🔌 Integrate with any app

cdnjs Libraries Scraper connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate multi-step workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Connect with 5,000+ apps
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get run notifications in your channels
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe catalogue data into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from commits and releases
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export datasets straight to Sheets

You can also use webhooks to trigger downstream actions when a run finishes. Push fresh library data into your build pipeline, or alert your team in Slack on new versions of watched libraries.

***

### 🔗 Recommended Actors

- [**📦 NuGet Packages Scraper**](https://apify.com/parseforge/nuget-packages-scraper) - .NET package catalogue and download history
- [**🦀 Crates.io Scraper**](https://apify.com/parseforge/crates-scraper) - Rust crate metadata and downloads
- [**📦 Hex.pm Elixir Packages Scraper**](https://apify.com/parseforge/hex-elixir-packages-scraper) - Elixir/Erlang package catalogue
- [**🎮 Modrinth Mods Scraper**](https://apify.com/parseforge/modrinth-mods-scraper) - Minecraft mods, modpacks, shaders, resource packs
- [**🐳 Docker Hub Scraper**](https://apify.com/parseforge/dockerhub-scraper) - Container image metadata and pulls

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more reference-data scrapers.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) to request a new scraper, propose a custom data project, or report an issue.

***

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by cdnjs, Cloudflare, or any of the catalogue's library maintainers. All trademarks mentioned are the property of their respective owners. Only publicly available catalogue metadata is collected.

# Actor input Schema

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

Choose 'catalogue' for the full library catalogue, 'search' to filter by keyword, or 'library' to load a single library with versions, file list, and SRI hashes.

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

Keyword used in 'search' mode (e.g. 'react', 'chart', 'tailwind'). Ignored in other modes.

## `libraryName` (type: `string`):

Exact library slug used in 'library' mode (e.g. 'jquery', 'bootstrap', 'three.js'). Required when mode = 'library'.

## `outputFields` (type: `array`):

Pick which library fields to populate in the output (used in 'catalogue' and 'search' modes). Leave empty to keep the recommended set.

## `maxFileSamples` (type: `integer`):

When mode='library', cap how many file paths are surfaced from the latest release. Use 0 for the full file list.

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## Actor input object example

```json
{
  "mode": "catalogue",
  "query": "",
  "libraryName": "",
  "outputFields": [
    "name",
    "description",
    "version",
    "homepage",
    "repository",
    "license",
    "author",
    "keywords"
  ],
  "maxFileSamples": 25,
  "maxItems": 10
}
```

# Actor output Schema

## `overview` (type: `string`):

Overview of scraped data

## `fullData` (type: `string`):

Complete dataset

# 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 = {
    "query": "",
    "libraryName": "",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/cdnjs-libraries-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 = {
    "query": "",
    "libraryName": "",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/cdnjs-libraries-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 '{
  "query": "",
  "libraryName": "",
  "maxItems": 10
}' |
apify call parseforge/cdnjs-libraries-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "cdnjs Libraries Catalog Scraper",
        "description": "Scrape the cdnjs library catalog. Browse 4,000+ open-source front-end JavaScript and CSS libraries with versions, file lists, SRI hashes, and repository links. Modes: full catalogue, keyword search, single-library detail.",
        "version": "0.0",
        "x-build-id": "v9eCmjcogmLso1VQn"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~cdnjs-libraries-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-cdnjs-libraries-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/parseforge~cdnjs-libraries-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-cdnjs-libraries-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/parseforge~cdnjs-libraries-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-cdnjs-libraries-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": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "catalogue",
                            "search",
                            "library"
                        ],
                        "type": "string",
                        "description": "Choose 'catalogue' for the full library catalogue, 'search' to filter by keyword, or 'library' to load a single library with versions, file list, and SRI hashes.",
                        "default": "catalogue"
                    },
                    "query": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Keyword used in 'search' mode (e.g. 'react', 'chart', 'tailwind'). Ignored in other modes.",
                        "default": ""
                    },
                    "libraryName": {
                        "title": "Library Name",
                        "type": "string",
                        "description": "Exact library slug used in 'library' mode (e.g. 'jquery', 'bootstrap', 'three.js'). Required when mode = 'library'.",
                        "default": ""
                    },
                    "outputFields": {
                        "title": "Output fields",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Pick which library fields to populate in the output (used in 'catalogue' and 'search' modes). Leave empty to keep the recommended set.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "name",
                                "description",
                                "version",
                                "homepage",
                                "repository",
                                "license",
                                "author",
                                "keywords",
                                "filename"
                            ]
                        },
                        "default": [
                            "name",
                            "description",
                            "version",
                            "homepage",
                            "repository",
                            "license",
                            "author",
                            "keywords"
                        ]
                    },
                    "maxFileSamples": {
                        "title": "Max file samples",
                        "minimum": 0,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "When mode='library', cap how many file paths are surfaced from the latest release. Use 0 for the full file list.",
                        "default": 25
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
